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

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

Systems Programming and Machine Organization

COMPSCI 61
2027 Spring

Eddie Kohler, Juncheng Yang
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