You are on page 1of 8

Computer Science

Professor Stephen Chong, Co-Director of Undergraduate Studies

Professor Steven J. Gortler, Co-Director of Undergraduate Studies (fall)

Professor Boaz Barak, Co-Director of Undergraduate Studies (spring)

Computer science is a dynamic, versatile eld, full of open problems and opportunities for
creative invention. The concentration in computer science is designed to teach students
skills they will use immediately and ideas they will exploit in the future in ways
unimaginable today. Because information technology affects every aspect of society,
graduates with computer science degrees have open to them an enormous variety of
careersengineering, teaching, medicine, law, basic science, entertainment, management,
and countless others.

Computer scientists must know basic mathematics, the lingua franca of all the
quantitative sciences; they must understand the abstract models that describe universal
computational phenomena; and they must know how computers are designed,
programmed, and used. Concentration requirements are intended to ensure balanced
programs with emphasis on subjects that will endure through rapid technological change.
At the same time, therequirements are exible and permit students to choose courses
that reect their individual interests.

Students are advised to obtain the needed mathematical background early in their
careers. Computer Science 50 serves as the introductory course in computer science;
ideally prospective concentrators will take this course freshman year, but it is quite
possible to take Computer Science 50 during the sophomore year and still complete the
honors-eligible program. The Computer Science concentration is administered by the
Paulson School of Engineering and Applied Sciences, and it is particularly easy to move
into Computer Science from the other SEAS concentrationsApplied Mathematics and
areas of Engineering.

The Computer Science concentration has the following learning objectives. Our graduates
should be able to:

1. Design and code correct solutions to problems.


2. Design a system, identifying trade-offs on dimensions such as performance,
usability, robustness, security, and durability.
3. Design an algorithm to solve a problem. Reason about the algorithm's properties
correctness, specications, time complexityinformally at least, and formally as
much as possible.
4. Starting from an informal, English language description of a problem, give a fully
formal description of it, and prove something about the behavior of the system.
5. Compose a large data set from networked sources, draw some inferences about it,
and convey those conclusions effectively to others visually and verbally.
6. Give a 1-hour talk to a novice about how computers work, from the hardware to a
user-visible application.
7. Explain how a solution designed for a specic domain can be applied to another
domain.
8. Explain the appropriateness of alternative system designs to the social context in
which the system would be used.
9. When presented with a technical solution to a problem, formulate a set of questions
that probe the solution for its soundness.
10. Conduct an "experiment" to study an algorithm or system, ideally one designed by
someone else.
11. Pick up and work with new environments (languages, APIs, OS-es, simulators, etc.)
independently and efciently.
12. After listening to a CS colloquium talk, objectively analyze and critique the work.
13. Apply computational approaches in the natural sciences, the social sciences, and
the humanities.
14. Decompose a large problem into a collection of manageable, interrelated tasks.

In addition to these technical objectives, we identied ve softer objectives. We hope our


graduates will be able to:

1. Present ideas clearly and forcefully, both orally and in writing.


2. Solve problems cooperatively and in an ethically principled way.
3. Apply their strengths to areas of known weakness and discomfort.
4. Work productively, responsibly, and effectively within a group.
5. Adapt to changes in the technological landscape.

REQUIREMENTS

There are four types of concentrations in Computer Science: Basic concentration, Honors
Concentration, Joint Concentration, and the Mind, Brain, Behavior track of the Computer
Science concentration.

The number of credits required for each degree depends on the students mathematics
placement. The ranges given here depend on whether the student starts mathematics at
the Mathematics 1a, Mathematics 1b, or Mathematics 21a level. (With good planning it is
also possible to earn a Computer Science degree starting with Mathematics Ma.) For
example, a basic concentration requires 48 credits (12 courses), of which Mathematics
1a and/or Mathematics 1b can be waived, depending on placement, to reduce the number
to 44 or 40 credits (11 or 10 courses). No student may reduce concentration requirements
by omitting other courses: any required course not taken must be replaced by a similar
course at a more advanced level.

The four concentration options share a common requirement structure, which is part
Required and part Elective.

Required

Basic mathematics
Basic software
Theory

Elective

The breadth requirement


Other electives
Basic Requirements: 10-12 courses (40-48 credits)

1. Required courses:
1. Basic mathematics (2-4 courses):
1. 1. Mathematics 1a and Mathematics 1b, if needed as preparation.
2. Multivariable calculus: Mathematics 21a, Applied Mathematics
21a, Mathematics 23b, Mathematics 25b, or Mathematics 55b.
3. Linear algebra: Mathematics 21b, Applied Mathematics 21b,
Mathematics 23a, Mathematics 25a, or Mathematics 55a.

In order to limit to 12 the maximum number of courses required for


a basic concentration, a student who takesall threeof Computer
Science 20 and Mathematics 1a and Mathematics 1b is not
required to take Mathematics 21a (or equivalent). (Mathematics
21b or its equivalentisrequired, but does not have 21a as a
prerequisite.)

Students usually take two courses with the same number in the
natural sequence, but any combination is permitted, as long as it
includes both a multivariable calculus and a linear algebra course.
For example, it would be appropriate to take Mathematics 23a and
Mathematics 21a, but it would not be appropriate to take
Mathematics 21a and Applied Mathematics 21a. Students who feel
they have background equivalent to Mathematics 21a and/or
Mathematics 21b prior to matriculation may, with prior
consultation, substitute more advanced analysis and/or algebra
courses, respectively.
2. Basic software (2 courses):Two out of the following three courses: Computer
Science 50,Computer Science 51, and Computer Science 61. Since Computer
Science 50 is a prerequisite for both Computer Science 51 and Computer
Science 61, students who skip Computer Science 50 must take both Computer
Science 51 and Computer Science 61. Students who take Computer Science
50 need take only one or the other.
3. Theory (2 courses): Either Computer Science 121 or Computer Science 125,
plus any one additional theory course, including Computer Science courses
numbered in the 120s and 220s. Applied Mathematics 106, and Applied
Mathematics 107.Students may not receive credit for both Computer Science
125 and either Computer Science 121 or Computer Science 124.
4. Technical electives (4 courses):Courses may be drawn from the following list:

Computer Science courses numbered greater than 50 (including 91r). A
student who takes all three of Computer Science 50, Computer Science
51, and Computer Science 61 may count either Computer Science 51 or
Computer Science 61 as a technical elective.
Statistics 110
Mathematics 154
Applied Mathematics 106, 107, 120, and 121
Engineering Sciences 50 or Engineering Sciences 52
Manybut not allMIT Course 6 courses can be used as technical
electives. Consult the DUS before enrolling.
Breadth Requirement:In order to ensure breadth in the program two of
the four technical electives must be Computer Science courses from
different course groupings, identied by the penultimate digit of the
course number. For example, Computer Science 61 and Computer
Science 165 have penultimate digit 6.Physics 123 or Engineering
Sciences 153 counts as a Computer Science hardware (penultimate digit
4) course.

3: Economics and Computation
4: Hardware and Networks
5: Programming Languages
6: Systems
7: Graphics, Visualization, and User Interfaces
8: Articial Intelligence

Note that theory courses (penultimate digit 2) do not count toward the
breadth requirement.

Computer Science courses with penultimate digit 0, 1, 2, and 9 are valid


technical electives if not used to satisfy other concentration
requirements, but do not contribute to the breadth requirement. However,
no Computer Science course numbered less than 20 may be used in a
concentration program, and Computer Science 20 only in honors
programs.

2. Tutorial:Optional.Available as Computer Science 91r. This course is repeatable, but


may be taken at most twice for academic credit, and only one semester of
Computer Science 91r may be counted toward concentration requirements.
Students wishing to enroll in Computer Science 91r must le a project proposalto
be signed by the student and the faculty supervisor and approved by the Director of
Undergraduate Studies.
3. Thesis:None.
4. General Examination:None.
5. Other information:
1. Approved courses:With the approval of the Director of Undergraduate Studies,
courses other than those listed above may be used to satisfy requirements.
Statistics 121 will be treated as equivalent to Computer Science 109. To satisfy
any of the requirements 1A, 1B, or 1C, a substituted course must be in the same
area of mathematics or computer science but more advanced than the
stipulated course. Students must secure advance approval for course
substitutions by ling a Plan of Studyto be approved by the Director of
Undergraduate Studies. The Plan of Study form and a description of the process
to submit the form can be found here.
2. Pass/Fail and Sat/Unsat:None of the courses used to satisfy concentration
requirements may be taken Pass/Fail. While Computer Science 50 will count
for concentration credit if it is taken for a grade of SAT, students intending to
concentrate in computer science should take the course for a letter grade.
3. Credit for prior work:Except for Math 1ab, there is no reduction in
concentration requirements for prior work. As noted in 1(B) above, students
who skip CS50 must take both CS51 and CS61. Rarely, students wish, on the
basis of prior experience, to skip CS51 or CS61 or courses such as Math 21a
or Math 21b. They may be allowed to do so, with the prior approval of the
Director of Undergraduate Studies, if they substitute a more advanced course
of the same kind: for example, CS152 in place of CS51, CS161 in place of
CS61, Math 112 or Applied Math 105 in place of Math 21a, and Math 121 or
Applied Math 120 in place of Math 21b.
4. Plans of study:Concentrators must le a Plan of Study showing how they
intend to satisfy these degree requirements, and keep their plan of study up to
date until their program is complete. If the plan is acceptable, the student will
be notied that it has been approved. To petition for an exception to any rule,
the student should le a new plan of study and notify the Director of
Undergraduate Studies of the rationale for any exceptional conditions.
Approval of a plan of study is the students guarantee that a given set of
courses will satisfy degree requirements. The Plan of Study form and a
description of the process to submit the form can be found here.

Requirements for Honors Eligibility: 12-14 courses (48-56 credits)

1. Required courses:
1. Basic mathematics (2-4 courses):Same as Basic Requirements. Note: for the
Honors requirements, students who start with Mathematics 1a may not
replace Mathematics 21a with Computer Science 20.
2. Basic software (2 courses):Same asBasic Requirements.
3. Theory (2 courses):Same asBasic Requirements.
4. Technical electives (6 courses):Courses may be drawn from the following list:

Computer Science courses numbered greater than 50 (including 91r).
Note that a student who takes all three of Computer Science 50,
Computer Science 51, and Computer Science 61 may count either
Computer Science 51 or Computer Science 61 as a technical elective.
Statistics 110
Mathematics 154
Applied Mathematics 106, 107, 120, and 121
Engineering Sciences 50 or Engineering Sciences 52
Manybut not allMIT Course 6 courses can be used as technical
electives. Consult the DUS before enrolling.

Breadth Requirement:

In order to ensure breadth in the program, three of the six technical electives
must be Computer Science courses from different course groupings identied
by the penultimate digit of the course number. For example, Computer Science
61 and Computer Science 165 both have penultimate digit 6.Physics 123 or
Engineering Sciences 153 counts as a Computer Science hardware
(penultimate digit 4) course.

3: Economics and Computation
4: Hardware and Networks
5: Programming Languages
6: Systems
7: Graphics, Visualization, and User Interfaces
8: Articial Intelligence
Note that theory courses (penultimate digit 2) do not count toward the breadth
requirement.

Computer Science courses with penultimate digit 0, 1, and 2 are valid technical
electives, but do not contribute to the breadth requirement. However, no
Computer Science course numbered less than 20 may be used in a
concentration program, and Computer Science 20 only in honors programs.

2. Tutorial:Same asBasic Requirements.


3. Thesis:Optional but encouraged. See honors requirements. Students writing theses
are often enrolled in Computer Science 91r. This course is repeatable, but may be
taken at most twice for academic credit, and only one semester of Computer
Science 91r may be counted toward concentration requirements. Students wishing
to enroll in Computer Science 91r must le a project proposalto be signed by the
student and the faculty supervisor and approved by the Director of Undergraduate
Studies.
4. General Examination:None.
5. Other information:
1. Approved courses. Same asBasic Requirements.
2. Pass/Fail and Sat/Unsat: Same asBasic Requirements.
3. Credit for prior work: Same asBasic Requirements.
4. Plans of Study: Same asBasic Requirements.

Requirements for Joint Concentrations: 36-44 credits for CS eld (9-11 courses for CS
eld)

Joint concentrations with certain other elds are possible. This option is intended for
students who have interests in the intersection of two elds, not simply in the two elds
independently; for example, a combined concentration in computer science and
linguistics might be appropriate for a student with a special interest in computational
linguistics. Course requirements are the same as for the Requirements for Honors
Eligibility, except that only three technical electives are required. These three technical
electives must satisfy the breadth requirement as stated in 1D, with the further provision
that one semester of Computer Science 91r may be used to satisfy the breadth
requirement for joint concentrations. Such courses may also be double-counted towards
the requirements of the other eld. Joint concentrations are not double majors. Joint
concentrators should be interested in the overlap between two elds, not simply in both. A
thesis in the intersection of the elds is required for joint concentrators, read by both
concentrations. The student is typically awarded the minimum honors recommended by
the two concentrations separately. These requirements, including the thesis requirement,
are the same whether Computer Science is the primary eld or the allied eld of the joint
concentration. Students interested in combined programs should consult the Director of
Undergraduate Studies at an early date and should work carefully with both
concentrations to ensure all deadlines and requirements of both concentrations are met.
Students with separate interests in more than one eld should consider a secondary
rather than a joint concentration, or simply using some of their electives to study one of
the elds.

The Mind, Brain, and Behavior Program


Students interested in addressing questions of neuroscience and cognition from the
perspective of computer science may pursue a special program of study afliated with
the University-wide Mind, Brain, and Behavior Initiative, that allows them to participate in a
variety of related activities. (Similar programs are available through the Anthropology,
History and Science, Human Evolutionary Biology, Linguistics, Neurobiology, Philosophy,
and Psychology concentrations.) Requirements for this honors-only program are based on
those of the computer science Requirements for Honors Eligibility, except that:

Statistics 110 or Computer Science 124 replaces the second theory course.
Statistics 110 is an option for the theory requirement only in the MBB track.
In item 1d, the six courses comprise:
MCB 80,
one approved biology or psychology course,
an approved MBB junior tutorial,
Computer Science 181 or 182,
and two courses from different course groupings, identied by the
penultimate digit of the course number (3, 4, 5, 6, 7). Group 8 is not
an option for the breadth requirement in MBB programs, but
Computer Science 91r may also be used to satisfy the breadth
requirement. (SLS 20 is not an approved course for the Computer
Science MBB track.)
In item 3, a computationally-oriented thesis on a Mind, Brain, and Behavior-related
topic is required. Students pursuing thesis research may want to enroll in Computer
Science 91r under item 1d.

Students pursuing the Mind, Brain, and Behavior track are assigned an adviser in the eld
and are expected to participate in the University-wide Mind, Brain, and Behavior research
milieu, including a non-credit senior year seminar for Mind, Brain, and Behavior thesis
writers. To participate in the MBB track, students must both complete the Computer
Science concentration Plan of Study and register at the beginning of every academic year
onthe MBB website. Interested students should contact the Computer Science liaison to
the MBB program, Professor Stuart Shieber (shieber@seas.harvard.edu).

ADVISING

Students interested in concentrating in Computer Science are urged to consult


theDirector of Undergraduate Studies early and often for advice on placement in courses
and selection among courses. TheDirector of Undergraduate Studies is happy to talk with
freshmen and sophomores about their Plans of Study and to answer questions. When a
student enters the concentration mid-way through the sophomore year, theDirector of
Undergraduate Studies assigns a professor to serve as the students faculty adviser. Every
effort is made to match the students special interests to the expertise of the adviser.
Students should consult their advisers regularly, certainly at the beginning of each term.
When a faculty adviser is on leave, the student is temporarily reassigned to a new adviser.
Students desiring a change of adviser for any reason should contact the Director of
Undergraduate Studies. TheDirector of Undergraduate Studies is also available to discuss
problems or questions of any kind with students in the concentration.

HOW TO FIND OUT MORE

Students interested in computer science are invited to join the mailing list for the
Computer Science Newsletter, which carries announcements of new courses, colloquia,
job and internship opportunities, and a variety of get-togethers for the Harvard computer
science community. Information about the newsletter and other community resources
can be found onthe Computer Science website.

For further information, students should consult the Director of Undergraduate Studies,
(cs-dus@seas.harvard.edu).

ENROLLMENT STATISTICS
Number of Concentrators as of December

Concentrators 2008 2009 2010 2011 2012 2013 2014 2015 2016

Computer Science 86 86 99 143 198 253 263 306 363

Computer Science +
4 7 10 13 17 22 32 42 47
another eld

Another eld +
4 8 10 15 7 18 21 24 25
Computer Science

You might also like