I have been on the teaching side of the mirror since the third year of my undergraduate degree when I was a teaching assistant (TA) for an enriched first-year computer science course. Since then while in Canada I have been a TA for many systems topics, including operating systems, computer architecture, networks, distributed systems, and performance modelling and analysis (although at one point I even TAd algorithm analysis!). In my final term at Waterloo I lectured CS 457/657, System Performance Evaluation.
Since arriving at Cambridge I have lectured Distributed Systems and supervised students taking Digital Communications I, Prolog, Concurrent and Distributed Systems, and a few Part II projects. I am slated to teach Distributed Systems again in Easter term 2010.
Over the years I have become somewhat opinionated about university-level teaching. It is a professor's responsibility not only to transfer knowledge but also to encourage cognitive practices that will make students' learning easier, more effective, and more rewarding. My philosophy is to do this by providing appropriate motivation and background for material, accurately representing the difficulty of concepts so as to avoid discouraging students, and setting goals that ensure students' effort enhances their understanding. I intend to follow these tenets whether teaching courses or supervising student research.
Providing appropriate context for material is critical to successfully motivating students at all levels. Concepts that are presented in isolation, with little background or introduction, frustrate students and leave them guessing as to the concepts' relevance. One ready source of context is students' desire to understand the workings of familiar objects and processes. They may have observed computerised artefacts behaving in ways that do not seem logical or predictable; by drawing on such examples one can examine the choices made by the objects' designers and thereby explain the behaviour. The prevalence of computers and networking provides a wide variety of examples which can be related to many ideas within the computer science curriculum. Advanced students can benefit from seeing examples of increased complexity and subtlety. It is also instructive to demonstrate where intuition can lead one astray. Students can become fascinated by an apparent paradox, leaving them receptive to learning the techniques required to arrive at the correct conclusion.
These methods of encouragement can only be successful if the students have sufficient confidence to tackle topics that at first appear to be beyond them. A student developing a defeatist attitude, believing that an idea is too complex to understand, hampers learning. For this reason it is important to accurately convey the difficulty of concepts and to give students praise when they have accomplished a demanding task. If a crucial idea is simple to understand, then it should be explained as such. Computer science is a discipline that is replete with elegant constructs and results which together have tremendous power while individually being straightforward or even trivial. Examples and demonstrations can illustrate concepts that seem difficult upon first exposure.
Excessive workload is a common complaint of undergraduates and, while some topics are best learned through time-consuming exercises, many are not. Assignments should not require significant amounts of work on material that is not related to the concept under study and should entail moderate effort beyond that needed to understand this concept. Over-work can lead to development of resentment towards the material, reducing students' performance and their interest in the field.
Research students should be made to feel comfortable with their work and receive positive reinforcement and constructive criticism. The potentially isolating nature of research, coupled with the singular far-off deadline of the dissertation, can have a detrimental effect on students' productivity and motivation. While each student should receive guidance when selecting his or her thesis topic, it is important that the core research issues are posed by the student rather than by the supervisor. Learning what sorts of questions to ask is one of the most valuable lessons of graduate school, and excessive direction can lead to a student that does not know how to frame research problems.
At Waterloo, teaching assistant for:
At Guelph (even longer ago!), teaching assistant for: