What the block is RealTime?

In short, a RealTime system is a system that must be able to respond to external events within a bounded amount of time. There are "hard" RealTime systems, where a failure to respond in time is critical and horrible and strictly disallowed, and there are "soft" RealTime systems where you really, really want to respond in time, and you can almost always do it, but maybe not all the time.

In any case, at [Waterloo] they have a course in RealTime programming, and I took it. It's also knows as [trains], because you code up a RealTime kernel, and then write applications on top of it to control a train set. Sounds easy, right? Just a bunch of stupid college kids playing with a train set.

Well, as it happens, writing your own kernel, and getting that all debugged, and dealing with ancient I/O (ah, 0x3f8, how I miss thee), and then writing reasonably complicated, concurrent apps on top of that is actually kinda tough. So you'll often find the RealTime lab packed all through the night for the week leading up to either of the 2 demos. But they don't make you write a midterm :)

Anyway, I took RealTime in Fall 2004, with [mag], and enjoyed it quite a bit. Yeah it was lots of work, but it was actually interesting, and fun, and challenging, unlike most of the other courses you'll take at university. So if you get the chance, take it.