Syllabus

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. Designed for concentrators and non-concentrators alike, with or without prior programming experience. Two thirds of CS50 students have never taken CS before. Among the overarching goals of this course are to inspire students to explore unfamiliar waters, without fear of failure, create an intensive, shared experience, accessible to all students, and build community among students.

Expectations

You are expected to

  • submit ten problem sets,
  • submit ten labs, and
  • submit a final project.

Certificates

CS50x is free to take, and you are welcome to submit the course’s ten problem sets and final project for automated feedback. To be eligible for a verified certificate from edX, however, you must receive a satisfactory score (at least 70%) on each problem you submit as part of one of the course’s ten problem sets as well as on the course’s final project.

Problems are evaluated along axes of correctness (as determined by a program called check50) and style (as determined by a program called style50), with scores ordinarily computed as 3 × correctness + 1 × style.

Books

No books are required or recommended for this course. However, you might find the below books of interest. Realize that free, if not superior, resources can be found on the course’s website.

Hacker’s Delight, Second Edition
Henry S. Warren Jr.
Pearson Education, 2013
ISBN 0-321-84268-5

How Computers Work, Tenth Edition
Ron White
Que Publishing, 2014
ISBN 0-7897-4984-X

Programming in C, Fourth Edition
Stephen G. Kochan
Pearson Education, 2015
ISBN 0-321-77641-0

Lectures

The course’s lectures introduce each week’s concepts.

Walkthroughs

Integrated into problem sets are “walkthroughs,” videos that offer direction on where to begin and how to approach problems.

Labs

Labs are programming exercises that prepare you for the week’s problem set.

Problem Sets

Problem sets are programming assignments. CS50x does not have deadlines for problem sets. You are welcome to work on and submit them at your own pace. To be eligible for a verified certificate from edX, however, you must submit (and receive a score of at least 70% on) all problem sets by 31 December 2021.

Final Project

The climax of this course is its final project. The final project is your opportunity to take your newfound savvy with programming out for a spin and develop your very own piece of software. So long as your project draws upon this course’s lessons, the nature of your project is entirely up to you. You may implement your project in any language(s). You are welcome to utilize infrastructure other than the CS50 IDE. All that we ask is that you build something of interest to you, that you solve an actual problem, that you impact your community, or that you change the world. Strive to create something that outlives this course.

Inasmuch as software development is rarely a one-person effort, you are allowed an opportunity to collaborate with one or two classmates for this final project. Needless to say, it is expected that every student in any such group contribute equally to the design and implementation of that group’s project. Moreover, it is expected that the scope of a two- or three-person group’s project be, respectively, twice or thrice that of a typical one-person project. A one-person project, mind you, should entail more time and effort than is required by each of the course’s problem sets. Although no more than three students may design and implement a given project, you are welcome to solicit advice from others, so long as you respect the course’s policy on academic honesty.

CS50x does not have a deadline for the final project. You are welcome to work on and submit it at your own pace. To be eligible for a verified certificate from edX, however, you must submit (and receive a score of at least 70% on) it by 31 December 2021.

Academic Honesty

Please see Academic Honesty for guidelines.