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 105 (Introduction to Computer Science) or CMSC 107 or Bryn Mawr CMSC 110.
    • CMSC 106 (Introduction to Data Structures) or CMSC 107 or Bryn Mawr CMSC 206
    • CMSC/MATH 231 (Discrete Mathematics) (Students with strong backgrounds in mathematics and prior knowledge of the topics covered in Math/CMSC 231 may wish to seek instructor permission to place into CMSC 340 / 345 without prior completion of 231 — 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 210b), Logic (MATH 394), Cryptography (MATH 394), Combinatorics (MATH 395), or STAT 203, 218, 286, or 396).
    • CMSC 240 (Principles of Computer Organization).
    • CMSC 245 (Principles of Programming Languages).
    • CMSC 340 (Analysis of Algorithms).
    • CMSC 345 (Theory of Computation)
    • CMSC 350 (Compiler Design) or CMSC 355 (Operating Systems) or CMSC 356 (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 399 Senior Thesis and Seminar.
  • Minor

    • CMSC 105 (Introduction to Computer Science) or CMSC 107 or Bryn Mawr CMSC 110.
    • CMSC 106 (Introduction to Data Structures) or CMSC 107 or Bryn Mawr CMSC 206.
    • CMSC/MATH 231 (Discrete Mathematics) (Students with strong backgrounds in mathematics and prior knowledge of the topics covered in CMSC/MATH 231 may wish to seek instructor permission to place into CMSC 340 / 345 without prior completion of 231—in this case, the student may complete the requirements for the minor with another course covering discrete mathematics, from the following list: MATH 210b (Linear Optimization), MATH 394 (Logic), MATH 394 (Cryptography), MATH 395 (Combinatorics), or STAT 203, 218, 286, or 396).
    • Either:
      • CMSC 240 (Principles of Computer Organization) and a course on operating systems [i.e., either CMSC 355 (Operating Systems) or CMSC 356 (Concurrency and Co-Design in Operating Systems)], or
      • CMSC 245 (Principles of Programming Languages) and CMSC 350 (Compiler Design).
    • Either CMSC 340 (Analysis of Algorithms) or CMSC 345 (Theory of Computation).
  • Concentration

    Computer Science Concentration for Mathematics Majors:

    • CMSC 105 (Introduction to Computer Science) and 106 (Introduction to Data Structures), or CMSC 107.
    • Either CMSC 240 (Principles of Computer Organization) or 245 (Principles of Programming Languages).
    • Either CMSC 340 (Analysis of Algorithms) or 345 (Theory of Computation).
    • One cross-listed MATH/CMSC course (Note that MATH/CMSC 231 meets this requirement and is the prerequisite for CMSC 340 and 345.)
    • One additional 300-level computer science course./li>

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