I think I'm suffering from academic culture shock. The two sides of the
Atlantic seem to have very different views of undergraduate teaching.
From my Canadian standpoint, UK universities seem to have shockingly
little regard for (what I would consider to be) one's duties to one's
students -- from administrative staff, as well as from teaching staff.
Before I continue, I guess I should admit that I'm only basing this on
what I've seen from half a dozen courses in one department at one
university in the UK, plus a few discussions with students in other
departments (but at the same university). So I guess one should take it
with a grain of salt.
I think the best way to sum it up came from a Discworld book. I can't
remember the exact quote, but it was something like: "Professors put
students in close proximity with books, in the hopes that something
would flow from the latter to the former. Students placed themselves in
close proxmity to the pubs, for exactly the same reason". The overall
attitude seems to be that learning happens somehow, but it's not worth
trying to figure out how it happens, how it could be improved, or how to
ensure that it actually occurs.
For example, the class schedules are very elastic. In my department,
they don't even try to start scheduling the labs until Thurs or Friday
after lectures begin. For my 1st year programming class, we only have
labs scheduled for the first half of term. We've repeatedly told the
person responsible for lab scheduling that we have labs for the entire
term, but his only comment (two weeks ago) was that it would be "tricky
to fit it in". I have no clue what happens next week. Or the week after?
Or hey, maybe it's this week that we lose our scheduled lab times!
From my flatmates, I hear that graduate classes might occur one day,
then not for another week, and then they discover that they changed the
schedule and they missed a previously-cancelled class that was
un-cancelled. They're from the US, so they're also used to regular
classes, and find this quite annoying.
I guess it stems from the old style of university, wherein students went
to a university to "read" a subject -- meaning that they literally read
books, and had lectures as special events. Now, there's nothing wrong
with that if the universities are only taking the top 0.0001% of the
population (or whatever it would have been in the 16th century). If
somebody is truly intelligent, it's not possible to stop them from
learning, so it doesn't matter if you make any attempt to teach them at
all.
But as 1%, 5%, 10%, and IIRC over 20% of the population goes to
universities, you're going to have students who can't teach themselves.
Now, I'll be the first to state that universities shouldn't be taking
that many students -- everybody would be better off if the technical
colleges took the bulk of adult education. Businesses would have
better-trained workers for their jobs, the vast majority of
non-academic-oriented students at a university would have better skills
for their careers, professors could focus more on research,
academic-oriented students could get more theoretical/research-oriented
instruction, governments would have less people exposed to critical
thinking... everybody wins! To be fair, this shift has already started
in British Columbia; I'm not claiming to have a new idea here.
But until such thinking spreads -- say, by cutting undergraduate intake
by more than 50% -- then I think that universities have a duty to teach.
Not just go through the motions of giving the same lectures you've given
for the past 10 years and failing 40% of the students, or treating
programming labs as an afterthought to the class schedule. If you're
going to do it, do it right.
Part of the problem is the department-specific nature of UK
universities. In Canadian universities, students take classes from many
departments, and switch between majors quite easily. I recall hearing
that the average is switching one's degree 4 times throughout an
undergraduate degree; that sounds quite believable to me.
As a result, most academic departments in Canadian universities view
their first-year classes as being partly a recruitment drive. In most
first-year classes, only 10-30% of the students will be specific to your
department. The other 70-90% are potential students. And since a great
deal of department funding within a university comes from the number of
students they have, the department really wants to recruit those
students! Of course, they also want to retain their "declared" 10-30%.
"Recruitment & retention" are big buzzwords.
But over here, all courses are offered by your department. There's
"mathematics for electrical engineers" and "programming for electrical
engineers", all taught by the department of electrical engineering, not
math or computer science. Students don't have a chance to really see the
other departments, so there's not much opportunity for being recruited
away. And even if they did want to switch departments, it's quite
hard. Oh, there are provisions for switching, but there's a lot of
steps. It's almost like getting a divorce -- discuss it with your
advisor to see if there's any alternatives, have a cooling-off period,
etc. In some Canadian universities, it's as simple as clicking on a few
buttons on the web-based administrative system.
Other differences I've noted are much more specific to my previous
department and this one -- or even to the instructors of the courses
I've TA'd for. For example, everybody knows that you can't learn
programming a lecture; the only way to learn it is to do it. At UVic,
the course instructors therefore make the lectures subservient to the
labs -- they make sure they introduce material to students in the
lectures, so that students will be better prepared for the labs. I
remember one instructor being very apologetic because I had to teach one
lab when students had only received one lecture about relational
databases.
But over here, they use the reverse strategy. Students encounter
material in the labs first, in the hopes that they can better understand
the lecture about that material. This seems completely backwards to
me... although I guess it depends on what the goal of the course is. If
the goal is to prepare students to understand computer architecture
(which I guess is appropriate for an electrical engineering department),
then I suppose that focusing on academic knowledge and preparing
students for an exam might make sense. It's absolutely terrible for
their programming skills, ability to build stuff, and general enjoyment
of programming, of course, but I must admit that university courses
aren't supposed to be about practical skills (that's the job of
technical colleges).
As a result, the lab instructor to student ratio here is half of UVic's.
While I was teaching at my old university, I'd handle 28 students by
myself with no difficulty. Over here, we need a ratio of 1 lab
instructor to 10-14 students. Not just for programming; that's what we
did for digital+analog electronics. Now, I never taught breadboards and
soldering at UVic, so I can't speak to the difficulty of that... but I'm
totally certain that the first-year programming labs could function with
half as many demonstrators if the course was run like the UVic courses.
Granted, the problem doesn't only rest with the teaching and
administrative staff here. I can't recall having students show up drunk
back at UVic, but we seem to get at least one each day over here. I
can't fathom the logic... "yeah, this programming class is hard. I know!
I'll get smashed before the lab. That'll help!"
But still, I don't really blame the students. I mean, kids will be kids.
They're a blank slate when they arrive at university. It's our job to
make them less blank. If that means that we need to teach them how to
read text (which seems to cause them problems!) or how to think, then
that's our job. If students show up drunk, it's because we've let them
know (consciously or not) that it's ok to do that. If we were clear
about our expectations of them, it wouldn't happen.
All in all, I haven't been very happy with this programming course. I
love programming, I love thinking logically, so I want to brainwash the
fresh blank minds into loving programming. But after the first week, it
was abundantly clear that they weren't "feeling the love". Lots of
confusion and frustration... and when I stepped back and looked at the
situation, I couldn't blame them at all. I mean, I found the lab
sheets to be confusing and boring, and I've been programming for over 20
years and work on program build systems for fun. There's no way that
they could work with new programmers.
So I spent the past two weeks totally rewriting and expanding the labs.
It's still not ideal, but they're way better than the old ones. I did
my best to include all the institutional knowledge+research about
teaching introductory programming from UVic. I got my teaching award for
teaching programming to economics + business students, so I'd better be
able to get (presumably) technically-inclined electrical engineering
students up to snuff.
Now, I've written up labs before, but this was my first time designing
an entire course -- and all at once! Previously, the instructor would
say "ok, we'll do if this week... I was thinking about having the
students write an adventure game like Zork." Then I'd say "ok, I spend 2
hours writing up a lab and send it to you around midnight for approval"
(UVic was very strict about keeping track of your time spent; the TAs
were generally hired for 120 hours each term). I'd go off and do that,
then the instructor would (presumably) glance at it and tell me it
looked great and that I should upload the lab. A week later, he'd give
me a plan for the next lab, and I'd go and do that. But in this case,
the only plan I had was the final project -- I looked at each step of
the end-goal, figured out what they needed to learn to do each step, and
then started trying to figure out interesting+easy exercises from there.
It was a bit similar to writing documentation, which I'm an expert at.
Teaching last week was a lot more fun, since I could see how students
were finding the new lab sheets. I got daily feedback on my work, which
was great! Normally with documentation, I only see the effects of 20
hours of doc work by noticing a reduction in a certain type of questions
on the mailing list over the next 3-6 months. Having immediate feedback
on my educational work is fantastic. After 2-3 iterations of the course,
I'm sure that I'll have a great set of labs.
Speaking of the labs, here's the link. If any programmers want to take a
glance at them and let me know about problems, that would be great. We
can't change the minefield exercises this year, and it's too late to
change labs 1-3. I'm keeping a list of things to change for next year,
though.
new labs
Oh, and a special message for my brother: don't complain about the lack
of memory and pointers. I totally agree that teaching C without doing
pointers is like building a bicycle without wheels, but it's not part of
the minefield exercises, and I just don't see how we can find time to
cover it. We lost the first two weeks of the labs due to confusion, and
since pointers aren't required for the graded labs, I dumped them. I'll
be making lots of changes to the minefield exercises for next year (for
mao's sake, at the very least we should malloc the game board!), but we
can't change these exercises now. :(