Course description
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.
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, eight units of electives, and colloquia. Each of these components is described in detail below.
Joint Major Components
Four Kernel Courses in Computer Science and Mathematics
* 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
Three Computer Science Courses
* CS 70. Data Structures and Program Development
* CS 105. Computer Systems
* CS 131. Programming Languages
Three Mathematics Courses
* Math 131. Analysis I
* Math 164. Scientific Computing or Math 165. Numerical Analysis
* Math 171. Abstract Algebra I
Clinic
Two semesters are required, ordinarily taken during the senior year. Joint Majors will work on a Clinic project from mathematics or one from computer science, or on an interdisciplinary project. CS 121, Software Development, is strongly recommended for students wishing to take the CS Clinic.
The Clinic requirement is fulfilled by CSMT 183 (a clinic course number exclusively for Joint Majors). 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.
Electives
Eight units of upper division technical electives: these electives can be from math, computer science or other departments (but must include at least two units of mathematics and at least two units of computer science), and must be chosen with approval of the advisors so that a coherent program is formed. 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.
Colloquia
Students are required to attend two semesters of Computer Science Colloquium (CS 193-196), one semester of Mathematics Colloquium (Math 199) and one semester of Math Forum (Math 198).
Comments
The Joint Major requires 15 courses (not including colloquia, and counting the eight units of electives as three 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, would 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.