Planning, Degrees, & Courses
The Computer Science curriculum is designed to offer students a great deal of flexibility — with time for related study and for outside opportunities, from sports to clubs to hobbies.
You can combine your studies with other fields, including mathematics, physics, economics, psychology, and linguistics.
If you are eligible for advanced standing on the basis of AP tests you took before entering Harvard, you can consider the more intensive A.B. / S.M. option.
In addition to these web pages, the Unofficial Guide to Computer Science @ Harvard has a great deal of useful data and information about the program.
Planning
Placement
Most students start with CS 50, even if they have had an AP course in Computer Science. The course is designed to accommodate both students who are starting from scratch and students with prior programming experience. However, some students have sufficient programming background to skip CS 50 and start with CS 51 or 61. See the CS 50 FAQs for more advice, or consult the Director of Undergraduate Studies.
Students should consult with the Mathematics Department, Chemistry Department, and Physics Department for advice about appropriate placement in courses in those departments.
CS 20, Discrete Mathematics for Computer Science, teaches the mathematics needed for later computer science courses that is not covered in the calculus and linear algebra sequence in Mathematics and Applied Mathematics. Many students will not need to take CS 20, but students with no background in writing mathematical proofs should consider taking this course. Check the CS 20 web site for more information about whether to take CS 20 before taking the more advanced theory courses (CS 121 and 124).
Degree Programs
All undergraduates in Computer Science at Harvard are candidates for the Bachelor of Arts degree (A.B.).
Basic A.B. Program
The basic degree requirements are twelve halfcourses in mathematics, theoretical computer science, computer software, and other areas of computer science. Math courses cover calculus and linear algebra. Students who place out of part or all of the introductory calculus sequence, Mathematics 1ab, reduce their concentration requirements to 11 or 10 halfcourses.
Courses in theoretical computer science cover formal models of computation. Courses in computer software include the introductory sequence and courses on systems programming. Courses in other areas include courses such as computer architecture, programming languages, natural language processing, and computer graphics. In order to ensure breadth in the program, a plan of study must include courses in different subfields of computer science.
See the Fields of Concentration page for full details.
Honors A.B. Program
To be eligible to graduate with honors, students must be recommended for honors by their concentration program, and also satisfy certain Collegewide requirements documented in the Handbook for Students. To be recommended for honors in Computer Science, students must have a high grade point average and must also fulfill a more demanding course program than the basic program. The honors program requires 14 halfcourses instead of 12 (12 instead of 10 for students who place out of Mathematics 1ab). The honors program also requires greater breadth within Computer Science (see the Fields of Concentration for the details).
Recommendations for all degrees of honors are decided individually by vote of the Computer Science faculty based on the student's academic and scientific achievements. Ordinarily a recommendation for Honors requires a concentration GPA of at least 3.5 in the courses on the student's Computer Science study plan, a recommendation for High Honors requires a concentration GPA of at least 3.75 and an excellent thesis, and a recommendation for Highest Honors requires a concentration GPA of at least 3.85 and an outstanding thesis.
Joint Concentration
It is possible to concentrate jointly in Computer Science and another field. However a joint concentration is not a “double major.” The two fields must overlap in a way that will enable the candidate to write a senior thesis acceptable to both departments. Most joint concentrations with Computer Science are with Mathematics, though other combinations are possible. See the Fields of Concentration for more information.
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 affiliated with the Universitywide 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 honorsonly program are based on those of the computer science Requirements for Honors Eligibility. See the Fields of Concentration for more information.
A.B./S.M. Option
Students who are eligible for Advanced Standing on the basis of A.P. tests before entering Harvard may be able to apply for admission to the S.M. program of the Graduate School of Arts and Sciences and graduate in four years with both a bachelor’s and master’s degree (not necessarily in the same field). More information about the Advanced Standing program at Harvard is available from the Advising Programs Office. Students should consult both the Director of Undergraduate Studies and their Allston Burr Resident Dean about the advisability of pursuing this option, which is very demanding and may preclude other educational opportunities.
Secondary Field
Information technology and computation has had a profound impact on many aspects of society, health care, and the scientific disciplines. As such, a foundation of formal training in Computer Science can benefit undergraduate concentrators in many fields of the natural sciences, social sciences, and humanities. To provide this training, a secondary field in Computer Science requires that students concentrating in other fields take four courses in Computer Science numbered greater than or equal to 50, excluding CS 91r. Collegewide rules stipulate that one, but not more than one, halfcourse may count toward both the concentration and the secondary field.
Courses
SEAS offers undergraduate and graduate courses in Computer Science. SEAS faculty also offer several courses in the section entitled Freshman Seminars. Many additional courses of interest to concentrators can be found in the Applied Mathematics, Engineering Sciences, Mathematics, Physics, and Statistics sections of the catalog.
Sample Schedules for Concentrators
Below are some suggested paths for the freshman and sophomore years in the Computer Science concentration. There are many possible pathways through the degree. Interested students should consult with the Director of Undergraduate Studies for guidance.
A.B. Degree (Basic Track)
Schedule 1  Student has no advanced placement credit for mathematics or computer science.
Year Fall Courses
Spring Courses
Freshman Year 


Sophomore Year 


A student who takes all of Math 1a, Math 1b, Math 21b, and CS 20, need not also take Math 21a.
Schedule 2A  Student places out of Math 1a.
Year Fall Courses
Spring Courses
Freshman Year 


Sophomore Year 


Schedule 2B  Student places out of Math 1a and Math 1b.
Year Fall Courses
Spring Courses
Freshman Year 


Sophomore Year 

Schedule 3  Student starts in sophomore year.
It is possible for a student to start in CS 50 in the sophomore year. Any of the above schedules could be changed to have CS 50 in the second year. As an example, see a revised version of schedule 1 shown below:
Year Fall Courses
Spring Courses
Freshman Year 


Sophomore Year 


Junior Year 

With this schedule, a student would want to take additional CS classes in the fall
and spring of the junior year.
Advanced /Honors Students
Students whose background in both mathematics and computer science is unusually strong may want to take a course other than CS 50 for the first term. There are three recommended alternatives. The first is CS 61, Programming and Machine Organization.
The second is CS 121, the basic course in the theory of computation. This is recommended for students who are mathematically inclined and is required for all CS concentrators. The second alternative is CS 141, Computing Hardware. This is recommended for students who are inclined to experimental systems. A possible schedule is:
Schedule 4  Advanced Students
Year Fall Courses
Spring Courses
Freshman Year 


Sophomore Year 


Schedule 5  Honors Students
The recommended program is similar for the freshman and sophomore years (Schedules 1–3). As mentioned, the Honors track has an additional two technical electives over the Basic concentration. A student who is considering the Honors program should consider taking a technical elective in the spring of the sophomore year.
Suggested Courses for the Secondary Field
It’s up to you, but here are some popular choices. Graduatelevel (200level) courses are also allowed!
Popular among “those less comfortable”
 CS 50: Introduction to Computer Science I
 CS 105: Privacy and Technology
 CS 171: Visualization
 CS 179: Design of Usable Interactive Systems
Popular among “those more comfortable”
 CS 51: Introduction to Computer Science II
 CS 61: Systems Programming and Machine Organization
 CS 121: Introduction to Formal Systems and Computation
 CS 161: Operating Systems
Popular among students interested in finance
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 109: Data Science
 CS 136: Economics and Computation
 CS 171: Visualization
 CS 181: Intelligent Machines: Perception, Learning, and Uncertainty
 CS 182: Intelligent Machines: Reasoning, Actions, and Plans
Popular among students interested in life sciences
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 124: Data Structures and Algorithms
 CS 171: Visualization
Popular among students interested in math
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 121: Introduction to Formal Systems and Computation
 CS 124: Data Structures and Algorithms
Popular among students who want to manage technical projects
 CS 50: Introduction to Computer Science I
 CS 105: Privacy and Technology
 CS 124: Data Structures and Algorithms
 CS 165: Information Management
Popular among students interested in solving problems efficiently
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 121: Introduction to Formal Systems and Computation
 CS 124: Data Structures and Algorithms
Popular among students interested in hardware
 CS 50: Introduction to Computer Science I
 CS 61: Systems Programming and Machine Organization
 CS 141: Computing Hardware
 CS 148: Design of VLSI Circuits and Systems
Popular among students interested in programming languages
 CS 51: Introduction to Computer Science II
 CS 61: Systems Programming and Machine Organization
 CS 152: Programming Languages
 CS 153: Compilers
Popular among students interested in networks
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 143: Computer Networks
 CS 144r: Network Design Projects
Popular among students interested in graphics
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 171: Visualization
 CS 175: Computer Graphics
Popular among students interested in speech recognition
 CS 50: Introduction to Computer Science I
 CS 51: Introduction to Computer Science II
 CS 182: Intelligent Machines: Reasoning, Actions, and Plans
 CS 187: Computational Linguistics