 |
|
| | |
| |
| |
|
The Computer Science Major at Haverford College
We (the CS faculty)
have designed 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
- Required core courses
- CMSC240 (Principles of Computer Organization)
- CMSC245 (Principles of Programming Languages)
- CMSC340 (Analysis of Algorithms)
- CMSC345 (Theory of Computation)
- either
- Electives
- one additional 300-level course in computer science (or related courses in math or physics)
- two additional courses at at least the 200-level in computer science (or related courses in math or physics)
- CS480, Senior experience (thesis)
Flowchart with core courses.