COMP 121 Computing in the Arts and Sciences
Prerequisite: Math Placement Level 22 or higher
This introductory course is intended for non-majors, and assumes little computer experience beyond using word processing software. COMP 121 is designed to help students become familiar with computers, their use in problem-solving, and their impact on society. Students will create spreadsheets and databases, and will learn some basics of programming.The course meets for four hours and ten minutes each week, and includes extensive time for hands-on practice. The final grade will be based on labs, homework, and exams. Mathematical-reasoning intensive.
COMP 150 Computer Programming I
Prerequisite: Math Placement Level 22 or higher
Introduction to computer science through the use of programming in the Python language. Designed primarily for the student who expects to take further courses in computer science. Also very valuable for any student who expects to do programming that is related to another discipline (e.g., in the sciences). This course is required for the Computer Science major and minor, the Mathematics major and minor, and the Computational Science minor. It is also recommended or required by certain science programs. The course stresses the development of algorithms and data abstraction to solve problems. It begins with basic algorithm design, progresses through imperative programming and finishes with most of the features of object-oriented programming. Students write 10-14 programs. The class has three 1-hour lecture/demonstrations plus a 2-hour lab each week. Much of the work for the course is done outside of class using the laboratory computers to write, debug and run programs. The course grade is based on programming assignments, lab exercises, inâ€‘class tests, and a final. Mathematical-reasoning intensive.
COMP 250 Computer Programming II
Prerequisite: COMP 150
This course is an intensive study of program design, abstract data types and object-oriented programming in Java using data structures common in computer science. The course begins with the concept of abstract data types and how they may be implemented using object-oriented mechanisms. We then examine common data structures such as linked lists, stacks, queues, priority queues, trees and graphs, along with operations appropriate to each structure (e.g., insertions and deletions, backtracking, tree traversals). Applications are drawn from the fields of operating systems, compilers, and simulations, among others. Students will be expected to design and implement moderately sized programming projects. The course will meet three times a week for lecture, and once each week for a structured lab. Students are expected to do significant work outside of class. Course grades will be based on programming assignments and in-class tests. Great emphasis will be placed on good programming style. Writing intensive. Mathematical-reasoning intensive.
COMP 260Computational Models and Methods
Prerequisites: MATH 131 or MATH 201 and COMP 150 or equivalent with permission of the instructor
Introduction to the principles and approaches of using computational science through the use of problem solving methodologies. This includes the understanding, development, and use of mathematical models as well as their effective computer implementation. Approximately fifteen approaches across eight categories (continuous and discrete, static and dynamic, empirical and formulated) will be investigated. These models are adapted from a variety of scientific and real-world scenarios. Simulation and optimization techniques will also be discussed and used. Each student will undertake a realistic modeling project as part of the course. Laboratory required. This course is cross-listed as MATH 260. Students may enroll in either COMP 260 or MATH 260, but not both. Mathematical-reasoning intensive.
COMP 285 Theory of Computation (4 Semester Hours)
Shelburne, Brian J.
Prerequisites: Mathematics 171 and Computer Science 250.
This course deals with the problem of what it means to "compute". We will look at languages (regular, context-free, recursive, recursively enumerable), grammars (regular, context free, context sensitive, unrestricted), automata (finite state, push-down, Turing machines) and the relations between the three. Theory of Computation is the oldest "area" in computer science (many results were established before the first stored program computers become operational) and provides the theoretical underpinning for the discipline. It has many applications to other areas of computer science like programming techniques, programming languages, compiler design, algorithms, and defining computational complexity (i.e. defining what a "hard" problem is). Course grade will be based on graded homework assignments including two programming projects, three in-class tests, and a comprehensive final exam. Mathematical-reasoning intensive
COMP 353 Principles of Software Design
Prerequisite: COMP 250
This course emphasizes modern software design and development techniques, as well as expanding upon topics introduced in Computer Programming I and II. Topics covered include object-oriented design, formal design languages such as UML, design patterns, use of APIs, and agile software development. Assignments will be both theoretical and applied, but the major task will be a semester-long project, with pieces due in regular intervals. Every third semester. Mathematical-reasoning intensive.
COMP 460 Senior Seminar - Topic: Software Engineering
Prequisites: Permission required.
This course will address the area of software engineering through the presentation, discussion and use of recognized software engineering principles. The primary emphasis is on the design, development, and documentation of a group project, but outside readings, presentations, and discussions may be required. This course is required of a senior majoring in computer science.The grade is based upon a combination of independent and group activities. WRITING INTENSIVE. Mathematical-reasoning intensive.