I'm just about finished the Graduate University Teaching Skills Certificate (GUTS) program I took this summer. I also just had the last class of my first time contract instructing. This reflection was an assignment for GUTS, where I had to write about my micro-teaching experience in the program and teaching in general. My micro-teaching was a ten minute version of the CS Unplugged Binary Numbers activity.
One of the things I told myself before I started GUTS and teaching my first course as a contract instructor (both of which started at the same time, coincidentally) was that I would never stand in front of the class and go through slides for an entire lecture. This was especially important for my course, this being a summer semester; lectures are three hours long and have huge potential to be very boring! And even though I traditionally learned fairly well from the old status quo of slide after slide, even I grew tired of this in my later years. Teaching computer science doesn’t have to be this way.
My micro-teaching lesson for GUTS was activity based with only a few slides to demonstrate a couple of key concepts. I taught binary numbers with little cards that the “class” used to get a feel for how to count in binary. This is actually an activity based on a CS Unplugged lesson I had used once before in a high school classroom and that worked very well. Trying it in GUTS was largely an experiment in whether this activity could be done in only ten minutes.
In the end, I think that ten minutes was almost enough, but didn’t quite cut it. I would have liked to spend more time getting the class to reason through what was happening with their cards and have more discussion where I could help them reach their own conclusions. However, ten minutes was really only enough time for the class to go through the motions, not to figure things out.
Nonetheless, I feel that this sort of approach to computer science is very effective. Even if I didn’t accomplish exactly what I wanted to with my activity, the class probably walked away with a better understanding and appreciation for the topic than they would have had I simply lectured. Or, at the very least, they probably had a bit more fun!
The previously mentioned status quo of teaching in computer science isn’t so great in my opinion. Students simply expect now that their classes will consist of professors with slides that they can then download afterwards. Professors read through these slides in class, often with little interaction with the students. This can get really boring, really fast, even when some professors are able to work more interesting examples into those slides. What use is dumping all that content onto the students if they can’t concentrate and pay attention to it? Even the best speakers can lose their audience if there is no break from the slides.
Some computer science professors pause from their slides to work on code with the class. This is a great idea – it allows students to think about how they would do it, and if the professor is really good, they even take these suggestions from the class to try out. It allows students to get feedback on their understanding and start correcting misconceptions right away.
While working on code is very helpful, I think that there are many opportunities to take the idea of classroom activities further. Algorithms can be shown with interactive activities, and students could work in small groups to answer a question designed to test their understanding of a concept right after is taught. In upper year classes there are fewer students, making it possible to get into some more interesting discussions – if only the right questions were asked of the class. You can even have students come up and show how to do something if you prepare a tutorial sheet for them and bring a printed copy to class (I did this when I covered Microsoft Word and PowerPoint in my course, and it was far more interesting than watching me go through 250 slides on the subject).
There is a danger with these classroom activities, of course. Some students may feel like you are treating them as children instead of adults and others may see them as time fillers. In fact, these were both comments I received in an informal survey I conducted recently about my own course. I can understand where these comments are coming from: I remember thinking that I wasn’t learning much from these sorts of activities during my student days. But looking back, I now realize that even though the activities didn’t disseminate as much information as traditional lectures, I actually did gain a better understanding of the topic. Funny how being at the front of the room can improve one’s hindsight.
I think the current challenge for computer science education is to break the mould that is the slide-based lecture and convince professors to spend a bit of extra time preparing more interesting activities for their classes. New and creative ways to teach difficult topics need to be invented as well, since it is certainly not entirely clear how to teach all subjects in this way. There are many opportunities to share this knowledge, such as through ACM’s Special Interest Group on Computer Science Education (SIGCSE).
As for my own teaching, I will continue to promise myself to never spend an entire lecture with slides. I definitely accomplished this with my course, but it was an introduction course for arts and social science students – who knows how I would have fared in a core computer science class. But regardless of how successful I am in my future attempts, I will undoubtedly be better off having tried.