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.

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

COMPSCI 50
2027 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

Build at the Speed of Thought

COMPSCI 1066
2026 Fall

Michael Smith
Monday, Wednesday
3:45pm to 5:00pm

People use generative AI to build all kinds of artifacts, from travel itineraries to software systems, and these sorts of things require structure, a clarity of purpose, and an understanding of today's AI systems. Students will learn how to partner with AI to build complex tools from software components, for both personal use and sharing with others. This involves learning how to effectively direct an AI, understand what it did (and didn't do), employ software engineering techniques like testing and version control, and evaluate different AI models. 

Course Website

Planning and Learning Methods in AI

COMPSCI 1820
2026 Fall

Stephanie Gil
Monday, Wednesday
12:45pm to 2:00pm

Artificial Intelligence (AI) is already making a powerful impact on modern technology, and is expected to be even more transformative in the near future. The course introduces the ideas and techniques underlying this exciting field, with the goal of teaching students to identify effective representations and approaches for a wide variety of computational tasks. Topics covered in this course are broadly divided into search and planning, optimization and games, and uncertainty and learning. Special attention is given to ethical considerations in AI and to applications that benefit society. For more information please see the course website.

Course Website

Economic Analysis as a Frontier of Theoretical Computer Science

COMPSCI 2370
2026 Fall

Yannai Gonczarowski
Monday, Wednesday
1:30pm to 2:45pm

How can we use tools from statistical learning theory to design better auctions? Can we use cryptography to better implement matching mechanisms? And how should we approach formally proving that welfare in Nash equilibria for many games is not "much worse" than in the social optimum? This course explores the application of diverse ideas, techniques, and solution aesthetics from theoretical computer science to derive meaningful new insights into classic economic problems. The three main themes are approximation theorems (including bounding the loss in revenue or welfare due to lack of information, to strategic behavior, or to impracticality of the optimal mechanism); various notions of complexity (including computational complexity, communication complexity, and sample complexity); and cryptographic tools (including cryptographic commitments, multiparty computation, and zero-knowledge proofs). Economic applications mostly include analysis of equilibria, pricing, and mechanism design.

Course Website