Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets inspired by the arts, humanities, social sciences, and sciences. Course culminates in a final project.


This spring version of CS50 is for SEAS concentrators (or secondaries) who were unable to take the course in Fall 2020. All students, including concentrators and non-concentrators, are encouraged to take CS50 in fall term instead. See for differences between fall term and spring term. Students must register via my.harvard for and attend weekly class meetings via Zoom on Tuesdays, 3pm–5pm ET. Instructor-led tutorials to be arranged. CS50 is ordinarily graded SAT/UNS, though students whose concentration requires letter grades should change their grading status to letter-graded by the term’s fifth Monday. Students may take CS50 SAT/UNS to fulfill the Science and Engineering and Applied Science distribution requirement or the Quantitative Reasoning with Data requirement, but not both. First years may take both CS50 and a freshman seminar SAT/UNS.

First Lecture