Computer Science

Major Requirements

Computer Science

The department offers a computer science major and a computer science-mathematics interdisciplinary major. For each, the Computer Science Fundamentals I and II courses (CSCI 121 and 221) 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 students to a variety of sub-disciplines of computer science which they survey in upper-level elective courses. 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 junior qualifying exam during their third year, one that reviews the fundamentals students aquired in the early core of computer science and discrete mathematics courses.

Below are the course requirements for our two majors:

Requirements for the Computer Science Major

  1. Computer science 121 or the equivalent, and 221
  2. Mathematics 111 or the equivalent, 112, 113, and 201
  3. Computer science 382, 387, and 389
  4. Computer science 470
  5. Four additional units in computer science elective courses numbered higher than 300

Requirements for the Computer Science-Mathematics Interdisciplinary Major

  1. Computer science 121 or the equivalent, and 221
  2. Mathematics 111, 112, 113, 201, and either 202 or 332
  3. Computer science 382, 387, and 389
  4. Computer science 470
  5. Four additional units in mathematics and computer science elective courses numbered higher than 300 including at least one in mathematics and at least one in computer science

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.  

View the computer science courses.


About the CS Senior Thesis

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.

View the thesis topics of recent computer science graduates.


About the CS Junior Qualifying Examination

The qualifying exam in computer science, like that in other departments, serves two primary purposes.  The first is to make sure you have, by junior year, 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.

Logistics. The computer science qual is generally given in October.  Like all quals at Reed, those who fail have a second chance, typically given the weekend before classes start in the spring.  If you are planning to graduate in a given year, you must take the qual the October of the prior year.  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.

Expectations and results.  In order to proceed in the computer science major, you must pass the qual.  We pass students whose performance on the qual shows that they have a strong understanding of this introductory-level material.  We are focused on the conceptual understanding of each question.  (We expect you to generally know the syntax of the languages being tested, but you will not be seriously penalized for a missing colon or other small syntax issues.)  If you do not pass the full qual, we will sometimes note that only one of the two days was problematic and require only that portion of the qual to be retaken.  In some borderline cases, we will give a "conditional pass", which can be converted to a pass if you write up correct solutions to the problems that gave you trouble.  (In the case of programming questions, we often ask that you submit working code.)  In borderline cases, we will also consider your academic record and might be generous if the poor qual performance seems like an aberration from otherwise strong work.

Download a sample exam.

Download practice exam problems.