Immersion Courses

I teach most of my courses in an immersion format. Some might call it a "bootcamp", but that sounds far too militaristic. Mainly, you should expect a intense week-long focus on the specific topic at hand. Classes last all day and consist of a mix of live discussion and individual coding.

Structure and Focus

I think the main benefit of the immersion format is that it provides a framework for making progress. Most of my courses are oriented around a specific achievable objective (e.g., writing a small compiler, implementing Raft, etc). Yes, these are things that you could leisurely do on your on time by reading a book, reading online tutorials, and writing some code. In practice, however, most people (including myself) find it very difficult to do that because "life" intervenes--work, kids, dogs, doctors, travel, etc. Plus, if you get stuck, it's all too easy to put things aside and never return. You'll tell yourself, "I'll get back around to that later." Meanwhile, I eye my own stack of half-read books, half-finished GitHub projects, and the clock to see how many minutes I've got before I have to go take the kid to band practice.

By signing up for an immersion course, you're making a committment to fixed block of time wherein you'll focus on learning about a specific thing. I will push you along at a moderately brisk pace, emphasize the parts that are important, and help you steer clear of common pitfalls and problems. Everyone involved is working on the same thing at the same time. If difficulties arise, they can be immediately addressed--there's a good chance that everyone else is having a similar problem!


Immersion courses involve a certain intangible element of mental "flow." By spending all of your active time immersed in the topic, you'll find that you may make much more progress than you thought possible. This is a rather different experience than learning on a more drawn-out course schedule where you may find yourself struggling to remember what it was that you were doing in the prior class. Also, procrastination really isn't an option--right after we have a bit of discussion, we immediately start working.

Course Narrative

All courses and projects have a certain narrative structure about them. Yes, you might be trying to do something like implement a compiler, but there is also an associated "story of compilers" that goes along with it. I find that the immersion format makes this story much more apparent. Courses are often taught "in the moment" where new topics get introduced at the same time as the story calls for them. Everything makes more sense because we're working on everything all at once. Much of the story relates to how everything connects.


In the real world, people collaborate and look things up online. Although you will get the most out of a course by trying to code things yourself, I fully encourage code sharing, discussion, and the use of ANY tool that might be of assistance in completing the project. This includes the use of coding websites or AI assistants.

How Does it Compare to a College Course?

Most people are probably more familiar with the structure of a traditional college course. To be sure, a college course does afford more time to think and ponder the universe. However, the overall timing is probably much less than you remember. A common college course structure might be a class that meets for 50 minutes, 3 days a week, over a 13-week semester. That's about 32 hours of classroom time.

By comparison, a week-long immersion course consists of about 40 hours of contact time. Based on past experience, about 10-15 hours of this is spent in active group discussion. The rest of the time is spent in project coding. There's a higher factor of immediacy about it. If you're stuck on something, you can ask a question right away and we'll address it. There's never a situation where I would expect someone to spend hours of alone time trying to solve a problem before asking for help. Yes, there can be some value in isolated suffering, but that's not what I'm trying to achieve in an immersion course.

Lastly, there is also a difference in objectives. Although a college course is about learning, often times it becomes more focused on the "grade." An immersion course is entirely focused on understanding and completing a project. It's not about grades, cheating, the "academic honesty code", or anything like that. We're all working together towards a shared objective.

How to Plan?

The primary factor for success in an immersion course is time. To get the most out of the experience, you need to devote your attention to the course for a full-time week of 40 hours. If you are also trying to work, travel, or carry out some other concurrent task, you will likely struggle. Sometimes people will work a bit asynchronously to accommodate issues of timezones. This is fine (I record sessions to help), but to make it work you still need to make sure you're putting in the required time outside of standard course hours.

Do You Ever Offer Courses in a Different Format?

I have been known to experiment with different course formats from time to time. You will most commonly find this around major holidays such as Christmas or New Year's. For example, I might offer a course that's split across a holiday, taught on a reduced schedule, or offered with additional course days. As a general rule, however, courses will almost always be taught in some variant of the immersion format.