I was an undergrad at CMU and Harper broke the curriculum. The Computer Science undergrad curriculum was that one should take Programming Languages (15-212) before taking the course on Compilers (15-312). But, for a couple years they offered 212 in an alternate Java version instead of the usual ML. I wanted to take it in a _practical_ language instead of a horrible useless language, so I took the 212-Java version. Harper refused to accept that as a prereq when he was teaching 312 Compilers. Yes, I'm still bitter (20+ years later), and I still think ML is an annoying useless academic language no undergrad should be subjected to.