Well at the time 2 different profs taught Scheme, one of the profs thought Scheme was so obvious that it didn't need to be explained in class. There weren't any real lessons on Scheme, the only textbook for the class was a (good) book on discrete mathematics, and we were expected to pick up functional programming on our own.
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.