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 many programs. The class has three 1-hour lecture/demonstrations plus a 2-hours and 10-minutes 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 253 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 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. Mathematical-reasoning intensive.
COMP 275 Sequential and Parallel Algorithms
Prerequisites: COMP 250 and MATH 271
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. Symbolic methods include string manipulation, pattern-matching, searching, and sorting algorithms. Numeric methods include vector and matrix algorithms, as well as data processing and simulation/optimization algorithms. The issues of algorithm efficiency will be examined. Grades will be based upon theoretical and programming assignments and exams.
Grades will be based on assignments, projects, reports and exams. Mathematical-reasoning intensive.
COMP 280 Combinatorial Games
Prerequisite: COMP 150 and co-requisite of MATH 271 or MATH 210.
Introduction to Combinatorial Game Theory with an emphasis on topics related to programming. In this course, we will look at computational and mathematical basics of combinatorial games. Topics will include algorithm design, strategy analysis, impartiality, parity and a bit of computational complexity. In order to study this, we will learn to play games such as Domineering, Amazons, Checkers, Hex and others. 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, drug discovery, data analysis, nutrition, manufacturing, chemistry, finance and interacting systems. Methods for finding optimal combinations in linear and non-linear systems will be covered, as well as techniques for large scale and empirical optimization of complex systems. The course will be driven by practical applications employing the use of computer solutions. Familiarity with one of Mathematica®, Python, C/C++, Fortran or Java is desirable.
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.