College is great. One minute you're a postgrad/researcher, making breakthroughs in your area, having 22 coffee breaks a day, avoiding your supervisor, and silently murdering anyone who dares ask "How is research going?", then all of a sudden you get asked to lecture a module. "Sure it looks pretty easy" you think, then 3 weeks into semester you realise that you have become exactly what you despised as an undergraduate.
An unprepared, unapproachable, unprofessional joke of a lecturer. This article is for you...
Traynors Twelve Step Guide
- Do you explain to your students why they are taking this module?
- Do you maintain a course website where all the support materials for your course can be found?
- Do you define the bounds of your course so students know what, precisely, the course covers?
- Do you write your own lecture notes?
- Do you update your lecture notes every year, and frequently change aspects of your course?
- Are you teaching the most advanced technologies in the area?
- Do you use real world examples to support the topics you cover in lectures?
- Are you using the best courseware/resources that are available for teaching your course?
- Do you take at least two sets of feedback from your students, and react to what they say?
- Do you offer your students weekly tutorials with anonymous question submission?
- Do you verify all your assumptions about the prior knowledge of the class
- Do you assess your class correctly, offering questions at different level of Blooms taxonomy, and using 'truth in sentencing'?
Before I dive straight into this, I should explain to you its origins. I have sat in front of some excellent lecturers. The sort of lecturers who make one hour pass in seconds, and yet you learn a great deal. I have also, alas, sat in front of some not so good, where one hour seems like 12 and you leave the theater de-motivated and possibly knowing less than when you went in.
I have also taught a bit myself, and I have seen what students respond to well, what they like to see. Obviously confidence, enthusiasm, knowledge of the area etc would rank very highly here. They are often difficult to measure however.
In the style of Joel Spolsky (12 steps to better code), I have decided to create a simple Yes/No list against which you can check your lecturing style. The lower you score, the more attention you should pay to it.
1) Do you explain to your students why they are taking this course?
Students work better when motivated. A lecturer once said to me "If you don't know why you're learning something, then stop". Unfortunately I took that advice too literally, it was good advice however.
There is a reason why undergraduates don't get too excited when they hear they are learning the Z-specification language to
formally prove that a method will indeed increment i provided i is not zero. They can't see why they should bother.
Students are usually willing to learn Java because it is so ubiquitous, they see it everywhere from the television to their mobile phone. They realise that they see real world applications of Java everywhere and hence they are motivated to learn it. (If you're not careful you can quickly kill this motivation with a few Hello World programs, followed by a monologue on Object Orientation. See "Hello World considered harmful" for more information)
When you are teaching a course, whether its on Finite Automata or Digital Signal Processing, you must find the reason why you are covering it, and explain to the students in their terms why its a good subject area to know. If you can't explain it, don't be worried, just find a researcher in the area and ask for a few examples of applications within the area. This is essential for a good course.
2) Do you maintain a course website where all the support materials for your course can be found?
This might seem obvious, and is a standard requirement in some universities but it really does help. Your role as a lecturer is to make sure that the students are equipped to pass your exam. You don't want them wasting time time in the library looking for exam papers or waiting patiently outside your office for hours because they don't realise that you work from home on Fridays. The course website is more than just a list of notes for download, it should be their one stop shop for all module resources. Your course website should contain the following...
- Course Outline and Motivation At any given time the students should know what has been covered, and what will be covered next by looking at the website. You should also have a paragraph that answers the student mantra "Why am I learning this?"
- Lecture, Lab and Tutorial Times (and locations) This necessary at the start of the course, and also your tutorial times and topics should be present here
- Contact Details How and when can students contact you.
- Lecture Notes If you use materials in your lectures, you must give them to students. Some lecturers try to boost attendance by refusing this, this is akin to the child who gets friends by ensuring he always has the best toys. Its a flawed strategy. If your lectures are good enough you shouldn't be worrying about this.
- Book Recommendations Any books you recommend should be named here, along with a link to the cheapest online store where they can be purchased. You should also make sure the library has sufficient copies.
- Previous Exam Papers, Sample Questions, Sample Answers These should be available as soon as possible. If a student asks for them, then they should go up instantly. Any delay will only prevent your students from preparing themselves for your exam.
Having a good course website makes things easy for the students, they appreciate a lecturer who puts time and dedication into their work.
3) Do you define the bounds of your course so students know what, precisely, the course covers?
It is extremely necessary to inform students what exactly this course covers. Courses in Computer Science often have very general names (e.g. Networks, Operating Systems, Programming Paradigms etc) but actually only deal with a very small section of the area they are named after. Operating Systems courses do not cover all of the operating systems out there, most of them struggle to cover one. You need to be specific and precise when defining your course.
Whilst you may recommend Tanenbaums excellent book on Operating Systems you are probably only covering 5 chapters of it in your course. This should be clear to students. Also, it should be clear what are core components and what are fringe topics, failure to do this can lead to your students wasting hours on the wrong material.
4) Do you write your own lecture notes?
The idea of lecture notes is to enable you to deliver content to the students. You should write them, as it is you who uses them. In my experience lecturers who use other peoples slides seem constantly surprised by the next slide, never seem to know where the material is going, and tend to deliver sloppy courses.
Writing your own slides makes you a better lecturer. Walking into the classroom you know what you are going to talk about, in what order, and to what level of detail. You might think you can achieve this by quickly skimming through an inherited set of slides before lectures, but it is not the same. You are still working with someone else's tools.
5) Do you update your lecture notes every year, and frequently change aspects of your course?
Updating the course keeps up your interest and motivation. Enthusiasm is essential to deliver a course well. It also ensures the material never gets old for you, and stays up to date. If your course has several "plug and play" topics to call upon ( e.g. in Cryptography there are many ciphers,methods,standards you can cover) be sure to mix it up a bit. As well as making you a better equipped lecturer, you are also encouraging students to attend your lectures, they won't simply download last years lecture notes, as this year will be different.
Also, change the assignments from year to year, and do not repeat assignments within any three year cycle. This again keeps things slightly more interesting for you and also alleviates longitudinal plagiarism.
6) Are you teaching the most advanced technologies in the area?
Do not underestimate how important this one is. I have seen courses delivered where the material is up to eight years out of date. If you are teaching AWT in Java you are troubling your students, when they go to interviews they may be asked what Java they know. AWT is the wrong answer here as, just as it was the wrong choice in the lecture theater.
It is essential that you are teaching the most commonplace modern technologies used in the area. If you don't some sharp student will realise and quickly word will spread throughout the classroom that the course is out of date. Students are de-motivated, the attendance drops, you know the rest.
I am not an advocate of bleeding edge technologies, usually using these result in a lot of your own blood being spilled. However, you should not teach technology that has been outdated. It is of little benefit to any anyone, and is usually a sign of a lazy lecturer.
7) Do you use real world examples to support the topics you cover in lectures?
You'd be surprised how happy first year students are to see that the same if-statements and for-loops they are
learning in class are being used in the creation of Quake III or the Linux Operating System. The open source world is very useful for this (amongst other things). Students enjoy seeing the material and techniques they are learning being applied "in the real world". It's particularly beneficial when you have been asked to teach advanced data structures and are trying to convince the students that Red-Black Trees are worth the effort. (Mind you , I am still struggling with that one
)
8 ) Are you using the best course-ware/resources that are available for teaching your course?
If there are successful tools designed for delivering material in your area, you should assess them and use the best one (provided it is a help and not a hindrance). Students learn in different ways, many students might be content with blackboard examples, but research has shown that visualization helps some students understand better than traditional methods. Tools such as Jeliot (programming), JFLap(Automata), BlueJ(Java-Objects Early) are written to make your job and your students lives easier. If you are struggling to explain a concept hit google and find a visualization applet, there are plenty available. If you're stuck try looking at other lecturers course websites. Again, any tools you use should named and linked on your course website.
9) Do you take at least two sets of feedback from your students, and react to what they say?
If you are not getting anonymous feedback from your students twice during the year, you effectively sticking your fingers in your ears and saying "La La La, I am a great lecturer, La La La". It is unfortunate but true that the only real judge of your ability as a lecturer is what the students think of your ability.
You will of course get the usual "The lecturer sucks" comments, but you will also get informative comments, "Your font size is too small" , "You skipped over this topic, but no one understood it", "We haven't covered File IO yet, but you assume we have", "Lecturer speaks too quietly", "The practicals are too hard". These are all chances to improve your lecturing. That is what you are paid for. Again, showing that you care about what the students think of your lectures will show them that you actually care about your job.
The reason I say at least 2 sets of feedback, is that i believe you should take one early enough in the course to make sure you aren't doing something seriously wrong, and you should definitely take one at the end with questions asking for suggested improvements (also to see if you resolved any early issues).
It is ok to write your own feedback forms, just make sure they are anonymous and include a section for general comments. Every set of feedback forms makes you a better lecturer, provided you listen to what the students say.
10) Do you offer your students weekly tutorials with anonymous question submission?
This is taxing but necessary. It is my understanding that the lucky folk in the United States get teaching assistants to cover these for them. Unfortunately for the rest of us that means giving up an hour a week for tutorials. It is necessary.
Most courses in CS are accumulative and dependant, meaning you must some topics must be covered in a certain order (e.g. cover booleans before while loops), and some topics only make sense when you have other topics to group them with (e.g. arrays and for-loops usually go together nicely, but make little sense separate). If students are struggling with boolean conditions you must resolve this before moving on to loops. Weekly tutorials are an effective way to achieve this. They tackle problems as they arise, instead of hitting lecture 23/24 and realizing that the class are struggling with lecture 4.
Anonymous submission is only way to ensure students ask the questions that they want answered. Otherwise they are silenced by the stupid question phenomena, and as a result will not ask anything. The easiest way to do this is either a comment form on your course website, or set up an anonymous email address for the class. If you have developed software for doing this, please publicize it, I will advertise and use it 
11) Do you verify all your assumptions about the prior knowledge of the class
As I said earlier, most modules in Computer Science depend on the students understanding of material covered in previous modules. The best (and in my opinion only) way to properly verify this is to ask both the lecturers and the students if they covered topic File I/O (for example). If the answer is anything other than a Yes from both parties, then you can only assume it wasn't covered properly. Lecturers will often lie or take offense about being questioned on their course, if this is an issue check the exam papers and lecture notes instead. Ditto for students, although I find they are usually more honest.
Teaching a course without first ensuring that the students have the assumed knowledge is a good way to ensure that students drop into a state of learned helplessness.
12) Do you assess your class correctly, offering questions at different level of Blooms taxonomy, and using 'truth in sentencing'?
If you are unfamiliar with Blooms Taxonomy here is a whistle stop tour and some links.
Blooms Taxonomy is a useful structure for categorising your test questions. It identifies the six levels of knowledge that students can achieve ranging from simple Knowledge (Things you can learn off, without any understanding) to Evaluation (The ability to compare and contrast solutions to a problem). Here is a quick and useful guide to Blooms Taxonomy , also there is a useful paper by Ray Lister on how to Apply Blooms Taxonomy to Computer Science.
Truth in Sentencing is the notion that when you set out to examine something you carry out your examination strictly. For example if you choose to test if students can test if a string is a palindrome, then the objective is to write code to successfully detect palindromes. Students who do not achieve this can not score above your pass mark. A lot of you are thinking "But this means most of my class will fail", this is only true if you are not breaking your questions down appropriately as described above. The paper mentioned above gives good guidelines on how to achieve this. Ray Lister has done some excellent work on how you can combine the truth in sentencing notion with Blooms Taxonomy. This work is described best in the paper Objectives and Objective Assessment
In closing
This guide is based on my recent experiences as an undergraduate (1999-2003) combined with my experience and research in the field of Computer Science Education, and finally my own teaching experience. It is my experience that lecturers who teach with the student in mind do a far better job, and tend to get the best out of students. Of course every department has its "class from hell" where paying students to attend classes still wouldn't motivate them to to attend, but these are the exception rather than the rule.
As a lecturer I can see no reason why you shouldn't strive to score at least 8-9 on this. (I realise some points aren't relevant to some courses). It is worth pointing out that the best courses I have sat have scored 10 or higher, whereas the worst courses I have sat have scored as anywhere from 0-4.
Please use the comments section for any feedback/useful links you have, or feel free to contact me. Here is my homepage
A quine is a program that prints its own source code (without any access to it). Typically quines are obscure code that few people can understand, and when run, they print the same obscure code that few people can understand. I've seen a similar trait i
Tracked: Jun 26, 14:45