I teach most of my courses in a week-long all-day format. Some might call it a "bootcamp", but that sounds far too militaristic. Mainly, I would describe it as a week of intense focus.
I think the main benefit of the immersion format is that it provides a framework for making progress. The week is oriented around a specific achievable objective (e.g., writing a small compiler, implementing Raft, etc). Yes, this is something that you could leisurely do on your on time by reading a book, reading online tutorials, and writing some code. In practice, most people (including myself) find it very difficult to do this because "life" intervenes--work, kids, dogs, doctors, travel, etc. If you get stuck, it's all too easy to put things aside for awhile and to never return. You'll tell yourself, "I'll get back 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 a fixed block of time. 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! Did I mention it's always more fun to learn something with others? Yes, that's also a big part of it.
Immersion courses involve a certain intangible element of mental "flow." By spending all of your active time on the topic, you'll find that you can 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. And after we've worked for a bit, we go back to discussion to talk about what we've been doing.
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, AI assistants, and other people in the 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 time 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 15-week semester. That's about 37 hours of classroom time. In reality, it's a lot less when you factor in exams, the odd holiday, and time spent refreshing everyone's memory from the prior day.
By comparison, a week-long immersion course consists of about 40 hours of contact time. Typically 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 level 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.
The clock also plays an unusual role. In college courses, the instructor is forced to make material fit within a strict time period. On more than one occasion, you've probably been in a class where the professor looks at the clock and then hurriedly tries to cram some important concept into the last five minutes before sending everyone on their way. This almost never happens in the immersion format. If we're working through something complicated, we'll work through it and give it the proper time that it needs.
Lastly, there is also a difference in objectives. Although a college course is about learning, often times it becomes more focused on the grade or knowing specific facts for an exam. 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. In the real world, people share and work together. An immersion course is much more focused on the process of solving a problem.
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.
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.
Copyright (C) 2005-2023, David Beazley