Free Harvard programming courses go far beyond basic tutorials.
Learning to code still matters when AI writes software.
The workload is heavy, but genuinely sharpens real skills.
In a time when AIs are writing code (and eating human coding jobs), you still need to learn to code. Why? If you want a program written, you can use an AI. But AI is wrong a lot - and confidently so. You'd better know how to code so you can confidently check your AI's work.
I'm going to show you one of the best intro to coding courses out there, as well as a course that will up your skills programming in Python, one of the world's most popular programming languages.
Continuing professional development
I first learned to code in the days of punch cards and paper tape. My first programming language was BASIC, typed into an ASR-33 teletype and stored on paper tape. I then went on to Fortran programming, where we typed our programs onto punch cards, with each card holding a line of code.
As you might imagine, if I'd stopped learning back then, I never would have been able to keep up with all the changes in computing over the past few decades. However, I continually engage in ongoing professional development, whether that involves taking courses or undertaking projects.
In 2025, I focused on Python. As we've shown, Python is one of the world's most popular programming languages. I am comfortable programming in 20-30 programming languages. I had programmed in Python before these courses. However, I had never undertaken a large project. Most of my Python work had been accomplished using , which is used to run Arduino controllers.
So, I set out to find a Python project I could use to help me get my chops up. While researching ideas, I came across Harvard's CS50 series of courses, which range from basic computer science through Python, AI, and data programming. The base CS50 computer science course is legendary, taught by David Malan, a popular and engaging Harvard professor.
Part of what makes CS50 interesting is that it's offered as a MOOC (massive open online course) via EdX. You can take it for free and get a participation certificate, or you can pay about $500 for an official version and get a verified professional certificate. While the verified professional certificate doesn't automatically grant degree credits, you can submit the verified certificate to college programs. Many will accept it as a 3-credit course.
While I certainly don't need an intro to programming course, I was curious about how programming is taught now, in the days of generative AI. I last taught programming at UC Berkeley before I moved to Oregon in 2018. Back then, we didn't have generative AI tools that could write code for us. I wanted to see how a top-tier program like CS50 would incorporate the reality of generative AI into the curriculum.
I'm glad I did, because in addition to learning how Harvard teaches basic programming, I had a ton of fun. So let's start with my review of the base CS50 Introduction to Computer Science program, and then I'll move onto the Python class.
CS50 Introduction to Computer Science
The base CS50 introduction course is, in a word, fantastic. Unlike most intro to programming courses, which teach just one programming language, CS50 teaches Scratch, C, Python, SQL, HTML, CSS, JavaScript, and Flask (which is a web framework). It also covers key computer science concepts like algorithms, memory, data structures, arrays, and more.
Because I have programming experience in all the above languages except Scratch, I can't judge how difficult the course would be for completely new programmers. It is a lot of work. There are ten main lectures, which are generally about three hours long. Most classes offer additional mini-lectures of 10-20 minutes.
Along with each lecture, there are 3-5 programming projects. At the end of the course, there's a larger final project. For my final project, I decided to write a little game in Scratch. While I've been programming for a very long time, I'd never written a game. So, I used the course as an excuse to write a little game about my dog and his love of vegetables using Scratch. He has to find and eat them before a robot steals them from him.
Scratch is different from most other programming languages because it's very visual. You move pieces around on the screen like little Lego blocks. It's a lot of fun to program in, but the elements that make Scratch approachable for new coders limit scalability. There's no way to create a core function or method library, making building larger projects fairly cumbersome. Scratch also doesn't have an easy way to organize or explore existing scripts. There's no code folding, for example. There's no automatic cleanup or layout. Even so, I had a great time with it.
As I said earlier, Malan's lectures are engaging as heck. He moves very fast, but provides very clear explanations for everything he presents.
While AI was not a main focus of this course, awareness of and references to generative AI were sprinkled throughout the lectures. Harvard also operates a custom adaption of ChatGPT, which it makes available to students. The AI is trained on course content and will answer questions… to a point. It won't give you the assignment answers, but it will guide you to discovering the answers on your own.
Like most AI tools, it ranged from surprisingly helpful to infuriating. However, it was nice having the AI there to assist, especially since Harvard's academic honesty policy prohibits the use of outside AI for coursework.
Grading was also interesting. All the programming projects were graded using an automated tool. Most of the time, that was helpful, because grades were processed nearly immediately. However, sometimes the grading tool made assumptions that were not clearly defined in the course, making it a bit frustrating to figure out just why it wouldn't accept a submission. It's not a deal killer, though. Some careful sleuthing and experimenting always got me over any hurdles.
My only complaint
My one complaint is that interaction with the instructors is nonexistent, even for paying students. The program offers access to various social media, ranging from dedicated Facebook pages to Discord groups. But any questions presented are answered by… I don't know. Other students? Teaching assistants? Who knows?
There's no identification of the bona fides of the answerers. For functional coding questions, that doesn't matter. But when I had a question about the suitability of my concept as a final project, I got a go-ahead from someone with a random Discord handle. Even now, I have no idea if the person responding was another student or someone with the authority to approve a project proposal.
I was disappointed that my decision to pay for the course didn't buy me access to official staff for any part of the course experience, or even just project approvals. But that's my only complaint. As long as you don't need non-AI handholding, the class is probably the best programming class I've seen (and that includes those I've taught).
CS50P Introduction to Programming with Python
This, too, was taught by Malan. While it wasn't quite as engaging as the intro course, it covered a lot of ground and provided a very good overview of key elements of Python programming. It included discussions of functions, variables, conditionals, loops, exceptions, libraries, unit tests, file I/O, regular expressions, and object-oriented programming.
I was a bit disappointed that object-oriented programming came as the last main topic of the class, rather than as a fundamental of programming for Python. However, the course still accomplished what I wanted: it helped me refresh and hone my Python skills through programming exercises.
As with the base course, this was a ten-session program. Most lectures were also 2-3 hours. Most subjects also had ancillary videos covering some of the topics within the lecture in more depth.
Likewise, the course had 2-5 programming assignments per lecture. I estimate that between the two classes, I did roughly 80 programming tasks. I also did a final project for the Python class. This time I wrote an interactive image management tool that was able to do individual Photoshop-like image transformations, and batch them together in sequences. I know I'm beginning to sound like a broken record here, but it was fun, too.
Other experiences parallel the base CS50 course. The AI was helpful, except when it wasn't. Discord questions were answered clearly, except when they weren't. And, as with the CS50 final project, my pitch for a Python final project was approved, but I have no idea if that was an official approval or not. I did pass the course, so I assume it was approved.
Should you take these courses?
The program is self-paced. I started it in March and finished in early December. With more than 60 hours of lectures and 80 programming assignments, it did take quite a lot of time. I did a bit every week in and around all my other responsibilities.
Keep in mind that you can get all the learnings from this program without spending anything. All you need to do is sign up, watch the lectures, and do the work. It's only if you want an official verified certificate that you have to pay the $500. That may or may not have value to you. I don't intend to try to use it for degree credit, but it was fun doing more work with Harvard. Now I have a Harvard credential on my LinkedIn, for whatever good that does.
Screenshot by David Gewirtz/ZDNET
I don't recommend considering these courses because they carry the Harvard brand. Instead, I recommend you consider them because they're good.
That intro to CS course, with its rapid-fire exposure to eight languages and frameworks, is spectacular if you want to learn not only programming, but how to think and evolve as programming changes.
The Python course offers solid fundamentals and engaging exercises, which will help anyone get started with Python or maintain their coding skills if they don't work with it on a daily basis.
I can comfortably recommend the free audit version of both classes to anyone who has the time and is willing to put in the work. The paid verified professional certificate won't add any value to the actual educational experience, but it might help your professional standing. Only you will know if that option is right for you.
What about you? Have you tried any of Harvard's free programming classes, or are you considering them now? Do you think learning to code still matters when AI can generate software? How much does course rigor matter to you in professional development? Would a verified certificate influence your decision? Let us know in the comments below.