Programming and Computer Science Courses

I'm David Beazley, a breathing human and computer scientist with more than 30 years of teaching and programming experience. Here's some of my better known work from the Python world:

What you'll find here are live-taught advanced programming and computer science courses designed to challenge you.

Current Course Schedule

Immersion Courses (week-long)
Write a Compiler.
Take on the challenge of writing a compiler for a new programming language.
December 16-20, 2024 (sold out)
January 27-31, 2025
ONLINE
Rafting Trip.
The networks, concurrency, and distributed systems course that will test your wits as you struggle to implement a fault-tolerant service via the Raft distributed consensus protocol.
January 13-17, 2025. (Sold out)
February 24-28, 2025. (New!)
ONLINE
Crusty Interpreter.
Implement the Lox programming language from Crafting Interpreters in Rust and learn a lot about programming language design and implementation in the process.
December 9-13, 2024. (Sold out)
February 10-14, 2025. (New!)
ONLINE
Advanced Programming with Python.
Take your programming skills to the next level as you learn about problem solving, abstraction, and design.
January 6-10, 2025
ONLINE
Structure and Interpretation of Computer Programs.
The famous computer textbook comes to life as you learn the foundations of programming languages.
June 2-6, 2025
ONLINE
The One.
The one.
TBD, 2025
TBD


Programming and Problem Solving

My courses are focused on a singular goal--becoming a better programmer. However, programming is more than just knowing various language "features", cute coding recipes, and the latest coding fashion. Ultimately, it's about problem solving, thinking about the bigger picture, and asking questions. However, getting better at that requires stretching yourself on more challenging tasks and practice.

All of my courses are grounded in core topics from computer science. By taking a course, you will certainly learn more about that specific topic whether it is compilers, programming languages, or distributed systems. However, more importantly, my courses are also about the process of building something. To do this, you need to understand the problem, explore ways of decomposing it into manageable parts, and ponder questions concerning the ramifications of various design decisions. How do you test your code? How do you debug it? How do you refactor it? You get the idea.

Overall, my courses are meant to push you outside your comfort zone. They're the kind of courses you wish you could take in graduate school, but without all of the exams and psychological trauma.


"David's training classes are a unique and not-to-be-missed experience. They are an immersive exploration and the format ensures you leave the class with new knowledge, new understanding, new skills, and new friends. David has a gift for explaining hard concepts and making things interesting. He is one of the best teachers I have ever met."

What Are Classes Like?

Courses are usually taught in an intense week-long immersion format to a small group (limited to about 15 participants online or 6 participants in-person). The immersion format works to provide structure and to focus your engagement with the material. The small class size is unlike the typical experience you are likely to find online or at a university. People are there to learn and it's a friendly, hands-on environment that allows for meaningful questions and group discussion.

Courses run from 9:30-5:30pm in US Central Time/Chicago with an hour lunch break. Course time is divided between group discussion and working on hands-on projects with a strong emphasis on the latter. Most courses are taught loosely in the style of "mob programming" where we work together to try and figure out a problem solving strategy before moving on individual coding. Come ready to code, to question, and to discuss.

students sitting around a table building circuits on breadboards
Hands-on circuit building in "Computer Science: The Good Parts"

Am I Ready to Take a Course?

Classes are attended by professionals with a wide variety of backgrounds and interests. You should have prior programming experience, but you definitely do NOT need to be an "expert" programmer, have a formal background in computer science, or deep knowledge of advanced programming language "features." That said, courses are still rigorous. Learning is the ultimate goal and some of the subject material (depending on topic), might be similar to what one would see in a graduate computer science course. You can read more about preparation here.

Courses are open to everyone. There is no screening process and I'm not in the business of assigning grades--if you want to take a course, sign up. I trust you to be the best judge of your abilities. However, feel free to contact me if you're not sure.

Just Courses

I have been offering public-enrollment CS courses for more than 17 years. What you see here is exactly what it is--courses. I personally teach of these classes and focus my attention on topics that I think are interesting, intellectually deep, and worthy of study towards becoming a better programmer. I have a "no questions asked" cancellation and refund policy. I hope that you learn as much taking a course as I do by teaching it.

More Information

For more information and general inquiries, please send email to dave@dabeaz.com. You can also consult the Frequently Asked Questions.


Copyright (C) 2005-2024, David Beazley