Am I Prepared to Take a Course?

I'm often asked questions about the expected preparation for my various courses--especially since they cover a variety of more intermediate and advanced level programming topics. This page hopes to address some of these concerns.

Who typically takes a course?

My courses are usually attended by working professionals who write programs and scripts in their day-to-day work. However, more often than not, they would probably not classify themselves as professional "software engineers." For example, I often get a lot of data analysts, system admins, and scientists of various flavors taking courses. It is quite common for attendees to NOT have a degree in computer science--in fact, one of the main reasons they're taking a course is to learn more. Even in my advanced courses (e.g., write a compiler), students often have a non-traditional background.

Do your courses have any formal prerequisites?

In short, no. Each of my courses is taught as a "stand-alone" unit. I generally assume that you're the best judge of your abilities and interests. For example, if you've never coded any Python before, I probably wouldn't sign up for "Advanced Python" as a starting point. Likewise, prior use of a compiler would be advised for the compilers course. However, I'm not going to subject you to any kind of quiz or put you on the spot with tricky questions when you show up. If you're concerned about your prepraration, send email to

Expected skills

None of my courses are aimed at absolute beginners. As a general rule, I assume that you know the basics of using your computer to write programs. This includes using a text editor, knowing about files and directories, and using a command shell. If you show up to a class, you really don't want to be spending your time trying to fix your coding environment and related problems. You should also know about fundamental programming concepts such as variables, conditionals, loops, functions, and simple data structures.

Small class size

Last, but not least, I would emphasize that my courses are taught to small groups of 6 people. Frankly, it's a pretty friendly environment that facilitates a lot of discussion and interaction. If you get stuck, it's easy to get help. There are no silly questions. I think you'll like it.

More Questions

If you have any questions about your preparation or the contents of any course, please send email to