**COMP 150 Computer Programming I****5 credits****Burke, Kyle**

**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****Burke, Kyle**

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

**COMP 260 Computational Models and Methods****5 credits****Sancier-Barbosa, Flavia**

**Prerequisites****: ****MATH 131 or both MATH 201 and 202**

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 353 Principles of Software Design****4 credits****Burke, Kyle**

**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.