Find a university to explore its courses and reviews.
Systems programming in C and C++ covering Unix development tools, TCP/IP networking, memory management, and software engineering practices in a team environment.
AP is the hardest class I have taken at Columbia and also the best. Jae is a legend. You will learn C, C++, Unix, networking, and how to actually think like a programmer. The labs are brutal but you come out of this class a completely different engineer. My friends at other schools are jealous of the stuff I can do now.
Tips for success
Start the labs the day they are assigned. Go to TA office hours. Use valgrind early and often.
Challenging but students rate it highly.