Computer Science Major, Minor, and Concentration

Our students explore data structures and algorithms in a dynamic and collaborative academic environment. We are committed to equipping our students to lead the way in this fast-moving field. All students build a strong foundation in computing concepts and applications that they can apply to various and emerging contexts.

Curriculum & Courses

Our rigorous curriculum encompasses theory, analysis, design, and implementation of algorithms and data structures. We also emphasize strong communication skills and an unstinting attention to the implications—theoretical, practical, and ethical—of work in the field.

Our program requires students to continually make connections across the curriculum and integrate what they have learned. Majors participate in HERA, a unique departmental project that requires them to draw from each of their upper level courses to construct, over the course of the major, an entire system.

  • Major

    The major program covers the foundations of the discipline and provides a range of elective opportunities. While the computer science major is inspired by guidance from existing professional societies in computing, it is uniquely “Haverfordian” in its emphasis on a collaborative approach to a rigorous field of inquiry.

    Requirements are:

    • CMSC H105 (Introduction to Computer Science) or CMSC H107 or Bryn Mawr CMSC B110.
    • CMSC H106 (Introduction to Data Structures) or CMSC H107 or Bryn Mawr CMSC B206.
    • CMSC H231 (Discrete Mathematics) (Students with strong backgrounds in mathematics and prior knowledge of the topics covered in CMSC H231 may wish to seek instructor permission to place into CMSC H340 / CMSC H345 without prior completion of CMSC H231 — in this case, the student may complete the requirements for the major with another course covering discrete mathematics, from the following list: Linear Optimization (MATH H210), Logic (MATH H394), Cryptography (MATH H394), Combinatorics (MATH H395), or STAT H203, STAT H218, STAT H286, or STAT H396).
    • CMSC H240 (Principles of Computer Organization).
    • CMSC H245 (Principles of Programming Languages).
    • CMSC H340 (Analysis of Algorithms).
    • CMSC H345 (Theory of Computation)
    • CMSC H350 (Compiler Design) or CMSC B355 (Operating Systems) or CMSC H356 (Concurrency and Co-Design in Operating Systems).
    • One additional 300 level course in computer science, and two additional courses numbered 200 or higher (one may be a related course in math or physics); computer science independent study courses can be counted if the student has received permission in advance to do so.
    • CMSC H399 Senior Thesis and Seminar.

    A maximum of two courses for the major can be transferred from outside the Bi-Co, and the introductory sequence, CMSC H240, CMSC H245, and either CMSC H340 or CMSC H345, must be taken at the Bi-Co. 

    Requests for exception must be pre-approved by the Chair of the Department.

  • Minor

    NB: The minor will not be available to students admitted for the fall of 2019 and beyond; for prior classes, these programs will remain available on an "if space permits" basis. 

    • CMSC H105 (Introduction to Computer Science) or CMSC H107 or Bryn Mawr CMSC B110.
    • CMSC H106 (Introduction to Data Structures) or CMSC H107 or Bryn Mawr CMSC B206.
    • CMSC H231 (Discrete Mathematics) (Students with strong backgrounds in mathematics and prior knowledge of the topics covered in CMSC H231 may wish to seek instructor permission to place into CMSC H340 /CMSC H345 without prior completion of CMSC H231—in this case, the student may complete the requirements for the minor with another course covering discrete mathematics, from the following list: MATH H210 (Linear Optimization), MATH H394 (Logic), MATH H394 (Cryptography), MATH H395 (Combinatorics), or STAT H203, STAT H218, STAT H286, or STAT H396).
    • Either
      • CMSC H240 (Principles of Computer Organization) and a course on operating systems [i.e., either CMSC B355 (Operating Systems) or CMSC H356 (Concurrency and Co-Design in Operating Systems)], or
      • CMSC H245 (Principles of Programming Languages) and CMSC H350 (Compiler Design).​
    • Either CMSC H340 (Analysis of Algorithms) or CMSC H345 (Theory of Computation).
  • Concentration

    Computer Science Concentration for Mathematics Majors:

    NB: This concentration will not be available to students admitted for the fall of 2019 and beyond; for prior classes, these programs will remain available on an "if space permits" basis.

    • CMSC H105 (Introduction to Computer Science) and CMSC H106 (Introduction to Data Structures), or CMSC H107.
    • Either CMSC H240 (Principles of Computer Organization) or CMSC H245 (Principles of Programming Languages).
    • Either CMSC H340 (Analysis of Algorithms) or CMSC H345 (Theory of Computation).
    • One cross-listed MATH/CMSC course (Note that CMSC H231 meets this requirement and is the prerequisite for CMSC H340 and CMSC H345.)
    • One additional 300-level computer science course.

Research & Outreach

All majors participate in the department’s Senior Experience, in which they investigate in depth an area of particular interest then write a thesis and deliver an oral presentation on their research. Work on the thesis proceeds through our year-long senior seminar, which involves group meetings as well as one-on-one work with a faculty advisor. They also take part in a variety of other activities—including mock interviews and presentations by alumni—designed to better prepare them for graduate school and/or careers in the field.

After Graduation

Our majors graduate prepared to innovate and lead, whether they pursue work in computer science or computation as applied to a vast and growing range of problems and questions in a variety of areas. While the majority go on to graduate programs in computer science, others enter a variety of related careers.

Keep Exploring

More Programs

Check out our other academic offerings:

Get in Touch

Join the Mailing List or search for events in your area.

You can find detailed instructions and information on the Application Instructions page. If you need to contact us directly, please send an email to admission@haverford.edu.

Contact Us