• The final project’s implementation has been posted and is due 2023-03-03T23:59:00-05:00. There are no extensions or late submissions allowed for the final project. Good luck finishing up!

  • Review the course’s syllabus for an overview of expectations, course topics, important dates, and other course policies, including those pertaining to grading, lateness, and extensions.
  • Review the course’s policy surrounding academic honesty and contact Doug if you have any questions about it. We take this policy seriously and expect all students to adhere to it.


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. (Two thirds 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.