CS50P: Mastering Python - Course Review

3 min read • June 19, 2023

Some links here are affiliate links. If you make a purchase, I might earn a small commission at no extra cost to you. I’ll probably spend it on coffee to keep me awake at night while I write more articles for you. Consider it as a way to support my work.

Thanks for fueling my caffeine addiction and supporting my work! ❤️
Why affiliate links? Read here!

After completing CS50T (review here) and CS50x some time ago, I decided to try out another course from Harvard - CS50P. It’s focused completely on a popular programming language called Python.

It’s the first programming language I have learned, and while I already feel comfortable with Python, I thought it would be fun to explore it again in a more structured way.

In the past, I would move from project to project and learn what was necessary as I went along. 😅

CS50P Overview

  • Introduction: All the basics (functions, variables and their types, conditionals, return values, and loops).
  • Exceptions and Unit Tests: You’ll learn how to handle exceptions and write unit tests to ensure your code works as expected.
  • Learn how to use third-party libraries.
  • Validating and Extracting Data: Validating users’ input and extracting data with regular expressions (regex), object-oriented programming (OOP), and more.
  • Beginner-Friendly: No prior experience is required.

CS50P consists of 10 lectures, each lasting around 1-1.5 hours. After finishing the lecture you will solve problem sets that allow you to apply your newly acquired knowledge in practice.

It’s a high-quality course. The explanations provided by the instructor, David J. Malan, who also teaches CS50x (the main CS50 course), are excellent. The problem sets are engaging and keep you interested throughout the course.

Personally, my favorite lecture was the final one, titled “Et Cetera”. This lecture focuses on aspects often overlooked in typical beginner courses.

You’ll learn about coding style, type hints to indicate variable types, using docstrings to document your functions, and features of Python, such as unpacking lists of values with a single *, list and dictionary comprehensions, generators, and more.

I was unaware of these features for a long time when I started learning Python. I discovered them accidentally while working on HackerRank challenges or looking at someone else’s code on GitHub. It’s great that this course covers them.


CS50P definitely exceeded my expectations. I initially thought it would be like any other Python beginner course, but it turned out to be much more comprehensive than I anticipated.

I regret not discovering it earlier in my Python learning journey. It offers a comprehensive understanding of the language, which is perfect for beginners.

After finishing CS50P, you should be able to jump directly to doing various projects. After all, the best way to learn programming is through practical exercises.

Additional Resources

Other great websites/courses related to CS50P that I would recommend:

  • If you haven’t completed CS50x yet, I would encourage you to do so. My recommended order would be, to begin with CS50x and then move on to CS50P before the Python lecture in CS50x. After completing CS50P, finish CS50x. However, completing them in any other order is also acceptable.
  • Other Harvard courses you might find interesting include CS50W (web development), CS50AI (artificial intelligence), or CS50G (game development).
  • HackerRank is another excellent resource where you can solve a variety of coding problems and improve your Python skills.
  • I also recommend checking out roadmap.sh. They offer a huge collection of great resources.