2/19/2026
Resources to learn programming from scratch
Free resources I recommend for learning programming and computer science, from first steps to deep fundamentals.
These are the resources I’d point someone to if they asked me how to learn programming. They’re all free.
Este post também está disponível em português com recursos em português, incluindo os cursos do Professor Guanabara.
1. Learn Python first
If you speak Portuguese, start with Professor Guanabara’s Python courses on YouTube (I go into detail about them in the Portuguese version of this post). He has three Python playlists that go from zero to comfortable, and his teaching style works really well for people who have never written code before. He explains things without assuming you know anything.
For English speakers, Python is still the language I’d recommend picking up first. There are lots of beginner tutorials out there. The specific one matters less than actually finishing it instead of jumping between five different ones.
2. Automate the Boring Stuff with Python
Once you know the basics (variables, loops, functions, lists), a good next step is Automate the Boring Stuff with Python by Al Sweigart.
What I like about this book is that it’s practical. Instead of more abstract exercises, it teaches you to use Python for day-to-day stuff: working with files, scraping web pages, messing with spreadsheets, automating emails. You can read the whole thing for free online.
It’s a nice way to go from “I understand the syntax” to “I can actually make things that are useful to me.”
3. CS50
After that, CS50 from Harvard. This is where things get more serious.
CS50 isn’t just another programming course. It gets into how computers work: memory, algorithms, data structures. You also write code in C, Python, SQL, and JavaScript throughout the course, so you get exposed to different kinds of languages.
Use the official Harvard site at cs50.harvard.edu/x. They run different sessions (winter, summer, etc.) but the site always has the latest version with everything accessible. Don’t go through edX; the Harvard site is better.
The problem sets are hard. That’s intentional. Having the Python background from the earlier steps helps.
4. Teach Yourself CS
If after CS50 you want to go deeper into computer science, Teach Yourself CS is the best thing I know of for that.
I’ll be honest: the difficulty jump here is big. The site covers nine subjects (programming, computer architecture, algorithms, OS, networking, databases, compilers, distributed systems, math) and recommends a specific book and lecture series for each one. It’s the kind of material you’d see in a good CS degree program.
It’s dense and it’s hard. The complexity goes up a lot compared to CS50. But as far as I know, there’s nothing better out there for learning CS properly on your own, and it’s all free.
After that
There are tons of YouTube channels, blogs, and communities you’ll find along the way. But the resources above are the ones I’d call the backbone. Everything else you can pick up as you go.