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.

Your Gradebook shows how many assignments for which you have received a passing score, along with those you have not. Once you have received a score of 70% or higher for a particular assignment, the assignment number will appear 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?

CS50 Web 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 shows how many assignments for which you have received a passing score, along with those you have not. Once you have received a score of 70% or higher for a particular assignment, the assignment number will appear in green, and your progress indicator will be updated to reflect that.

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.

  • If you last submitted (and had graded) an assignment in 2022, no cause for worry, your past progress is archived. Once you have an assignment submitted and graded in 2023, your past progress will be automatically imported to your Gradebook again.
  • If you last submitted (and had graded) an assignment in 2021, afraid your progress will not carry over into 2023, and you’ll need to start the course again. After you have been inactive for at least twelve months, the system will no longer retain your old scores.
  • If you actually finished the course in 2022, your Gradebook will be removed during this reset, as we do not continue to retain scores for those who’ve finished the course! Your CS50 Certificate (attesting to your completion of the course) will still be available by visiting certificates.cs50.io, however.

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.

Did you get my submission?

There are a number of steps you must take to submit your assignments. First, make your submission using the submit50 command. If you have not installed submit50, best to refer to the submit50 documentation to learn how. Second, follow the rest of the assignment submission instructions.

After following the assignment submission instructions, upon submitting the required Google Form, you will immediately receive an email confirmation of your submission. If you do not receive such an email confirmation, best to check your junk mailbox.

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

When you submit the Google Form for each assignment, you will receive an email confirmation; if you get that confirmation, we have your form and your submission will be graded within three weeks. If you did not receive such an email confirmation, best to see “Did you get my submission?” above. Only after your work is graded will it update in your Gradebook.

I submitted a problem more than three weeks ago and no grade appears in my Gradebook. Why is that?

First, it is possible that we never received your assignment. Check to make sure you have received a Google Form confirmation email from your assignment submission. If you did not receive such a confirmation, it’s unlikely we received your submission. If you did not receive such an email confirmation, best to see “Did you get my submission?” above.

Second, you may not have received a passing grade. When we finalize your grade for an assignment, we will always send a results email to you. If you did not receive this email, even after three weeks, best to check your junk mailbox. We cannot resend you your results or feedback for a submission.

Finally, it could be that the GitHub username that appears in your Gradebook does not match the GitHub username that you provided us during your submission.

In all the above cases, if you have not received your results after three weeks, best to resubmit your assignment, paying special attention that you are providing the correct GitHub username that appears at the top of your Gradebook and ensuring your submission reflects what is requested in the assignment specification.

My score changed on the Gradebook but I didn’t receive an email about it. Why?

Our staff grades periodically, but grades are never finalized until you receive an email from CS50 Bot, so even if the status changes, you should not consider anything final until you get that email.

I got a non-passing grade on a submission, but I don’t know why. How do I view my feedback?

Unfortunately, the Google Forms release interface will occasionally render invisible a link that you can use to see what feedback may have been left for you by the staff. Below your numeric score in the email from bot@cs50.net releasing your score is a link; if your browser renders that link invisible, hover your mouse around in that area until you find a clickable spot; it’s there, we promise, click your mouse in the area roughly where the black box is in the below image (this particular image is from CS50L, but the score release emails all look the same!)

screenshot of a CS50 for Lawyers score with a black square below the score

I resubmitted, but the same answer that was previously marked correct is now marked incorrect. Why?

This sometimes happens when answers are “borderline.” We do reserve the right to change our minds regarding the acceptability of an answer, and depending on the grader, different graders, in particular, might assess borderline answers differently. We encourage you to try to write a clearer answer.

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

Yes, of course! You may resubmit. Just submit the form again, taking into account the feedback the staff left for you; we will only ever count your highest-scoring submission, so it’s okay to submit as many times as needed, but please submit only once until your score is released again unless you make an error while submitting. Repeated submissions without improvement may be considered spam, resulting in you being prevented from making further submissions.

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.

Can you rush the grading of my assignment?


Am I cheating?

Best to refer to our Academic Honesty policy to see.


When are the deadlines?

This course 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 2024 at 11:59PM. For your convenience, we will often render this time in your local timezone (2024-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 the course.

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.