Students majoring in computer science acquire a knowledge of basic and advanced algorithm design and programming, as well as the underlying principles, design, and implementation of the major components of computing systems. Achievement of the required competencies is demonstrated by successful completion of a Senior comprehensive examination (offered as part of CS 498) or thesis and by the successful completion of the five required computer science courses (CS 143, CS 150M, CS 221N, CS 301, and CS 310) and a minimum of three computer science elective courses numbered CS 320 or greater, plus the senior capstone CS 498 or CS 497 for students invited to do a thesis. Students must maintain a C average in computer science courses to successfully complete the major.
The course requirements for the computer science major are composed of two parts: the program core and the program specialization. The core is a structured sequence of five computer science courses (CS 143M Introduction to Computer Science, CS 221N Data Structures, CS 150M Discrete Structures, CS 301 Theory of Computing, and CS 310 Computer Architecture) and three mathematics courses (Calculus I, Calculus II or Linear Algebra, and Statistics), plus PL 102M Introduction to Logic.
The specialization, composed of a minimum of three computer science electives numbered 320 or greater plus the senior capstone CS 498 pursued during the Junior and Senior years, is less structured, allowing the student to emphasize his or her special interests. The Computer Science Seminar is required in the Junior and Senior years. A total of 12 courses (not including the seminar, internships or independent study courses) is required for the Bachelor of Arts.
Four additional courses from advanced computer science (320 level or above), mathematics or physics, are required for the Bachelor of Science.
For computer science students interested in a mathematics minor or a double major (computer science and mathematics), MA 333 Probability and Statistics I may be substituted for MA 133M Statistics.
A minor in computer science requires completion of CS 143, CS 221N, and three computer science courses numbered 300 or above. ES 341N can also count as one of these three courses. These courses must not duplicate courses used by students to satisfy major or concentration requirements.