He honestly did a disservice to my learning of FP and probably set me back a good 4 or 5 years. He did a great job of filtering out students from the department though!
So after I got a horrible grade in his class I retook with the other professor, who taught the class (which was labeled as discrete math / logic class) as an extension of the textbook, and accordingly I did pretty good, but I didn't really learn anything about functional programming!
As an aside, that series of 2 classes had some amazing proofs. Proving addition on integers was an absolutely wonderful experience.
The data structures class was hard, we had a ton of material thrown at us really rapidly. I was taking the other fail out class mentioned above at the same time. When the quarter ended the department advisor asked me why I did that (because no one advised me not to...)
The C programming course, I think that hurt a lot of students. I had a good time with it, but we had to implement a shell and for many students, I think that would've been their 5th programming class ever.
Oh also that is when we had to start using source control.
One cool thing about Western is that quite a few of the professors came in from industry, so practices like "source control is part of your grade" were around really early on (again, this was 2004 or so I think).
Also tiny class sizes, and regular office hours. Professors would regularly be online chatting with students late at night the day before assignments were due. When I was at Western, only the first 2 intro courses had TAs doing any teaching, everything after that was a class of 20-30 and a professor up front.