**COMP 121 Computing in the Arts and Sciences****4 credits****Staff**

**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****5 credits****Staff**

**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-15 programs. The class has three 60-minute lecture/demonstrations plus a 90-minute 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, in‑class tests, and a final. Mathematical-reasoning intensive.

**COMP 151 Lab for Computer Programming I****0 credits****Staff**

Students in COMP 150 are required to sign up for one section of COMP 151. Graded on S/NC basis. Every year.

**COMP 255 Principles of Computer Organization****5 credits****Shelburne, Brian **

**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****4 credits****Staff**

**Prerequisites: COMP 250 and MATH 171**

Systematic study involving the properties and complexity of several types of algorithms implemented on both sequential and parallel processing computers. The algorithms studied are designed to solve problems in both symbolic and numeric processing. 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 assignments, projects, presentations, and exams. Mathematical-reasoning intensive.

**COMP 353 Principles of Software Design****4 credits****Staff**

**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 issues, formal design languages such as UML, design patterns, use of APIs, exception handling and fault-tolerant computing, event-driven programming, threading and multithreaded code, elementary concepts in security, authentication and encryption, the client-server model of networking, verification techniques, and advanced data structures. Assignments will be both theoretical and applied. Every year.

**COMP 370 Computer Graphics****4 credits****Shelburne, Brian**

**Prerequisites: ****COMP 275 or equivalent**

This course provides an introduction to computer graphics. Aside from being an important area in computer science, computer graphics provides a set of problems and programming tasks that requires a student to integrate techniques and methods learned in previous courses. It requires a fundamental knowledge of advanced programming techniques and data structures and an advanced understanding of mathematics, in particular matrices. Emphasis will be on the techniques used and mathematics behind the standard graphics algorithms. Graphics applications will be developed in C++ using the OpenGL graphics system. Mathematical-reasoning intensive.