As it's coming towards the end of the academic year I've been thinking about what courses I'll want to choose next year. It's the first year that I'll be able to decide which Computer Science classes I actually want to do, rather than what is mandatory.
My initial reaction was to pass the list of classes through a boolean predicate along the lines of "Is this class exciting to me?". This whittled the list down to around 11 classes out of about 15. I can only take 8, or 9 if I'm pushing it. Obviously I need to reduce the list more, or decrease the tolerance of my predicate.
I remember a couple years ago talking to a software developer in a pub about university classes. They suggested I go for the "hardest" classes. They defined the hardest classes as the classes that deal with more bare metal concepts. Anyone that dealt with compilers, assembly language, operating systems was on the list, as well as any and all algorithms classes. The developer I was speaking to mentioned that these classes would appear the most impressive to future employers, even if the courses themselves were not the most relevant.
Now it just so happens that many of those classes are actually what I'm most interested in, but I also have a strong interest in high-level areas such as Distributed Algorithms and Systems (a class), and Machine Learning (another). Another class that's planned for next year is a functional programming introduction using Haskell. It's being run as a MOOC, so I'm almost inclined to say it might be less time consuming than regular classes (hence an opportunity to do an extra class).
Taking all this in to consideration still leaves me with around 3 too many classes than I can feasibly do. So we'll have to see what happens in August when it comes time to decide. Hopefully the timetable will be respectful of my wishes...