Reed offers a computer science major and a standing mathematics–computer science interdisciplinary major. The Computer Science Fundamentals I and II courses introduce students to the discipline, each providing a significant foundation in programming and each preparing students for the core coursework in algorithms, theory of computation, and computing systems. These core courses lead to a variety of subdisciplines of computer science, surveyed in upper-level elective courses. Students are also expected to take several mathematics courses. Computer science is a very mathematical discipline and this skill in mathematics is used throughout the curriculum.
Students then research and pursue their chosen computer science topic for their year-long senior thesis (CSCI 470).
In order to ensure that computer science students are prepared for their senior year, all students take a qualifying exam during their third year, one that reviews the fundamentals students acquired in the early core of computer science and discrete mathematics courses.
Note: Beginning in Spring of 2023, the department will begin administering the CS Qualifying Exam for sophomores in March. It will have the same format as the recent junior quals.
Below are the course requirements for our two majors:
Requirements for the Computer Science Major
- Mathematics 111 or the equivalent, 112, 113, and 201.
- Computer Science 121 and 221.
- Computer Science 382, 387, and 389.
- Four additional computer science units numbered higher than 300 (excluding Computer Science 470).
- Computer Science 470.
Requirements for the Computer Science-Mathematics Interdisciplinary Major
- Mathematics 111, 112, 113, 201, and either 202 or 332.
- Computer Science 121 and 221.
- Computer Science 382, 387, and 389.
- Four additional mathematics or computer science units numbered 300 or above, including at least one mathematics unit and one computer science unit (excluding 470).
- Junior qualifying examination.
- Mathematics–Computer Science 470 (thesis).
Note that both majors are grounded in mathematics. Students are encouraged to begin the required math sequence alongside CS I and II. From this mathematics base students will then learn to carefully reason about, and justify, computer programs and system designs throughout the upper-level curriculum, as several of the computer science elective courses take a mathematical approach to their topics. With such a foundation Reed computer science majors find themselves readily capable of exploring advanced areas in the field. Students in the interdisciplinary major, in particular, are asked to delve more deeply within the mathematics curriculum in preparation for conducting a thesis in a topic that bridges both fields, for example, one in theoretical computer science.
Thesis is a year-long, two-unit class. It is the culmination of your time at Reed. It gives you experience doing work at the forefront of computer science, and it gives you a chance to demonstrate the knowledge and intellectual maturity that you have gained from your studies here.
As a senior, you spend the first week of your first semester meeting with possible thesis advisors and discussing possible topics. You then submit a form outlining several possible topics and which professors you would most prefer to work with. The department then assigns thesis advisors, who typically meet with each student weekly for the course of the year. Professors usually advise theses in their area of expertise, but we do our best to accomodate student interests, even if no professor works on a particular topic.
Most theses are novel research projects. The most ambitious result in research that is ready for publication, though that level of success is certainly not required. Some theses are expository, meaning that they do not include novel research but instead serve as what CS conferences call a "systematization of knowledge". For these theses, a student learns a lot of material in an advanced area, typically by reading many research papers, and then writes a document that introduces the reader to this field and explains the state of current research. Many thesis projects involve writing substantial pieces of code, but this is certainly not necessary. Expository theses or those consisting of theoretical research typically don't require much if any coding.
Those pursing an interdisciplinary major will generally have an advisor in each department, though often one will be the "primary" advisor and meet more frequently with the student. Interdisciplinary theses must be on truly interdisciplinary topics, drawing from the student's knowledge of both fields. (The CS advisor will confirm that the project has sufficient CS content. In general, the thesis must require the sort of knowledge only available to someone majoring in the field. A bit of CSCI 121-level programming is not sufficient.)
At the end of the year, students submit a final thesis document and defend that document at an oral exam in front of a panel of Reed professors. The grade for a thesis is given by the advisor, though they will typically discuss the thesis with the other members of the orals board and the rest of the department. (This is done to ensure consistent grading standards across advisors and departments.) The grade is primarily determined by the quality of the thesis document and the oral defense, though things like the student's responsibility and reliability during the year can also be taken into consideration. Failing theses are rare, and they are usually the result of a student not actively working on their thesis for a significant portion of the year.
The qualifying exam in computer science, like that in other departments, serves two primary purposes. The first is to make sure you have fully internalized and mastered the introductory material on which the rest of the major depends. Going back and studying this material (if necessary) is a useful educational experience. Second, the qual is there to ensure that the students moving on are prepared to pass their remaining classes and write a thesis. If the faculty are not convinced you can graduate with a CS degree, we would rather that be made clear earlier, rather than later, so that you have time to adjust your academic plans. The vast majority of our students pass the qual, and most do it on their first attempt. That said, you should take the qual seriously and not take passing for granted.
In academic year 2022-23, the CS Qualifying Exam will be given in October for current juniors. Beginning in March, 2023 and in the following years, the CS Qualifying Exam will be given to current sophomores. Like all quals at Reed, those who fail have a second chance, typically given the weekend before classes start in fall or spring. In unusual circumstances, such as switching to the major late, permission will be granted to delay the first attempt. Sometimes a qual is also given the weekend before classes start in the fall for students in unusual situations. Remember, though, that any deviation from the regular schedule must be approved by the department. Qual signup emails are sent to the cs-students email list several weeks before the exams.
Material and format
The CS qual covers only the material in CSCI 121, CSCI 221, and MATH 113. The exam is given over a weekend. On one day two two-hour sections test the material from CSCI 121 and 221, and on the second day a single two-hour section tests the material from MATH 113. On the first day, the exam will include problems that ask you to write code in any of the languages covered in those classes. These exams are given on paper, with no access to a computer to run code.