For answers to other questions, do just ask in any of CS50’s communities!

Should I Take This Course?

Am I or my child too young to take this course?

Our courses are perhaps best suited for learners ages 12 and up. Younger learners might need a hand from a parent. Please note that depending on your locale, laws, and policies may prevent learners under certain ages from utilizing free third-party services associated with this course. Accordingly, younger learners may need your assistance in signing up for these free services.

Does this course have prerequisites?

While you are not required to take or show proof that you have passed a previous course, it is highly recommended that you examine our course map to determine if this class is the right one for you at this point in your development as a learner.

Can this course be used to fulfill official academic requirements for my university, college, or school?

Our free and verified certificates are not accredited academic offerings from Harvard or any of its affiliate institutions. We offer these certificates for self-educational and vocational purposes.

Schools and universities throughout the world have varying rules about what specifically they will accept for academic transfer credit. Accordingly, you should speak to your specific academic advisors about your individual situation. It’s possible (though you will have to verify with your advisors) that our certificate will satisfy their requirements.

If you are looking for an accredited academic course or certificate at the undergraduate or graduate level, consider exploring Harvard Extension.

If you are a high school student looking for academic credit, best to show your teacher or academic counselor CS50 AP. You will need to obtain their authorization to gain official academic credit. You are very welcome to take this or any of our courses. However, only your official school representatives can provide you with academic credit for completing any of our courses.

Signing Up

How do I sign up for the course?

You can sign up by following the instructions on the course page.

What’s the difference between a verified certificate and a CS50 Certificate?

A verified certificate, which you can purchase from edX, “can provide proof for an employer, school, or other institution that you have successfully completed an online course.”

A CS50 Certificate is a free certificate from CS50 itself.

If I sign up for a verified certificate, can I also get a free certificate?


Do I have to pay for verification before starting the course?

Nope! If you would like a verified certificate from edX, you can pay for verification at any point, even after completing all of the coursework. However, we do recommend, to avoid any logistical issues that can delay certificate issuance, that you verify before finishing the course. Otherwise, the 30-day wait we reference below only starts once you have had your identity verified by edX.

If I paid for a verified certificate after I completed the course, do I need to tell you?

No. As long as your Gradebook shows that you have completed the course, you will receive your certificate up to 30 days after your identity is verified by edX.

If I paid for a verified certificate before this calendar year, do I need to pay again?

No, your verification should be good for an entire year, but if it has expired, you should be able to re-verify yourself via edX’s dashboard.

Tracking Your Progress

How do I know if I have completed all requirements for a certificate?

Your Gradebook shows the result for each assignment submission for the most current version of the course. The top of your Gradebook shows your current status in the course, showing the number of required assignments you have completed. If your Gradebook states that you are not enrolled in the course, best to enroll and start completing the required assignments.

This course requires multiple assignments to be submitted in some weeks and only one assignment in other weeks. When you have completed requirements for a given week (as by receiving a score of 70% or higher on all required problems), the week number will be shown in green, and your progress indicator will be updated to reflect that.

Once you have scored at least a 70% on all required assignments, you will see a green banner atop that page, confirming your completion.

What / where is the Gradebook for this course?

CS50x uses our own Gradebook. If you’ve never visited that link before, you’ll need to click the link to “enroll,” which really just enables your Gradebook access!

Does this course have grades?

No. This course has numeric scores. An assignment that receives a score of 70% or higher is considered passing.

Does my Gradebook only show if I scored high enough to pass a problem? How can I see my actual numeric grades?

Your Gradebook will display a green check if you passed a submitted assignment and a red check if you did not pass a submitted assignment.

Your overall problem score is weighted 75% for correctness and 25% for style. In order to receive the green tick indicating completion, your overall score must be 70% or higher. As an example, if your check50 score is 7/8 and your style score is 0.95, your overall score will be (7/8 * 0.75) + (0.95 * 0.25) = 89%. You can click the problem name in your Gradebook to see your individual check50 and style50 scores.

I completed an assignment or this course in a prior year. Why does my Gradebook no longer show my prior progress?

At the start of each calendar year, we clean up our Gradebook and “reset” it. What happened to your progress depends on when you last submitted an assignment for the course.

Why does edX think my grade is 0%?

This course does not use edX’s built-in gradebook, so all students’ scores always appear (in edX’s gradebook) as 0%. Not to worry, see your Gradebook for your actual results.

I watched all the videos in edX: Why don’t I have a certificate?

This course has numerous assignments that must be completed in addition to watching the course lectures. Best to see the course menu, which lists the various assignments for the course.

Why does my edX dashboard say I can “resume” the course even though I have completed it?

As mentioned previously, this course does not use edX’s built-in gradebook. Therefore, unless you obtain a verified certificate, your edX gradebook will never show you have completed the course. If you are obtaining a verified certificate, “resume” will disappear once you have been issued your verified certificate.

Problem Sets, Assignments, and Assessments

Does this course have a test?

This course does not have a summative test or “final.” While our courses at Harvard College and Harvard Extension often have final tests, this course does not. You need only complete the assignments listed in each week or module of the course.

What’s the difference between “less comfortable” and “more comfortable” problems? Do I have to do both?

In some earlier problem sets, you’ll have a choice between a “less comfortable” and a “more comfortable” problem.

The “less comfortable” problems are what you might consider the “standard” version of the problem, designed for students who have little or no prior experience. The “more comfortable” problems are the “challenge” version, designed for students who consider themselves more comfortable due to prior study/experience before this class. As such, they may require more concepts than have been covered in the course so far.

If you find yourself really struggling with the “more comfortable” version, you should switch to the “less” version (or if you’ve already completed that, simply move on and perhaps revisit in a later week). It would be better for you to skip the problem than to become so frustrated as to drop out of the course entirely. For reference, in the Fall 2019 Harvard class, only 20-30% of students submitted the “more comfortable” problems.

You don’t get any extra points for doing the “more comfortable” problems. If you submit both, the one with the highest grade will count towards your overall course progress.

Did you get my submission?

Once you execute the submit50 command with the appropriate slug as instructed by the assignment specification, your Gradebook will be immediately updated with your passing status, provided that your submission was passing! Before using submit50, best to use check50 to make sure you have completed the entire problem before submission.

I submitted a project, but nothing is showing up in my Gradebook yet showing that I’ve submitted. Why?

Provided that you have executed the submit50 command with the appropriate slug as instructed by the assignment specification, your passing status should immediately posted to your Gradebook. First, best to run check50 on your assignment to ensure it fulfills the requirements. Second, if that still does not work, ensure that the GitHub username you are using to login into CS50.dev is the same GitHub username that appears at the top of your Gradebook.

If I submitted a problem and did not reach the 70% passing grade, can I resubmit?

Yes! You may resubmit; we will only count your most recent submission towards your progress. See the Grades section below for more details.

If my check50 score is not as expected, why might that be?

Your check50 score is accurate. After running check50, note that a URL will be provided linking you to your results. Note that check50 will look for precise fulfillment of the checks. Hence, if it is expecting a line break after an output and no such line break exists, the check will show as unfulfilled. In some cases, the expected and actual output may look exactly the same in the check50 results. In such an instance, best to consider how spaces and other non-visible characters may be at play. Of course, it’s also possible that you have misunderstood a portion of the assignment and need to re-read the problem set specification.

If my style score is not as expected, why might that be?

Your style grade will be based on the style50 results for every source code file in your submission. When you run submit50, be sure that your folder includes only those files that are necessary for the problem set. If you have any extra test files in there, those will be counted towards your grade. Remove the extra files from the folder and resubmit to get an updated Style score.

Why did I get a 50% on my final project?

This error is caused by your documentation (your readme or design file) not fulfilling the stated requirements. The documentation file should be quite robust. Students that don’t complete a lengthy documentation file, including MANY paragraphs will not receive a passing grade. You are highly advised to create a documentation file about 750 words in length, including the precise sections mentioned by the problem set specification. This will ensure that your documentation file includes all the details required for you to be able to pass.

If I did 70% of the problems, do I get a certificate?

No. You must do all the required assignments and receive at least a score of 70% on each.

Am I cheating?

Best to refer to our Academic Honesty policy to see.


When are the deadlines?

CS50x does not have individual deadlines for assignments. You are welcome to work on and submit at your own pace.

The overall deadline for the course is currently end-of-day, Eastern time, on 31 December 2023 at 11:59PM. For your convenience, we will often render this time in your local timezone (2023-12-31T23:59:00-05:00).

If all required work is turned in before the above time and ultimately receives a satisfactory grade (whether before or shortly after that deadline), you will be considered to have completed CS50x.

If I don’t finish the course before 31 December 2023, what will happen?

On 1 January 2024, the course will be updated to a 2024 version. Your progress from 2023 will be carried forward to the 2024 version (see below). After 31 December 2023, you may only submit the 2024 version’s problem sets and will need to satisfy whatever requirements are in place for CS50x 2024. Your carryover progress (as described below) from 2022 or prior will not carry forward into 2024, however.

If I started CS50x before 2023, can I resume?

Yes, any progress you made on past years’ problem sets has been carried forward to your CS50x 2023 gradebook. Note that individual problem results from past years are not shown, but if the corresponding problem set and lab was completed, you’ll see it marked with a green circle and included in your progress bar at the top. Moving forward, though, you must submit CS50x 2023’s problem sets and labs. Work from prior versions of the course may not be submitted for credit.

Here is how you should transition from the 2022 course to the 2023 course:

Completed in 2022 Resume your studies with
No Problem Sets Week 0 and Problem Set 0 of CS50x 2023.
Problem Set 0 Week 1, Lab 1, and Problem Set 1 of CS50x 2023.
Problem Sets 0 – 1 Week 2, Lab 2, and Problem Set 2 of CS50x 2023.
Problem Sets 0 – 2 Week 3, Lab 3, and Problem Set 3 of CS50x 2023.
Problem Sets 0 – 3 Week 4, Lab 4, and Problem Set 4 of CS50x 2023.
Problem Sets 0 – 4 Week 5, Lab 5, and Problem Set 5 of CS50x 2023.
Problem Sets 0 – 5 Week 6, Lab 6, and Problem Set 6 of CS50x 2023
Problem Sets 0 – 6 Week 7, Lab 7, and Problem Set 7 of CS50x 2023.
Problem Sets 0 – 7 Week 8, Lab 8, and Problem Set 8 of CS50x 2023.
Problem Sets 0 – 8 Week 9, Lab 9, and Problem Set 9 of CS50x 2023.
Problem Sets 0 – 9 Week 10 and the Final Project of CS50x 2023.

How will the work I completed as part of CS50x 2022 carry forward into CS50x 2023?

Credit was given for work done in CS50x 2022 as follows. Note that you must have completed1 each row in a box in the left column before 1 January 2023 in order to have received credit for the corresponding problem set(s) and lab(s) in the right column. If you have only completed some of the items in a box in the left column, no credit will be given for that work. (The carryover is done on a per-week basis, not a per-problem basis.) Visit your CS50x Gradebook to see the weeks that have been credited, if any.

Completed1 in CS50x 2022 Credit equivalent in CS50x 2023
Scratch Problem Set 0
Mario (Less) OR Mario (More)
Cash OR Credit
Problem Set 1
Lab 1
Caesar OR Substitution
Lab 2
Problem Set 2
Lab 2
Runoff OR Tideman
Lab 3
Problem Set 3
Lab 3
Filter (Less) OR Filter (More)
Lab 4
Problem Set 4
Lab 4
Lab 5
Problem Set 5
Lab 5
Hello (Python)
Mario (Less) (Python) OR Mario (More) (Python)
Cash (Python) OR Credit (Python)
Readability (Python)
Lab 6
Problem Set 6
Lab 6
Lab 7
Problem Set 7
Lab 7
Lab 8
Problem Set 8
Lab 8
Lab 9
Problem Set 9
Lab 9
Final Project Final Project

1 By completed, we mean you earned a score of 70% or better on the problem before 1 January 2023.

Will the work I completed for CS50x 2022 (or prior) carry forward into CS50x 2024?

Work completed in CS50x 2022 or prior is not subject to carry-forward for progress. Only work completed in CS50x 2023 will carry forward. This means if you received a credit for past work that carried forward into CS50x 2023, that credit will no longer be valid as of 1 January 2024, and you may need to redo (or at least resubmit!) some assignments. What this effectively means is that, depending on when in the calendar year you begin, you have between 12 and 24 months to complete CS50x without needing to circle back and start resubmitting assignments. We know, particularly for folks who are trying to finish the course right at the end of December, that this can prove difficult, but unfortunately, we cannot make any exceptions to this rule for any reason. We therefore encourage you, if possible, to avoid trying to rush to complete the course at the deadline and instead spread your studies out over a reasonable stretch of time.

Will the work I completed for CS50x 2023 carry forward into CS50x 2024?

Yes. We will announce exactly how that will happen in November or December 2023, but it is reasonable to assume that carryover will occur in a similar manner to how the 2022-to-2023 transition took place, as referenced above.

Obtaining Your Certificate

How do I get my free CS50 Certificate?

Once you have completed the course and met all of the requirements (per the above), you’ll see a link on your Gradebook page allowing you to request a free CS50 Certificate, much like the one shown here. This link will be available within approximately four hours after you receive your score for your last required assignment and your progress bar in your Gradebook indicates course completion. Once this link appears, you should then proceed to log in using your GitHub credentials. If you have trouble accessing it, try logging out of GitHub and back in, then revisit the link to download your certificate. Be sure to request your certificate before 1 January.

How do I get my verified certificate from edX?

Every few weeks, CS50’s staff provides edX with a list of students who have satisfied the course’s requirements (by receiving scores of at least 70% on each of all of the required problems). Typically, within a week thereafter, edX then generates students’ Verified Certificates (for students who have active verification), at which point they should appear automatically on edX’s dashboard. Note that edX will not notify you, so be sure to check your dashboard periodically.

If it has been more than a month since you met all requirements and you have still not received your certificate despite holding an active Verification that whole time, email certificates@cs50.harvard.edu with your details. Please do not email sooner; we cannot accept requests for expedited processing of Verified Certificates.

Can you rush the issuance of my verified certificate from edX?


Why did I not get my verified certificate after 30 days?

First, recall that your verified edX certificate will be issued by edX up to 30 days after three criteria are met: (a) Your Gradebook shows that you have completed all of the required assignments with at least a 70% score or higher on each, (b) you have made payment to edX and completed their verification process, resulting in a verified badge on your edX dashboard, and (c) you have linked your Gradebook to your edX account. Thus, you should ensure that 30 days have passed since all three of these above criteria have occurred.

Second, we can only inform edX of your passing status if you have linked your Gradebook to edX. Visit your Gradebook and ensure that no gold bar appears at the top of the page stating that you must link your Gradebook to your edX account. If you see such a gold bar, complete the linking process. Then, re-read the above about the timing in which you might expect to receive your certificate.

Finally, if you still have not received your edX certificate, best to ensure that the edX username that appears at the top of your Gradebook is the same edX username that appears at the top of your edX dashboard. If there is a mismatch between these usernames, you will need to inform edX that they need to transfer your verification payment to the correct username, as we have likely already informed them that the edX username that appears on top of your Gradebook has passed the course.

Can I change the name on my certificate?

No, we cannot make changes to the name on your certificate. Because we rely upon you to type the name correctly and because of the huge number of students with whom we work, it is not feasible for us to provide name changes. You are welcome to upgrade to a verified certificate and communicate with edX about what name will appear your your verified edX certificate by emailing them at info@edX.org.

Using Your Certificate

How should I describe my verified certificate on my resume or elsewhere?

When citing your HarvardX credentials on your resume or LinkedIn profile relating to your verified edX certificate, please utilize this template:

For your resume, use the following language: HarvardX [Course name]

For listing your certificate on your LinkedIn profile, input details under the “Education” as follows: School: HarvardX Dates Attended: [The year you participated in the program] Degree: Other; Certificate in [Course name] Field of Study: Leave blank Grade: Complete Activities and Societies: Leave blank

Additionally, edX provides the following blog posts that may also be helpful:

Software and Hardware

My codespace is behaving strangely. What should I do?

The first step is always to attempt to restart your Codespace container. Issues can appear for a variety of reasons, but a restart, as by visiting cs50.dev/restart usually resolves the problem. Do be very patient as it rebuilds and restarts, as this can take several minutes.

If this does not resolve the issue, best to refer to our technical documentation for Visual Studio Code for CS50.

Your computer, network, or local government may be blocking your ability to access our content or a third-party tool related to this course. First, attempt to utilize another device connected to an alternative network to see if your device may be blocking your access. Consider virus scanners, firewalls, and other security-related tools and software that may be blocking your access.

Second, consider the network on which you are attempting to access these resources may be blocking you. You may have to speak to your network administrator or, at the least, attempt to seek out another network connection that allows you access.

Finally, it’s possible that your local government is blocking access due to trade- or content-related laws.

In all of the cases above, best to reach out to one of our many communities for help.

Can you help me circumvent content blocking that is preventing me from accessing your course and its associated third-party services?


Can I change my GitHub or edX username while taking the course?

No. Changing your GitHub or edX username will result in you losing your course progress. Once lost, we will not be able to retrieve it for you. If you have already changed one of your usernames, best to change it back.


Does this course have office hours?

Not regularly! But you can still ask questions in any of CS50’s communities! Additionally, check to see what upcoming meetings we will be held in the near future.

Does this course have sections?

During Fall 2022, course staff did conduct small sections with some CS50x students as the lectures were being filmed. While the course is too large to hold live sections for current students, these pre-recorded sections are available here for students to supplement the other course materials. Additionally, check to see what upcoming meetings we will be held in the near future.

Can you help me with my code?

For help on problem sets or course concepts, we ask that you reach out to one of our many communities. If you are not already a user of any of those communities listed at the link above, allow us to suggest that you start with Ed!

Beyond This Course

Which course should I take?

We offer many courses. For each, we offer verified certificates for a fee and a free certificate. Verified certificates involve a verification process through edX and, therefore, may be regarded by others as more authentic. Free certificates are issued using a unique URL.

Some of our courses are geared toward those who want to learn more about programming and data science:

  • Flagship Course - A great starting point for most students.
    • CS50x is our flagship course. 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.
  • Continuation Courses - Requiring the completion of CS50x or similar coursework.
    • CS50 AI is a follow-up to CS50x. The course explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like game-playing engines, handwriting recognition, and machine translation. Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs. By the course’s end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own.
    • CS50 Games picks up where CS50x leaves off, focusing on the development of 2D and 3D interactive games. Students explore the design of such childhood games as Super Mario Bros., Legend of Zelda, and Portal in a quest to understand how video games themselves are implemented. Via lectures and hands-on projects, the course explores principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks like Unity and LÖVE 2D, as well as languages like Lua and C#. By class’s end, students will have programmed several of their own games and gained a thorough understanding of the basics of game design and development.
    • CS50 Web picks up where CS50x leaves off, diving more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. Through hands-on projects, students learn to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku. By the course’s end, students emerge with knowledge and experience in principles, languages, and tools that empower them to design and deploy applications on the Internet.
  • Other Courses
    • CS50 Python is an introduction to programming using a language called Python. Learn how to read and write code as well as how to test and “debug” it. This course is designed for students with or without prior programming experience who’d like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software is required except for a web browser, or you can write code on your own PC or Mac. Whereas CS50x itself focuses on computer science more generally, as well as programming with C, Python, SQL, and JavaScript, this course, aka CS50 Python, is entirely focused on programming with Python. You can take CS50 Python before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!
    • CS50 Scratch is an introduction to programming using Scratch, a visual programming language via which aspiring programmers can write code by dragging and dropping graphical blocks (that resemble puzzle pieces) instead of typing out text. Used at the start of Harvard College’s introductory course in computer science, CS50x, Scratch was designed at MIT’s Media Lab, empowering students with no prior programming experience to design their own animations, games, interactive art, and stories. Using Scratch, this course introduces students to fundamentals of programming, found not only in Scratch itself but in traditional text-based languages (like Java and Python) as well. Topics include: functions, which are instructions that perform tasks; return values, which are results that functions provide; conditions, via which programs can decide whether or not to perform some action; loops, via which programs can take action again and again; variables, via which programs can remember information; and more. Ultimately, this course prepares students for subsequent courses in programming.
    • CS50 SQL is an introduction to databases using a language called SQL. Learn how to create, read, update, and delete data with relational databases, which store data in rows and columns. Learn how to model real-world entities and relationships among them using tables with appropriate types, triggers, and constraints. Learn how to normalize data to eliminate redundancies and reduce the potential for errors. Learn how to join tables together using primary and foreign keys. Learn how to automate searches with views and expedite searches with indexes. Learn how to connect SQL with other languages like Python and Java. The course begins with SQLite for portability’s sake and ends with introductions to PostgreSQL and MySQL for scalability’s sake as well. Assignments inspired by real-world datasets. Whereas CS50x itself focuses on computer science more generally, as well as programming with C, Python, SQL, and JavaScript, this course, aka CS50 SQL, is entirely focused on SQL. You can take CS50 SQL before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!

Some of our courses are geared toward professionals who do not want to jump into programming right away:

  • CS50 Business is a variant of CS50x designed especially for business professionals. Whereas CS50x takes a bottom-up approach, emphasizing mastery of low-level concepts and implementation details thereof, this course takes a top-down approach, emphasizing mastery of high-level concepts and design decisions related thereto. Ultimately, this course empowers students to make technological decisions even if not technologists themselves. Topics include cloud computing, networking, privacy, scalability, security, and more, with an emphasis on web and mobile technologies. Students emerge from this course with a first-hand appreciation of how it all works and all the more confident in the factors that should guide their decision-making. This course is designed for managers, product managers, founders, and decision-makers more generally.
  • CS50 Cybersecurity is an introduction to cybersecurity for technical and non-technical audiences alike. Learn how to secure your accounts, data, systems, and software against today’s threats and how to recognize and evaluate tomorrow’s as well, both at home and at work. Learn how to preserve your own privacy. Learn to view cybersecurity not in absolute terms but relative, a function of risks and rewards (for an adversary) and costs and benefits (for you). Learn to recognize cybersecurity as a trade-off with usability itself. This course presents both high-level and low-level examples of threats, providing students with all they need to know technically to understand both. Assignments inspired by real-world events.
  • CS50 for Lawyers is a variant of CS50x designed especially for lawyers (and law students). Whereas CS50x itself takes a bottom-up approach, emphasizing mastery of low-level concepts and implementation details thereof, this course takes a top-down approach, emphasizing mastery of high-level concepts and design decisions related thereto. Ultimately, it equips students with a deeper understanding of the legal implications of technological decisions made by clients.
  • CS50’s Understanding Technology is for students who don’t (yet) consider themselves computer persons. Designed for students who work with technology every day but don’t necessarily understand how it all works underneath the hood or how to solve problems when something goes wrong, this course fills in the gaps, empowering students to use and troubleshoot technology more effectively. Through lectures on hardware, the Internet, multimedia, security, programming, and web development, as well as through readings on current events, this course equips students for today’s technology and prepares them for tomorrow’s as well.

Can I teach this course to my students?

If you are a teacher, you are welcome to adopt or adapt these materials for your own course, per the license.