Course Listing

For a snapshot of courses being offered by Harvard School of Engineering over the next four years, visit our Multi Year Course Planning tool.

Discrete Mathematics for Computer Science

COMPSCI 20
2027 Spring

Adam Hesterberg
Monday, Wednesday, Friday
9:45am to 11:00am

Widely applicable mathematical tools for computer science, including topics from logic, set theory, combinatorics, number theory, probability theory, and graph theory. Practice in reasoning formally and proving theorems.

Course Website

Introduction to Computer Science

COMPSCI 50
2026 Fall

David J. Malan
Monday
1:30pm to 4:15pm

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (More than half of CS50 students have never taken CS before!) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project. See https://cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Introduction to Computer Science

COMPSCI 50
2026 Spring

David J. Malan, Kelly Ding

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (More than half of CS50 students have never taken CS before!) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project. See https://cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Introduction to Computer Science (for students who cannot take it in fall)

COMPSCI 50
2027 Spring

David J. Malan, Kelly Ding
Tuesday
9:00am to 11:45am

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (More than half of CS50 students have never taken CS before!) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project. See https://cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Introduction to Computer Science (for students who cannot take it in fall)

COMPSCI 50
2027 Spring

David J. Malan, Kelly Ding
Wednesday
6:00pm to 8:45pm

This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming, for concentrators and non-concentrators alike, with or without prior programming experience. (More than half of CS50 students have never taken CS before!) This course teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. Topics include computational thinking, abstraction, algorithms, data structures, and computer science more generally. Problem sets inspired by the arts, humanities, social sciences, and sciences. More than teach you how to program in one language, this course teaches you how to program fundamentally and how to teach yourself new languages ultimately. The course starts with a traditional but omnipresent language called C that underlies today's newer languages, via which you'll learn not only about functions, variables, conditionals, loops, and more, but also about how computers themselves work underneath the hood, memory and all. The course then transitions to Python, a higher-level language that you'll understand all the more because of C. Toward term's end, the course introduces SQL, via which you can store data in databases, along with HTML, CSS, and JavaScript, via which you can create web and mobile apps alike. Course culminates in a final project. See https://cs50.harvard.edu/college for advice, FAQs, syllabus, and what's new. Email the course's heads at heads@cs50.harvard.edu with questions.

Course Website

Systems Programming and Machine Organization

COMPSCI 61
2026 Fall

Eddie Kohler
Monday, Wednesday
9:45am to 11:00am

Fundamentals of computer systems programming, including data representation, storage, process management, and synchronization. This course provides a solid background in systems programming and an understanding of the interactions between computer software and hardware. Topics include C++ and assembly language programming, operating systems kernels and system calls, memory hierarchy and caching, processes, threads, and synchronization.

Course Website

Systems Programming and Machine Organization

COMPSCI 61
2027 Spring

Eddie Kohler
Tuesday, Thursday
12:45pm to 2:00pm

Fundamentals of computer systems programming, including data representation, storage, process management, and synchronization. This course provides a solid background in systems programming and an understanding of the interactions between computer software and hardware. Topics include C++ and assembly language programming, operating systems kernels and system calls, memory hierarchy and caching, processes, threads, and synchronization.

Course Website

Code, Data, and Art

COMPSCI 73
2026 Fall

Fernanda Viegas, Martin Wattenberg
Tuesday, Thursday
11:15am to 12:30pm

A studio course where software is used as an artistic medium. The course is designed to expose students to current perspectives on the intersection of computer science and art, and to build skills that will allow them to express themselves creatively via software. An additional focus will be the role of data in modern artistic practice.

Course Website

Design of Useful and Usable Interactive Systems

COMPSCI 79
2026 Fall

Krzysztof Gajos
Monday, Wednesday
12:45pm to 2:00pm

Formerly CS 179, the course covers skills and techniques necessary to design innovative interactive products that are useful, usable and that address important needs of people other than yourself. You will learn how to uncover needs that your customers cannot even articulate. You will also learn a range of design principles, effective creativity-related practices, and techniques for rapidly creating and evaluating product prototypes. You will also have several opportunities to formally communicate your design ideas to a variety of audiences. You will complete two large team-based design projects.

Course Website

Supervised Reading and Research

COMPSCI 91R
2027 Spring

Stephen Chong, Adam Hesterberg, Eddie Kohler

Supervised individual study of advanced topics in computer science. A student wishing to enroll in Computer Science 91r must be accepted by a faculty member who will supervise the course work. Additional information and a form are available via https://harvardcs.info/forms/#cs-91r-form. The form must be filled out and signed by the student and faculty supervisor. Students writing theses may enroll in this course while conducting thesis research and writing.

Course Website

System Design Projects: Machine Learning for Social Impact

COMPSCI 96
2027 Spring

Milind Tambe
Monday, Wednesday
12:45pm to 2:00pm

Student teams will work with real partner organizations to use machine learning techniques on a directly impactful project. Students will learn how to effectively explore data, create and iterate on real models, communicate and work with external partners, and incorporate ethics into their technical work. The class will include guest lectures from experts in various fields of the social impact tech space.

Course Website

Privacy and Technology

COMPSCI 1050
2026 Fall

Jim Waldo
Tuesday, Thursday
12:45pm to 2:00pm

What is privacy, and how is it affected by recent developments in technology? This course critically examines popular concepts of privacy and uses a rigorous analysis of technologies to understand the policy and ethical issues at play. Case studies: database anonymity, research ethics, wiretapping, surveillance, and others. Course relies on some technical material, but is open and accessible to all students, especially those with interest in economics, engineering, political science, computer science, sociology, biology, law, government, philosophy.

Course Website

Data Science 1: Introduction to Data Science

COMPSCI 1090A
2026 Fall

Pavlos Protopapas, Natesh Sivasubramonia Pillai
Monday, Wednesday
10:30am to 11:45am

Data Science 1 is the first half of a one-year introduction to data science. The course focuses on the analysis of messy, real-life data to make predictions using statistical and machine learning methods. Material covered integrates the five key facets of an investigation using data: (1) data collection – data wrangling and cleaning to obtain a suitable dataset; (2) data management – accessing data quickly and reliably; (3) exploratory data analysis – generating hypotheses and building intuition; (4) prediction or statistical learning – developing and applying models such as linear and logistic regression, k-nearest neighbors, decision trees, and probabilistic approaches based on Bayes’ rule; and (5) communication – summarizing results through visualization, storytelling, and interpretable summaries.

This is the first part of a two-course sequence. The curriculum builds throughout the academic year, and students are strongly encouraged to enroll in both the fall and spring courses within the same academic year.

Course Website

Data Science 2: Advanced Topics in Data Science

COMPSCI 1090B
2027 Spring

Pavlos Protopapas, Natesh Sivasubramonia Pillai
Monday, Wednesday
9:45am to 11:00am

Data Science 2 is the second half of a one-year introduction to data science. Building upon the material in Data Science 1, the course introduces advanced methods for statistical modeling, representation, and prediction. Topics include multiple deep learning architectures such as CNNs, RNNs, transformers, language models, autoencoders, and generative models as well as basic Bayesian methods, and unsupervised learning. Students are strongly encouraged to enroll in both the fall and spring course within the same academic year. Part two of a two-part series.

Course Website

Introduction to Algorithms and their Limitations

COMPSCI 1200
2027 Spring

Salil Vadhan
Monday, Wednesday
12:45pm to 2:00pm

An introductory course in theoretical computer science, aimed at giving students the power of using mathematical abstraction and rigorous proof to understand computation. Thus equipped, students will be able to design and use algorithms that apply to a wide variety of computational problems, with confidence about their correctness and efficiency, as well as recognize when a problem may have no algorithmic solution. At the same time, they will gain an appreciation for the beautiful mathematical theory of computation that is independent of (indeed, predates) the technology on which it is implemented.

Course Website

Introduction to Theoretical Computer Science

COMPSCI 1210
2026 Fall

Madhu Sudan
Monday, Wednesday
2:15pm to 3:30pm

Computation occurs over a variety of substrates including silicon, neurons, DNA, the stock market, bee colonies and many others. In this course we will study the fundamental capabilities and limitations of computation, including the phenomenon of universality and the duality of code and data. Some of the questions we will touch upon include: Are there functions that cannot be computed? Are there true mathematical statements that can't be proven? Are there encryption schemes that can't be broken? Is randomness ever useful for computing? Can we use the quirks of quantum mechanics to speed up computation?

Course Website

Introduction to Graph Theory

COMPSCI 1251
2026 Fall

Adam Hesterberg
Tuesday, Thursday
3:45pm to 5:00pm

Introduces core topics in graph theory: forests, (k-)(edge-)connectivity, (outer)planarity, (induced) subgraphs, graph minors, matchings (in not-necessarily-bipartite graphs), colorings, and (nowhere-zero) flows. Discusses the Four-Color Theorem, that every planar graph's vertices can be colored with four colors, and builds up the graph-theoretic machinery necessary for an understanding of its generalization and successor as a major open problem, Hadwiger's conjecture.

Course Website

Convex Optimization and Applications in Machine Learning

COMPSCI 1280
2027 Spring

Yiling Chen
Monday, Wednesday
11:15am to 12:30pm

This course focuses on recognizing, formulating, and solving convex optimization problems. We will introduce basic convex analysis, discuss convex optimization theory, introduce algorithms for solving convex optimization problems, and touch on some advanced topics. We will explore all these in the context of machine learning applications, as almost every machine learning problem can be formulated as an optimization problem. The objective is to provide students with the theoretical training to recognize and formulate convex optimization problems and to equip them with the tools and methods to solve the problems of interest.

Course Website

Computing Hardware

COMPSCI 1410
2026 Fall

Woodward Yang
Monday, Wednesday
12:45pm to 2:00pm

This course delves into the design principles and practices of high performance digital computing systems that are cost effectively and reliably manufactured with billions of near atomic scale semiconductor components. Key abstractions and foundational concepts are emphasized as the course covers the basic operation of CMOS transistors and logic gates, combinational and sequential logic including Finite State Machines (FSMs), digital memory subsystems, and machine code culminating with the implementation of a MIPS processor. Lab assignments will focus on the practical aspects of digital hardware design by utilizing Field Programmable Gate Arrays (FPGAs), Verliog (Hardware Description Language) and advanced CAD tools for the design, simulation and verification of digital computing hardware.

Course Website

Networking at Scale

COMPSCI 1450
2027 Spring

Minlan Yu
Tuesday, Thursday
11:15am to 12:30pm

This course studies computer network topics including Layer 2/Layer 3 topology, routing, transport protocols, traffic engineering, network functions, programmable switches, and software-defined networking. Modern networks have grown to large scale (connecting millions of servers) and high speed (terabits per second) to meet the needs of cloud applications in business and society. Thus, in addition to learning the conventional concepts in networking, we will also discuss how to adapt these concepts to large-scale networks. These discussions will hopefully help deepen our understanding of networking technologies. This course includes lectures and system programming projects. More information can be found at https://github.com/minlanyu/cs145-site.

Course Website