# 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.

### Requirements

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)

A rigorous year-long course for technically oriented students, emphasizing the mathematical aspects of the discipline via fundamental data structures, analytical problem-solving skills, and programming. - Math 231 (Discrete Math)

Provides a background in proofs useful for any Computer Science for Mathematics student. - Either CMSC240 (Principles of Computer Organization) or CMSC245 (Principles of Programming Languages).
- Either CMSC340 (Analysis of Algorithms), or CMSC345 (Theory of Computation). (both are cross-listed in Mathematics)
- One additional 300-level CS course. Choices at Haverford include Operating Systems, Compiler Design, and advanced topics courses in high-performance computing and complexity of computation. At Bryn Mawr there are choices in robotics and artificial intelligence.
- One 200-level (or higher) Computer Science course, or related course in Mathematics or Physics such as: Math 203, 210, 218, 235, 250; Physics 316, 322.

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.