- Theory of PL rotated languages every semester and project had to be in a language you didn't know coming into the class. (C#, php, pl/sql)
- Software Engineering divided into groups, each group assigned a stack to implement (mine was LAMP)
- Databases pl/sql
- Compilers C/lex/yacc
- OS projects in C and assembly
- Parallel projects in C, python and mpi
- Python language class
- Scripting languages survey was always python and ruby, but rotated in something new or interesting each section.
- A COBOL section with old mainframe
- Assembly class was in MASM
No FP for undergrads. No one had to learn Java or C#, you were given the opportunity to be exposed to them through User Groups or electives, but directed classes in them were reserved for the Information Systems people over in the Business school.
For a Software Engineering book, it's hard to beat The Pragmatic Programmer.
A good working-with-other-people book is Extreme Programming Explained 2nd ed.