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. Possible topics include: spreadsheets, databases, WebPages, and basics of programming.
The course meets for four hours and ten minutes each week, and includes extensive time for hands-on practice. Grades will be based on projects, homework, quizzes, and exams. Mathematical-reasoning intensive.
COMP 150: Computer Programming I
Prerequisite: Math Placement Level 22 or higher. Must also be enrolled in COMP 151.
Introduction to computer science through the use of programming in the Python language. Designed for students that expect to use programming in any discipline or plan to take further courses in computer science. 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 some features of object-oriented programming. Students write several programs each week. The class has three 1-hour lecture/demonstrations plus a 1.5-hour lab per week (Comp 151, in which students must enroll concurrently). 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, tests, quizzes, and a final. Mathematical-reasoning intensive.
COMP 151: Lab for Computer Programming I
Prerequisite: Must also be enrolled in COMP 150.
Students in COMP 150 are required to sign up for one section of COMP 151.
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 255: Principles of Computer Organization
Prerequisite: COMP 250
Considers the organization and architecture of the computer from various "levels": digital logic, microprogramming, conventional machine level and the operating system level. Programming assignments in assembler languages will be used to demonstrate and reinforce the various architectural structures and techniques studied. Grades will be based on in-class tests, programming and written assignments, and a final exam. The course will meet for three one-hour lectures and a two-hour lab each week. Mathematical-reasoning intensive.
COMP 275: Sequential and Parallel Algorithms
Prerequisites: COMP 250 and MATH 171
Systematic study of the properties and complexity of several types of algorithms, sequential and parallel. Algorithmic techniques covered include brute force, divide-and-conquer, decrease-and-conquer, transform-and-conquer and greedy methods. The issues of algorithm efficiency will be examined as well as limitations of algorithmic processing.
Grades will be based on homework, projects, presentations, and exams. Mathematical-reasoning intensive.
COMP 345: Optimization
Prerequisite: COMP 150 and MATH 201. Co-requisite: MATH 205 or permission of instructor.
Optimization has become an essential part of many disciplines, as the need to identify optimal and improved combinations using available options increases rapidly. This topics course examines several methods for finding optimal and near optimal solutions in use in several important application areas such as engineering, nutrition, manufacturing, chemistry, finance and interacting systems. Methods for finding optimal combinations in linear and non-linear systems will be covered. The course will be driven by practical applications employing the use of computer solutions with MathematicaÂ®.
This course will be given for mathematics credit (MATH 345) or computer science credit (COMP 345) and should be of special interest to students in sciences and computational science, in particular. This course will satisfy an elective for the computational science minor. Mathematical-reasoning intensive.
Grades will be based upon assignments and exams. May be enrolled in COMP 345 or MATH 345, but not both.