MIT is has a very cool course on real-life software development. The course involves 4 major group projects, as well as code reviews by senior developers in the industry. After the coding is done, the groups sit down with real life developers and talk about code style and clarity in 60-90 minute sessions.
I think this is a fantastic idea for a course, and I think it'd be great for Waterloo to adopt something similar. Getting input from real life developers is invaluable, and I am starting to think a lot of our professors can't offer that. For instance in CS 246 "Object-Oriented Software Development", our professor said something along the lines of making your own linked list every time you need one, because then you know exactly how it works. Really? This course was supposed to teach fundamentals of software engineering, and I don't think ignoring existing code is one of those. To make things worse, it's the only mandatory course CS students will have to take that talks about developing quality software for the real world. It was bad enough that we spent most of the course learning the stupid nuances of C++, and only two lectures on design patterns.
I think Waterloo could easily adopt such a program. I'm sure there would be no problem finding volunteer developers to do code reviews with the hundreds of tech companies in Waterloo.
On an unrelated note, the Jobmine Gods have been very nice to me this semester! I will be working with Karos Health in Waterloo for my Winter term. I'm super excited. Time to brush up on my Java!