Program Requirements and Opportunities
Published annually, the Course Catalog sets out the requirements of the academic programs--the majors, minors, and concentrations. Each ²ÝÁñ³ÉÈËÉçÇø student must declare a major before the end of the sophomore year. Students may also declare a minor or a concentration, but neither is required for the A.B. degree. Students must comply with the requirements published in the Course Catalog at the time when they declare the major, minor and/or concentration.
The Course Catalog also sets out the College requirements. Students must comply with the College requirements published at the time they enter ²ÝÁñ³ÉÈËÉçÇø.
For more information, visit the Catalog Homepage to view the current content. To view Catalogs from previous academic years, visit the Catalog Archives page.
COMPUTER SCIENCE
Students may complete a major or minor in Computer Science.
Computer Science is about the science of algorithms (theory, analysis, design and implementation) as well the design and implementation of computer systems. As such it is an interdisciplinary field with roots in mathematics and engineering and applications in many other academic disciplines. The department at ²ÝÁñ³ÉÈËÉçÇø is founded on the belief that Computer Science should transcend from being a subfield of mathematics and engineering and play a broader role in all forms of human inquiry.
The Computer Science Department is supported jointly by faculty at both ²ÝÁñ³ÉÈËÉçÇø and Haverford Colleges. The department welcomes students who wish to pursue a major in Computer Science. Additionally, the department also offers a minor in Computer Science. Students can further specialize their majors by selecting elective courses that focus on specific disciplinary tracks or pathways within the discipline.
Both, the major and the minor, emphasize foundations and basic principles of information science with the goal of providing students with skills that transcend short-term trends in computer hardware and software.
Major in Computer Science
Students are encouraged to prepare a major course plan in consultation with their academic adviser in Computer Science. The requirements for a major in computer science are:
Three introductory courses:
- CMSC B109 (or H105): Introduction to Computing, or CMSC B113: Computer Science I
- CMSC B151 (or H106 or H107): Data Structures
- CMSC/MATH B/H231: Discrete Mathematics
Four core courses:
- Any one of
- CMSC B223/H251: Systems Programming
- Any one of
- CMSC B/H240: Principles of Computer Organization
- CMSC B/H245: Principles of Programming Languages
- CMSC H260: Foundations of Data Science
- Any one of the designated theory courses (writing intenstive)
- CMSC B337: Algorithms: Design & Practice
- CMSC B340: Analysis of Algorithms
- Any one of the designated Systems Courses
- CMSC B355/H356: Operating Systems
- CMSC H350: Compiler Design
Four Electives in Computer Science
- At least three must be 300-level or above
Senior Capstone Experience
- CMSC B399: Senior Conference
The Major requires students to take a total of eleven courses and CMSC 399 Senior Conference. If a student places out of a course (for instance an introductory course), another CS course must be substituted in its place from the Electives category.
Note that CMSC H340 does not fulfill the writing requirement of the college and cannot be used in place of CMSC B340. All requirements must be completed with merit grades.
Students declaring a CS major need to have completed at least three courses in computer science by the end of their sophomore year (typically CMSC B109/B113/H105, B151/H106 and B/H231). In addition, students who earn a grade below 2.7 in B151/H106 or B/H231 are not advised to declare a CS major.
Minor in Computer Science
Students in any major are encouraged to complete a minor in computer science. The requirements for a minor in computer science at ²ÝÁñ³ÉÈËÉçÇø are (Haverford equivalents are not listed, please see above): CMSC 109/113, CMSC 151 and CMSC 231, any two of CMSC 223/251, 240, 245, 260, 337, 340 or 345, and one elective chosen from any course in computer science, approved by the student's adviser in computer science. All requirements must be completed with merit grades. The Minor requires students to take a total of six courses. If a student places out of a course (for instance an introductory course), another CS course must be substituted in its place from the Electives category.
Students can declare a minor at the end of their sophomore year or soon after. Students should prepare a course plan and have it approved by their faculty adviser.