For information about Web accessibility, please contact the Webmaster at

Haverford College

Computer Science

header image

Academic Programs : Computer Science Concentration with Mathematics Major


One of the distinctive features of Haverford's curriculum is that students may elect to concentrate in areas related to their major discipline. Computer Science Concentrations are available to physics and math majors. Over the years, many Mathematics students have found the concentration a valuable addition to their education. Curtis Greene () is involved in directing the concentration for mathematics majors and should be consulted by interested students.

It may come as a surprise to some that many of the fundamental questions in Computer Science (including the famous P versus NP problem) are in essence mathematical questions. Conversely, some of the deepest foundational questions about the nature of mathematics (such as: what constitutes a proof?) are inherently computational in nature. Computers have also become a powerful tool in mathematical research and its applications, both theoretical and experimental. A full understanding of their capability and potential can only be realized by formal course work in Computer Science.

Indeed, the concentration at Haverford focuses primarily on the logical underpinnings of the field, instead of its technological realizations. Computer Science studies fundamental limits about what kinds of thought can and cannot be mechanized, and has important connections with the logic of mathematics.


The Computer Science Concentration is available to Mathematics majors by fulfilling the following requirements:

  • CMSC105 (Introduction to Computer Science) and CMSC106 (Introduction to Data Structures), or CMSC107 (Introduction to Computer Science and Data Structures)
  • Either CMSC240 (Principles of Computer Organization) or CMSC245 (Principles of Programming Languages).
  • Either CMSC340 (Analysis of Algorithms), or CMSC345 (Theory of Computation). Note that both are cross-listed in Mathematics.
  • One other cross-listed Math/CMSC course. Students who wish to take CMSC340 (Analysis of Algorithms) should use Math/CMSC 231 (Discrete Math) to meet this requirement.
  • One additional 300-level CS course.

Ordinary planning with an advisor can mean that only three additional courses in Computer Science are required beyond those for the Mathematics major. These additional courses would be: CS105; CS106; and CS24X. In addition, the programming skills taught in CS105 and CS106 are widely applicable in any technical field. This alone should be attractive to the student who anticipates future scientific work either during college or upon graduation in a subsequent career.

Flowchart showing core courses.