CS 169:

Be young, have fun, drink Mountain Dew


Wed Jul 26 16:54:48 PDT 2000

I recently read a discussion written about cs169; it's probably worthwhile to clear up some of its inaccuracies. While it is true that this particular student hasn't taken cs169, yet, it is more important that the prospective cs169 student realize that the students who take the time to finish the course ubiquitously love it. What other course can that be said of? What other course has a better ranking in the critical review?

So what makes cs169 so great and worthwhile? It simply is some of the most fascinating code there is to write. In recent years, there has been considerable effort to trim the fat from the programming assignments to the point that there are very few lines of code which are simple, obvious or boring. Does cs169 involve writing more code than any other class at Brown? Probably not, but the each line of code you write will certainly be harder to figure out, trickier to debug and will take longer to write.

If this sounds unappealing to you then cs169 probably isn't for you and I can't imagine anyone thinking less of you for it. Plenty of people seem to think that Ghaniaian Drumming (mu67 and mu68) is a fantastic class, but I'll be damned if I'm going to take it. If, however, the prospect writing a lot of interesting code appeals to you, then read on...

The programming assignments in cs169 are each portions of a simple unix-like kernel (the heart of an operating system). This might sound boring, but consider that, when you're done, you'll have an kernel which is, in many ways, superior to the MacOS and linux. That's pretty cool. (If this is beginning to sound like something that your mom might not be all that impressed by, well, unless your mom is fairly well versed in the inner workings of virtual memory, you're probably right).

Here are some of the most pertinent pieces of information I could come up with regarding the class.

It's a unique opportunity

Seriously. There are very few courses like cs169 in the world. Interviewing in the Solaris kernel group, every (non-Brown) person that I talked to was totally impressed that we had written an entire kernel mostly from scratch.

Some things are worth implementing

I'm not in general a subscriber to the notion that you have to code something to understand it. But I would agree that there are some things that you do gain a more complete understanding of by implementing them. Sure, you understand the basics of how virtual memory works, how exec works, how threads work, but do you really feel a oneness with them? There are very few lines of code that you'll write in cs169 that won't teach you something new. Honestly.

Better coding and debugging in 10,000 lines

cs169 will make you a better programmer and debugger. There's not much else to say. You're not expected to be a great debugger coming into the course -- the TAs are there to teach you how to be a better debugger and to show you how to use the tools at your disposal (especially this year; we're planning on introducing some powerful new assembly level debugging tools which will make the kernel more debuggable). Taking cs169 will also improve your programming stills, and I'm not talking about how many lines of code your can spew per hour, rather, your code will be cleaner, simpler, more readable, more elegant and, perhaps more importantly, better documented. Do you start every function you write with 6 asserts? if you take cs169 you will.

You can do it

Really. If this sounds interesting to you, and you're willing to work hard, then take the class. If it turns out not to be for you, then drop it and take en9 instead; this is Brown, c'mon. If you do stick with it, and work hard, you're probably going to get an A. That's not to say that the course is A-Fail. On the contrary, it is possible to work hard, but not quite get everything together and still pass the class. Like any cs class, you're not going to get credit for no effort. In the past, however, people have mostly received A's because they've cared too much to give up on any problem. It's a fun course and there were times when I'd figure out a bug while watching the Simpsons or eating dinner; I just cared a lot.

Don't stick with cs169 if you don't care a lot, and for that matter don't stick with any course if you don't care a lot about it. Again, this is Brown, there are lots of great courses -- too many to waste your time taking something that you don't love.

I'm not trying to convince you to take the class, I'm trying to convince you to consider it, and (God, I'm about to sound like fucking LaVar Burton on Reading Rainbow) don't take my word for it. Don't let other people's uninformed opinions turn you off to the class.

It's probably fairly obvious that I love cs169; I'd say that you should try to find a cs169 student to talk to who is less enthusiastic about the course, but I honestly think that you'd have a hard time doing so.


To put all this in some sort of context, I'm Adam Leventhal, I'm one of the HTAs for cs169 this fall, I'm the sunlab head consultant and I have a home page (such as it is). If you have any questions or comments for me, please send me an email to ahl@cs.brown.edu.