These requirements ensure that a computer science student has a solid foundation in computer science and supporting mathematics, and has explored some of the more advanced areas of computer science. This is a basic summary, for a more in-depth description of the requirements, please reference the Department/Program Curriculum found on the Registrar’s page.
Required Courses in Computer Science
There are other introductory courses that aren’t required, but could be of interest to majors.
- CSCI 134: Introduction to Computer Science
- CSCI 136: Data Structures and Advanced Programming (placement required)
Potential majors are strongly urged to complete all or most of the core courses by the end of their junior year in order to ensure that they have the appropriate prerequisites for the electives.
- CSCI 237: Computer Organization
- CSCI 256: Algorithm Design and Analysis
- CSCI 334: Principles of Programming Languages
- CSCI 361: Theory of Computation
Two or more electives (bringing the total number of Computer Science courses to at least 8) chosen from 300- or 400-level courses in Computer Science. Computer Science courses with 9 as the middle digit (reading, research, and thesis courses) will normally not be used to satisfy the elective requirements. Students may petition the department to waive this restriction with good reason.
Required Courses in Mathematics
Any Mathematics or Statistics course at the 200-level or higher except for MATH 200
Required Proficiency in Discrete Mathematics
Students must demonstrate proficiency in discrete mathematics either by earning a grade of C- or better in MATH 200 or by satisfactory performance on the departmental Discrete Mathematics Proficiency Exam. This requirement must be met by the end of the sophomore year.
The Discrete Mathematics Proficiency Exam may be taken at most twice and cannot be taken after the sophomore year. The exam may not be used to fulfill the requirement for a student who has taken Math 200 pass/fail or who received a letter grade below C- in that course. For more information on the Discrete Mathematics Proficiency Exam, follow this link: Required Proficiency In Discrete Mathematics.
Admission to the Major
To be eligible for admission to the major, a student must have completed at least two Computer Science courses, including Computer Science 136, as well as fulfilled the Discrete Mathematics Proficiency Requirement by the end of the sophomore year. A Mathematics course at the 200-level or higher (except for MATH 200) must be completed by the end of the junior year. Students are urged to have completed two of the four core courses (Computer Science 237, 256, 334, and 361) by the end of the sophomore year and must normally have completed at least three out of the four core courses by the end of the junior year.
Students considering pursuing a major in Computer Science are urged to take Computer Science 134 and to begin satisfying their mathematics requirements early. Note in particular that the Discrete Mathematics Proficiency requirement is a prerequisite for many advanced courses.
Students who take Computer Science 102T, 103, or 104 prior to Fall 2023 may use that course as one of the two electives required for the major in Computer Science. Those classes cannot be counted toward the major if taken in Fall 2023 or later semesters. Computer Science 102T, 103, 104, and 134 are not open to students who have taken a Computer Science course numbered 136 or higher.
With the advance permission of the department, two appropriate mathematics or statistics courses may be substituted for one Computer Science elective. Appropriate mathematics classes are those numbered 300 or above, and appropriate statistics courses are those numbered 200 or above. Other variations in the required courses, adapting the requirements to the special needs and interests of the individual student, may be arranged in consultation with the department.
The Computer Science Colloquium
We encourage students to be intellectually engaged in our field beyond the formal structure of courses. As such, all computer science majors must attend at least twenty Computer Science colloquia. Juniors and seniors are encouraged to attend at least five during each semester they are present on campus. Prospective majors in their first and second years are also encouraged to attend. A student studying away on a program approved by the International Education and Study Away Office will receive four colloquium credits for each semester away, up to a total of eight credits.
The colloquia consist of talks on areas of computer science not normally covered in our curriculum. In particular, many speakers present recent research in computer science. Speakers may include Williams faculty, faculty from other institutions, computer scientists from industry, and current Williams computer science majors talking on their own work or other areas of interest to them. Every year additional sessions focus on such topics as computer ethics, computer-related jobs, and computer science graduate schools.