Joint Major in Computer Science and Mathematics
The Joint Major in Computer Science and Mathematics is cooperatively administered by the Computer Science and Mathematics departments, and students will have faculty advisors from both 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 Computer Science and Mathematics degree program has various components: the kernel courses in computer science and mathematics; more advanced courses in computer science and in mathematics; Clinic; and electives. Each of these components is described as follows.
Four Kernel Courses in Computer Science and Mathematics

MATH055 HM  Discrete Mathematics
Credits: 3
Instructors: Benjamin, Bernoff, Orrison, Pippenger
Offered: Fall and Spring
Description: Topics include combinatorics (clever ways of counting things), number theory, and graph theory with an emphasis on creative problem solving and learning to read and write rigorous proofs. Possible applications include probability, analysis of algorithms, and cryptography.
Corequisites: MATH073 HM
and

CSCI060 HM  Principles of Computer Science
Credits: 3
Instructors: Boerkoel, Breeden, Dodds, Stone, Trushkowsky
Offered: Fall and Spring
Description: Introduction to principles of computer science: Information structures, functional programming, objectoriented programming, grammars, logic, logic programming, correctness, algorithms, complexity analysis, finitestate machines, basic processor architecture and theoretical limitations. Those who have completed CSCI042 HM cannot take CSCI060 HM.
Prerequisites: CSCI005 HM or CSCI005GR HM
or

CSCI042 HM  Principles and Practice of Computer Science
Credits: 3
Instructors: Keller, Stone, Wiedermann
Offered: Fall
Description: Accelerated breadthfirst introduction to computer science as a discipline for students (usually firstyear) who have a strong programming background. Computational models of functional, objectoriented, and logic programming. Data structures and algorithm analysis. Computer logic and architecture. Grammars and parsing. Regular expressions. Computability. Extensive practice constructing applications from principles, using a variety of languages. Successful completion of this course satisfies the CSCI005 HM Core requirement and CSCI060 HM coursework.
Prerequisites: Permission of instructor
and

CSCI081 HM  Computability and Logic
Credits: 3
Instructors: Bang, Keller, Montañez, Stone
Offered: Fall and Spring
Description: An introduction to some of the mathematical foundations of computer science, particularly logic, automata, and computability theory. Develops skill in constructing and writing proofs, and demonstrates the applications of the aforementioned areas to problems of practical significance.
Prerequisites: MATH055 HM and (CSCI060 HM or CSCI042 HM)
and

MATH168 HM  Algorithms
Credits: 3
Instructors: Pippenger, Boerkoel (Computer Science), LibeskindHadas (Computer Science), Montañez (Computer Science), Schofield (Computer Science), Stone (Computer Science)
Offered: Fall and Spring
Description: Algorithm design, computer implementation, and analysis of efficiency. Discrete structures, sorting and searching, time and space complexity, and topics selected from algorithms for arithmetic circuits, sorting networks, parallel algorithms, computational geometry, parsing and patternmatching.
Prerequisites: (CSCI070 HM and CSCI081 HM) or ((CSCI060 HM or CSCI042 HM) and MATH131 HM))
or

CSCI140 HM  Algorithms
Credits: 3
Instructors: Boerkoel, LibeskindHadas, Montañez, Schofield, Stone, Pippenger (Mathematics)
Offered: Fall and Spring
Description: Algorithm design, analysis, and correctness. Design techniques including divideandconquer and dynamic programming. Analysis techniques including solutions to recurrence relations and amortization. Correctness techniques including invariants and inductive proofs. Applications including sorting and searching, graph theoretic problems such as shortest path and network flow, and topics selected from arithmetic circuits, parallel algorithms, computational geometry, and others. An introduction to computational complexity, NPcompleteness, and approximation algorithms. Proficiency with programming is expected as some assignments require algorithm implementation.
Prerequisites: ((CSCI070 HM and CSCI081 HM) or ((CSCI060 HM or CSCI042 HM) and MATH131 HM))
Two Computer Science Courses

CSCI070 HM  Data Structures and Program Development
Credits: 3
Instructors: Bang, Breeden, Medero, O'Neill, Stone, Talvitie, Trushkowsky, Wiedermann
Offered: Fall and Spring
Description: Abstract data types including priority queues and dynamic dictionaries and efficient data structures for these data types, including heaps, selfbalancing trees, and hash tables. Analysis of data structures including worstcase, averagecase and amortized analysis. Storage allocation and reclamation. Secondary storage considerations. Extensive practice building programs for a variety of applications.
Prerequisites: (CSCI060 HM or CSCI042 HM), and at least one mathematics course at the level of calculus or higher; MATH055 HM recommended

CSCI131 HM  Programming Languages
Credits: 3
Instructors: Bang, Keller, O'Neill, Stone, Wiedermann
Offered: Fall and Spring
Description: A thorough examination of issues and features in language design and implementation including languageprovided data structuring and datatyping, modularity, scoping, inheritance, and concurrency. Compilation and runtime issues. Introduction to formal semantics.
Prerequisites: CSCI070 HM and CSCI081 HM
Two Mathematics Courses

MATH131 HM  Mathematical Analysis I
Credits: 3
Instructors: Castro, de Pillis, Karp, Omar, Su, ZinnBrooks H
Offered: Jointly; Fall semester at HMC and Pomona, Spring semester at HMC and CMC
Description: This course is a rigorous analysis of the real numbers and an introduction to writing and communicating mathematics well. Topics include properties of the rational and the real number fields, the least upper bound property, induction, countable sets, metric spaces, limit points, compactness, connectedness, careful treatment of sequences and series, functions, differentiation and the mean value theorem, and an introduction to sequences of functions. Additional topics as time permits.
Prerequisites: MATH055 HM

MATH171 HM  Abstract Algebra I
Credits: 3
Instructors: Karp, Lindo, Omar, Orrison, Staff (CMC), Staff (Pomona)
Offered: Jointly; Fall semester at HMC and CMC, Spring semester at HMC and Pomona
Description: Groups, rings, fields, and additional topics. Topics in group theory include groups, subgroups, quotient groups, Lagrange's theorem, symmetry groups, and the isomorphism theorems. Topics in Ring theory include Euclidean domains, PIDs, UFDs, fields, polynomial rings, ideal theory, and the isomorphism theorems. In recent years, additional topics have included the Sylow theorems, group actions, modules, representations, and introductory category theory.
Prerequisites: MATH073 HM and MATH055 HM
Electives
 14 credits of upper division technical electives. These electives can be from math, computer science, or other departments (but must include at least 6 credits of mathematics and at least 6 credits of computer science) and must be chosen with approval of the faculty advisors so that a coherent program is formed. All electives must be numbered over 100, with the exception of MATH070 HM or MATH080 HM. (Some offcampus math courses numbered in the 100s that replicate HMC Core course content may not be counted toward the elective requirement.) Courses that are crosslisted between computer science and mathematics, such as Complexity Theory, which appears as both MATH167 HM and CSCI142 HM, can be taken under either course number.
Colloquia
Two semesters of Computer Science Colloquium:

CSCI195 HM  Computer Science Colloquium (should be taken in the junior or senior year)
Credit: 0.5
Instructor: Staff
Offered: Fall and Spring
Description: Oral presentations and discussions of selected topics, including recent developments in computer science. Participants include computer science majors, Clinic participants, faculty members, and visiting speakers. No more than 2.0 credits can be earned for departmental seminars/colloquia. All majors welcome.
Prerequisites: Juniors and seniors only
and
One semester of Mathematics Colloquium:

MATH199 HM  Mathematics Colloquium (should be taken in the junior or senior year)
Credit: 0.5
Instructor: Staff
Offered: Fall and Spring
Description: Students will attend weekly Claremont Math Colloquium, offered through the cooperative efforts of the mathematics faculty at The Claremont Colleges. Most of the talks discuss current research in mathematical sciences and are accessible to undergraduates. No more than 2.0 credits can be earned for departmental seminars/colloquia.
and
One semester of Mathematics Forum:

MATH198 HM  Undergraduate Mathematics Forum (should be taken in the junior year)
Credit: 1
Instructors: Castro, Jacobsen, Orrison, Weinburd, ZinnBrooks H, ZinnBrooks L
Offered: Fall and Spring
Description: The goal of this course is to improve students' ability to communicate mathematics, both to a general and technical audience. Students will present material on assigned topics and have their presentations evaluated by students and faculty. This format simultaneously exposes students to a broad range of topics from modern and classical mathematics. Required for all majors; recommended for all joint CSmath majors and mathematical biology majors, typically in the junior year.
Students studying abroad during their junior or senior years are excused from one semester of the Computer Science Colloquium requirement for each semester abroad.
Clinic
Two semesters are required, ordinarily taken during the senior year. Joint majors will work on a Clinic project from either mathematics, computer science, joint computer science and mathematics, or on an interdisciplinary project. Software Development (CSCI121 HM) is strongly recommended for students wishing to take Computer Science Clinic.

MATH193 HM  Mathematics Clinic (Taken twice)
Credits: 3
Instructor: Staff
Offered: Fall and Spring
Description: The Clinic Program brings together teams of students to work on a research problem sponsored by business, industry, or government. Teams work closely with a faculty advisor and a liaison provided by the sponsoring organization to solve complex, realworld problems using mathematical and computational methods. Students are expected to present their work orally and to produce a final report conforming to the publication standards of a professional mathematician. Students are expected to take the two semesters of Clinic within a single academic year.
or

CSCI183 HM  Computer Science Clinic I
Credits: 3
Instructor: Staff
Offered: Fall
Description: The Clinic Program brings together teams of students to work on a research problem sponsored by business, industry, or government. Teams work closely with a faculty advisor and a liaison provided by the sponsoring organization to solve complex realworld problems. Students are expected to present their work orally and to produce a final report conforming to professional publication standards. CSCI183 HM and CSCI184 HM must be taken consecutively to count toward the major.
Prerequisites: CSCI121 HM and senior standing; or permission of the Computer Science Clinic director
and

CSCI184 HM  Computer Science Clinic II
Credits: 3
Instructor: Staff
Offered: Spring
Description: The Clinic Program brings together teams of students to work on a research problem sponsored by business, industry, or government. Teams work closely with a faculty advisor and a liaison provided by the sponsoring organization to solve complex realworld problems. Students are expected to present their work orally and to produce a final report conforming to professional publication standards. CSCI183 HM and CSCI184 HM must be taken consecutively to count toward the major.
Prerequisites: CSCI121 HM, CSCI183 HM, and senior standing; or permission of the Computer Science Clinic director
or

CSMT183 HM  Computer Science and Mathematics Clinic I
Credits: 3
Instructor: Staff
Offered: Fall
Description: Team project in joint computer science and mathematics, with corporate affiliation. CSMT183 HM and CSMT184 HM must be taken consecutively to count toward the major.
and

CSMT184 HM  Computer Science and Mathematics Clinic II
Credits: 3
Instructor: Staff.
Offered: Spring
Description: Team project in joint computer science and mathematics, with corporate affiliation. CSMT183 HM and CSMT184 HM must be taken consecutively to count toward the major.
Prerequisites: CSMT183 HM
Comments
The Joint Major requires 15 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.
The Clinic requirement is fulfilled by CSMT183 HM – Computer Science and Mathematics Clinic I and CSMT184 HM – Computer Science and Mathematics Clinic II (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.
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 computerscience 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 computerscience or mathematics major will not be permitted. Double majors between the joint major and other departments are still permitted.
The upperdivision electives may be satisfied by a suitable senior thesis.
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, Colloquium) each term during junior and senior years.