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
- Required core courses
- Electives
- CMSC399, Senior Seminar thesis
Flowchart with core courses.
