The Joint Major in Computer Science and Mathematics is cooperatively administered by the computer science and mathematics departments. The purpose of the Joint Major is to provide a program of study tailored to students who are interested in the interdisciplinary connections between computer science and mathematics. Depending on how electives are selected, the program described below would position successful majors for graduate studies in either computer science or mathematics, or for immediate employment.

**Note:** In Fall 2016, the requirements for the Joint Major changed. The new version of the major applies to students in the class of 2020 and beyond. Joint majors in the classes of 2017, 2018, and 2019 may choose to use these new major requirements in lieu of the "old" Joint Major requirements. No petition is necessary to do so, but students will need to notify their major advisors and the registrar's office of their intention.

The descriptions below apply to the new requirements. Older requirements are described in brackets [like so].

The Joint Major degree program has five components: the kernel courses in computer science and mathematics, more advanced courses in computer science and in mathematics, clinic, electives, and colloquia. Each of these components is described in detail below.

- Math 55. Discrete Mathematics
- CS 60 (or CS 42). Principles of Computer Science
- CS 81. Computability and Logic
- CS 140 (joint-listed as Math 168). Algorithms

- CS 70. Data Structures and Program Development
- CS 131. Programming Languages
- [The older version of the major also requires CS 105. Computer Systems]

- Math 131. Analysis I
- Math 171. Abstract Algebra I
- [The older version of the major also requires Math 164. Scientific Computing or Math 165. Numerical Analysis]

Two semesters are required, ordinarily taken during the senior year. Joint Majors will work on a Clinic project from mathematics (2 semesters of MATH 193) or one from computer science (CS 183-184), or on an interdisciplinary project (CSMT 183-184). CS 121, Software Development, is strongly recommended for students wishing to take the CS Clinic.

Before other students are assigned to clinics, the clinic directors for both Math and CS (and the faculty advisors) will meet to place Joint Majors in Math or CS clinics, endeavoring to place students in equal numbers into appropriate Math or CS clinics. It is the expectation that clinic will be taken in the senior year.

Fourteen units of upper-division technical electives: these electives can be from math, computer science or other departments (but must include at least six units of mathematics and at least six units of computer science). All electives must be numbered over 100, with the exception of Math 70 or 80. (Some off-campus math courses numbered in the 100s that replicate HMC Core course content may not be counted toward the elective requirement.) Two semesters of senior thesis research can count towards this requirement. Note that Complexity Theory can be taken as either Math 167 or CS 142.

[The older version of the major requires eight units of upper-divistion technical electives, at least two units from math and two units from computer science.]

Students are required to attend two semesters of Computer Science Colloquium (CS 195), one semester of Mathematics Colloquium (Math 199) and one semester of Math Forum (Math 198).

The Joint Major requires 15 courses (not including colloquia, and counting clinic as two courses and the fourteen units of electives as five courses), which is one more than either the current CS major or the current Math major. Joint Majors will have two advisors, one in Computer Science and one in Mathematics; and all programs must be approved by both advisors.

With the creation of the Joint Major it is much more difficult to pursue a double major in Mathematics and Computer Science. However, if a student wishes to double major in Computer Science and Mathematics, it will only be permitted under the following conditions: the student must complete all requirements (including Clinic and four semesters of CS Colloquium) for the usual Computer Science major and all requirements (including Clinic or thesis, and two semesters of Math Forum) for a usual Math major.

A double major between the Joint Major and either the normal Computer Science or Mathematics major will not be permitted. Double majors between the Joint Major and other departments will still be permitted.

The four terms of colloquium are deliberately left unordered to allow flexibility, particularly in cases of schedule conflicts. However, we expect that most majors will take one colloquium course (CS Colloquium or Math Forum) each term during junior and senior years.