Peter's undergraduate subjects

As an undergraduate, I specialized in Systems, with minor specializations in Networking and Databases. (That was back in the day of specializations, before the Threads curriculum.) I've described these classes mostly for the benefit of current undergrads who might be considering taking them.

CS 3210 – Design of Operating Systems
Although this is often thought of as an "introduction" class, it would be better to call this "micro", as in micro- and macroeconomics. This class explores many of the components of a major operating system by studying how Linux implements them. The big ones include kernel-level locking constructs, interrupts, the scheduler, memory management, file systems, and more recently, access control locks. Projects involve writing new components or implementing new techniques on an older kernel.
CS 3251 – Computer Networking I
This class covers all the basic stuff about networking and how things work today, flaws and everything. (Other classes cover how things should work.) Basic bus-style networks, up to bridges, hubs, switches, and modern Ethernet, protocols at every level, and routers and routing techniques.
CS 4210 – Advanced Operating Systems
As mentioned above, this class is really "Macro Operating Systems". It spends a lot more time in user-space than 3210, and explores problems that affect all operating systems (and the applications that use them) and many possible solutions to these problems. The project is to build a multi-threaded HTTP server and test client, then a proxy server, and then implement a function on the proxy server that modifies some of the incoming data. For each part, testing must be done to determine how various parameters (number of threads, size of file, etc.) affect performance.
CS 4240 – Compilers
This class is kind of a big momma: your single on-going project is to build an optimizing compiler for a teaching language called Tiger. Components of such a compiler are: lex, parse, convert to an abstract syntax tree, type check, manipulate the tree into a different form, generate assembly, perform graph analysis, optimize by using the graphs, and assign registers. The lectures and tests cover a lot of the theory from a high level.
CS 4400 – Introduction to Database Systems
Industrial Engineers are required to take this class, and it is a specialization for Computer Scientists. It covers all the major points in relational database theory (no NF2 or anything) and design. The project varies, but always involves designing and implementing a database for some particular use. (When I took it, it managed political campaign finance tracking.)

Want my advice? Just ask me for it. But I'll give you some basic advice here anyway: