I guess I was finally getting the hang of school. This was my first semester ever with a full course load and all A’s, and it was fun too. But oh well, time to move on.
- CS 341: Automata Theory (Rich)
- The topics for this course were a succession of finite state machines, pushdown automata, turing machines, and a bit of complexity theory. Some of the homework assignments take many hours to finish, but unfortunately they’re necessary to really understand the material. Rich lets you work in groups for the homeworks, which is useful because it’s easy to just stare at a problem for an hour without any ideas as to how to proceed. Just make sure that after you gain a better understanding you’re also able to work things out on your own. As long as you can do that, the tests should be alright.
- CS 345: Programming Languages (Cannata)
- Unfortunately, this is a required course. That’s about as much as I can say for it.
- CS 378: Network Security and Privacy (Shmatikov)
- Last year I was disappointed when this class was cancelled, but after taking it this year I’m really glad I got that extra year experience. Shmatikov expects you to know some C and Javascript going in, as they’re required for the projects and parts of the lectures won’t really make sense if you don’t already know the basics. There is a lot of material covered quickly in this class, so be prepared to do a bit of extra reading to get a full understanding. Overall, though, it was a great class and was probably one of the classes that I’ve gotten the most out of.
- CS 361: Introduction to Operating Systems (Dahlin)
- If you love spending long nights coding in the basement labs, you’ll love this class. The focus is mainly on multi-threading. Dahlin was in the middle of writing a textbook for the class, so we only had the first two or three chapters. Since we went over the same material in lectures, though, it wasn’t much of a loss. We were also an experimental class in that we had projects in C, C++, and Java just to see how it would work it. I really enjoyed it, because it’s a way of getting different perspectives at what are sometimes similar problems. Just make sure to do the homeworks also, no matter how little credit they may be, because that’s the best way to prepare for exams.
In Operating Systems, though, my partner and I need an editor that’s more sophisticated. Okay, there are plenty of those, no problem, right? But the fact of the matter is that he’s an Emacs afficionado and I’m vim all the way. I prefer simple keystrokes to Meta-combos, and he just doesn’t grok command mode.