Most Useful Undergraduate CS Courses
scott_s: I endorse everything nostrademons said, but I'd like to add some comparative programming languages course - which often is complementary to a compilers course.My comparative course was my first exposure to functional and logic programming - it was, in fact, the first time that I was forced to consider the entire concept of a "programming paradigm." It transformed the way I think about programming.