Major Degree Requirements [Updated]

To become a CS Major, a student must:

  • Fulfill the prerequisite courses (COSC 1 and MATH 8 or MATH 11 or MATH 13)
  • Take six core courses (COSC 10, COSC 15, COSC 30, COSC 31, COSC 50, and COSC 70)
  • Take four elective courses (30-89), at most one of which can be COSC 94
  • Finish a culminating experience

Information on the courses mentioned above are detailed under Courses (left).

Major Degree Requirements [For students of Classes '27, '28, '29]

Students who enrolled before Fall 2026 are encouraged to fulfil the updated requirements listed above. However, they may choose to fulfil previously followed requirements for the CS Major, as listed below:

Information on the courses mentioned above are detailed under the Courses tab (left).

Learning Outcomes

  • Theory and analysis: Students will have a clear understanding of what “efficient computation” means, mathematically; easy-vs-hard-vs-intractable-vs-undecidable. Students will be able to analyze an algorithm given as pseudocode and describe the asymptotic run-time complexity.
  • Algorithms: Students will be familiar with the canon of fundamental algorithms and data structures, and their uses and limitations.
  • Software design: Students will gain experience with more than one programming paradigm, and with writing good and efficient code. Students will gain experience with large-scale software design and implementation.
  • Systems knowledge: Students will have an understanding of operating system infrastructure and services, and the interface between hardware and software.
  • Numerical methods: Students will gain familiar with the mathematical tools (e.g., vectors, matrices, systems of linear equations, eigenvalues, eigenvectors, subspaces, and matrix decompositions) used in application-specific domains, and as the underpinnings for machine learning methods.
  • Synthesis, Applications, and Impact: Beyond core courses (30, 31, 50, and 70, as well as the introductory 1 and 10), majors take additional courses in each of the three pillars: theory and algorithms, systems, and applications (including courses like computer vision, robotics, and machine learning) to develop a depth of knowledge of cutting-edge tools and techniques in at least one of the pillars.