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 microcomputers and their use in problem-solving and their impact on society. Students will create spreadsheets, databases, and will also learn a subset of an object-oriented programming language to create animations.
The course meets for four hours 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. 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 new 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-12 programs, some in a paired programming environment. The class has three 1-hour lecture/demonstrations plus a 2-hour lab per 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, and in‑class tests. 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 C++ 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. From there, it covers pointers and dynamic arrays. 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). The course will begin with programming in Python and will change over to C++ as the semester progresses. 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 on their own, but there may be an opportunity for some small group 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 260 Computational Models and Methods
Prerequisites: (1) MATH 131 or MATH 201 (2) COMP 150 or equivalent experience as determined by the instructor
Computational science is the field of study that integrates science, computer science, and applied mathematics. This course is an introduction to the principles and approaches of computational science. This includes the understanding, development, and use of mathematical models as well as their effective computer implementation using computer languages such as Mathematica®. This course is specifically designed to be accessible to a wide range of students, especially those with an interest in applications of biology, chemistry, geology, physics, or economics. A spectrum of problems taken from these areas will be addressed. Topics include: Using Mathematica®, The Scientific Process, The Experimental Method, Types of Science Models (for Evaluation, Simulation, and Optimization), Sources of Errors, Dimensional Analysis, Model Sensitivity, Solving Equations, Computer Arithmetic vs. Exact Arithmetic, Limits of Computation, Data Fitting, Visualization Methods, and Ethical Issues. Each student will undertake a realistic modeling project in one of the sciences. A weekly two hour, ten minute computer laboratory is required. The student will be expected to be familiar with the use of a scientific graphing calculator. 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
Prerequisites are MATH 171 and COMP 250 or equivalent or with permission of instructor
This course covers topics in the theory of computation, the theoretical foundation of computer science. It attempts to answer questions like, "What does it mean to compute?" and "What are the theoretical capabilities and limits of computers?" Topics include the study of finite state machines, push-down automata, linearly bounded automata, Turing machines, languages, phase-structure grammars (regular, context-free, context-sensitive, unrestricted), parsing, decidability, computability, computational complexity, and the Chomsky Hierarchy. Mathematical-reasoning intensive.