Computer Science Major


The HMC Computer Science Major is designed to provide students with both breadth and depth in computer science, combining aspects of experimentation, theory, and design. The major prepares students well for both careers in industry and graduate studies.

All HMC students take an introductory course as part of the HMC common core. This course is typically CS 5 or CS 42.

The CS major comprises five major components (beyond the HMC common core): four foundation courses, four "kernel" courses, three electives, clinic, and colloquium. Each of these five components is described in detail below.

While every foundation and kernel course is typically offered every semester, most electives courses are offered on a once-per-year or once-each-two-year rotation. This permits the department to offer a wide variety of electives but also requires that students plan their electives well in advance. Students are strongly encouraged to consult with their adviser about electives when they declare their major. The course descriptions indicate approximately how often each course is offered; previous years' class schedules may also be of help. Lastly, for a quick overview of course dependencies, consult the course precedence diagram.

Computer Science Major Components

CS Foundation Requirement

  • CS 60 (or CS 42). Principles of Computer Science
  • Math 55. Discrete Mathematics
  • CS 70. Data Structures and Program Development
  • CS 81. Computability and Logic

CS Kernel Requirement

Most of the above courses include an essential laboratory component, in the form of computer-based development exercises and projects.

CS Elective Requirement

Students are required to complete nine units of electives. The following is a list of possible computer science elective courses.

  • CS 106. Computer Science Education Research
  • CS 111. Domain-Specific Languages
  • CS 124. User Interface Design
  • CS 125. Computer Networks
  • CS 132. Compiler Design
  • CS 133. Databases
  • CS 134. Operating Systems
  • CS 136. Advanced Computer Architecture
  • CS 137. File Systems
  • CS 141. Advanced Topics in Algorithms
  • CS 142. Complexity Theory
  • CS 144. Scientific Computing
  • CS 147. Computer Systems Performance Analysis
  • CS 151. Artificial Intelligence
  • CS 152. Neural Networks
  • CS 153. Computer Vision
  • CS 154. Robotics
  • CS 155. Computer Graphics
  • CS 156. Parallel and Real-Time Computing
  • CS 157. Computer Animation
  • CS 158. Machine Learning
  • CS 159. Natural Language Processing
  • CS 181. Computer Science Seminar
  • CS 189. Programming Practicum (One unit per semester)

Students may substitute electives in one or more CS-related areas, such as in Engineering or Mathematics, with the consent of their faculty advisor. A list of previously approved electives in other majors can be found here. CS 186 (Computer Science Research) can be counted as an elective for the major. Other research or project courses cannot normally be counted as electives for the major.

CS Clinic Requirement

Each CS student is required to enroll in the CS Clinic (CS 183 and 184) for one full academic year (two semesters in the same academic year).

CS Colloquium Requirement

Finally, the CS Colloquium (CS 195) is required for both semesters of both the junior and senior year.


The CS Major requires 14 courses, not including colloquium. Colloquium is not required for study abroad students during their time away from the HMC campus.