Thursday, June 02, 2005

CS courses at Waterloo

Well, the CS course assignments are among us, and with them, the standard laundry list of complaints and bitches.

I skipped doing a question worth 1.2% of my final mark because it was taking the class, on average, about 4-5 hours to do. The question involved a lot of tedious repetition, which the instructors felt were somehow worth it since it was just so damned academic. Undoubtedly, this is a sign of how useless this course will be - 5 hours to produce a formal UML specification of how to make ... get this ... a lasagna.

The next assignment for the course is now out and the instructors are showing signs of cracking. Requirements are being revised. Holes in the assignment specifications are being exposed. They're cracking!

One aspect of the assignment included the flexibility to book an item for a specific Time. Now, a Time can be an Instant, or it can be a Period. A Period is a time-range from one Instant to another Instant. An Instant is one moment in time -- 10:30 on Tuesday. Here's what the course co-ordinator has to say about it, in her post to the CS246 newsgroup:

A period is a type of time, as is an instant. An instant is something
like 10:30am on June 2nd, 2005. A period is something like 10:30-11:30am
on June 2nd, 2005 (though obviously the dates could differ). So, a period
consists of two instants, a "start" and an "end" instant.

Now, it turns out the booking system really only uses periods, and not
instants, but it's more general to pass in parameters of type Time. You
can either blindly assume it'll always resolve to a Period, and hope nobody
ever messes up, or ensure it is a period in a reasonable fashion, but
frankly, I don't really care which you choose since that's not the point of
the question. The point is to get you to implement some simple classes in C++,
and read through some code to figure out what operations the classes need to
support.
Eventually, she realizes that its retarded to book something for an Instant (yes, I'd like to book a room for exactly one second.) and she changes the specifications:

Using Time gives us generality, though in practice we'll only be using
Periods. You are not required to support Instants. You may either assume,
or ensure, that the parameter is of type Period.
This annoys me. This smacks of a poorly thought-out assignment. You wanted to demonstrate that programming for the general case is better; but all you showed was that it's not always necessarily the correct thing to do. Think of your audience; think of your users: who will want to book something for an Instant? No-one!

CS courses at Waterloo need to get off their pedagogical high-horse and realize that although the theory is great, it's not always necessary. By shoehorning computer science concepts into awkward assignments, you will only cause an entire class of students to tune you and your ideas out.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?