# Academic Programs : Major

The CS major for students who wish to explore fundamental questions about computation itself and the role of computation in society, such as

- How do the languages and "paradigms" we use to express computation affect our ability to develop, understand, and use software?
- What computing techniques are needed to perform inquiry into other fields such as physics, biology, or economics?
- Does a simple requirement of logical consistency constrain what can, in principle, be computed?
- Do the laws of physics constrain what can and cannot be computed?
- Are the constraints of logical consistency and physics the same? If not, what does this mean about the universe?
- How can human beings best communicate with each other about the properties of computing systems?
- Is the classic 'worst-case time complexity' analysis really the best way to study the resources needed for computation?
- How does the design and marketing of computing systems influence disparities in society?

As part of this exploration, we provide many opportunities for students to design, implement, and analyze algorithms and data structures, and to develop larger-scale hardware/software systems over the course of multiple semesters. These opportunities include both individual projects and group work, and provide experience with a variety of programming languages and with computer hardware. The senior experience and final projects in many classes provide opportunities for students to explore their own interests; we also invite students to contact us to discuss ideas for independent study courses or independent majors relating to computer science.

### Requirements

**Introductory courses**- CMSC105 or CS 110 at Bryn Mawr Introduction to Computer Science (or CMSC107)
- CMSC106 or CS 206 at Bryn Mawr Introduction to Data Structures (or CMSC107)
- Math/CMSC 231 Discrete Math (students who receive instructor permission to register for CMSC340 or CMSC345 without Math/CMSC 231 may substitute another mathematics course that is relevant to computer science from the following list: Linear Optimization (Math 210b), Linear Algebra (215), Scientific Computing (222), Logic (394), Cryptography (394), Combinatorics (395), or Statistics (203, 218, 286, or 396))

**Required core courses****Electives**- CMSC399, Senior Seminar thesis

Flowchart with core courses.