I was lucky when I was an undergrad, I think. I got to do or teach:
- a course on PL semantics
- a course on ITP with Isabelle
- a course on Hoare Logic and refinement calculus
- a course on program derivation
- a course on advanced functional programming
- a seminar course on functional programming
- a course on model checking and abstract interpretation
- a course on concurrency verification
- a course on process algebra
- a course on computability and complexity.
- a course on compiler construction
- two special project courses on PL/FM topics.
UNSW/NICTA was a sweet spot for a long time where I could access such a broad spectrum of CS theory research and educational talent. If I compare it to other universities (including my current institution), it's rare to find a degree programme with so many relevant and interesting courses to me.