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.
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.
Most of the above courses include an essential laboratory component, in the form of computer-based development exercises and projects.
Students are required to complete nine units of electives. The following is a list of possible computer science elective courses.
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 II) can be counted as an elective for the major and requires CS 185 (Computer Science Research I) as a prerequisite. Other research or project courses cannot normally be counted as electives for the major.
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.