Seeing as I’m more than a week into my next semester of classes, it’s probably about time I posted my reviews of last semester’s courses. My main takeaway from last semester is a disappointment that I couldn’t take Algorithms due to a strict CS 337 prerequisite, so my only really challenging course was a random one I took just to fit my schedule. Good thing this term I got into all the classes I wanted.
- CS 337: Theory in Programming Practice (Misra)
- From the name of the class, I thought this would be a theory class, but it’s really more just a set of programming exercises to give you a little more practice before you take on the more advanced computer science courses. Of course, there are some proofs thrown in as well, but it’s not much more advanced than what you learn in CS 336 (as long as you remember it). If you take Misra and aren’t paying attention in class, prepare to be called on. Otherwise, just make sure you set aside enough time for the programming projects. They often appear easier than they really are.
- CS 347: Database Management (Miranker)
- I thought this would be my best class last semester. Since I took Software Design and simulated the Gamma join architecture as one of our projects, I’ve found databases interesting. Unfortunately, this class just glossed over the areas that I found interesting. The course was also very disorganized (once we had just two lectures between exams and the homeworks were over-vague), which made it difficult to learn anything in much depth. Other students who had no previous experience with databases say they got a lot out of it, but if you already know a bit then doing some reading or taking an online course may be more useful.
- CS 344M: Autonomous Multiagent Systems (Stone)
- Going into a research class for a topic you have no interest in is never a good idea, but I can see how almost anybody else would have loved it. We worked in pairs to create new or improve on existing teams for the Robocup soccer simulator and had a tournament at the end of the class. By starting from a complex team (though not improving much on it), my team won the 2D tournament. We also discussed automated traffic controls, chatbots, bidding agents, and other applications of autonomous agents. If you’re not familiar with C, getting started may be a bit difficult. This is the only computer science course so far in which I made a B, but it was worth it overall.
- CS 361: Introduction to Computer Security (Young)
- This is probably one of the easier upper-division CS courses. There wasn’t any required textbook, which was nice. The lectures were usually pretty straightforward and just a little bit interactive. Other than the occassional stories about security blunders, it could get a little boring, but what really made the class worthwhile was the projects. We learned how to crack UNIX passowrds, implement AES, simulate covert channels, and more. I’d recommend this class to pretty much anyone.