CS Teaching Techniques notes
How to be an Outstanding GSI


No Matter what our attempts to inform, it is our ability to inspire that will turn the tides.
-- Syracuse Cultural Workers


This is an online version of notes for a mini-lecture given in EECS 301, a course in Teaching Techniques given for CS graduate students taught by Brian Harvey. This document can also be titled as Dan waxes didactic for 45 minutes.

Background - who am I

Dan Garcia, 16-time TA (since '92), voted Outstanding Graduate Student Instructor my first and last time teaching. I work in Computer Graphics with a sub-field of scientific visualization of the cornea of the eye for the OPTICAL research project.

Why I knew I was destined to be a teacher

See http://www.cs.berkeley.edu/~ddgarcia/teaching/firsttimeta.html for the full story, but the short of it was my first discussion section ever ran for two extra hours and at the ends the students didn't want to leave. This leads me to my first point:

Love what you do

If you're fortunate to have been given a GSI position in your field, make sure you convey to the student the love for the material that you have. If you are teaching a lower-level course or one not in your field, remind yourself why you enjoy CS and generate internal self-enthusiasm for the material.

Handouts, handouts, handouts

Providing a handout summarizing every lecture you give is critical. It takes time, but it also keeps you organized, and students will love you for it. If you are lucky enough to be able to teach a course in 306 or 405 Soda (or another AV-equipped room), put the notes on the web page and use the screen for online notes.

See http://www.cs.berkeley.edu/~ddgarcia/teaching/effectiveness.html for a strong argument why I think handouts are a good idea.

Share the load

Rather than having your own section, share sections with the other TAs. You teach all the sections this week, they teach all the sections next week, etc. That way every student gets an exactly equal education and you work less, big wins for everyone! Also you get to give the same lecture several times in rapid succession which shows you how a lecture evolves and also helps you to perfect it.

Have students meet each other, develop a community

Have the first couple of assignments be done in pairs. Make them switch partners for the first 3 or 4 assignemnts. You should also take pictures of them and put it on the class homepage. Here's a good example of a nice class homepage:


Maintain a class homepage

Try to achieve the ideal of a paperless class, except when you have to print discussion section handouts because you don't teach in an AV-equipped room.

TA more than one time, even if you aren't planning to go into academia

The second/third/etc. time teaching a course is much much easier than the first, and you can see how your teaching techniques improve.

Maintain a teaching porfolio and regular self-evaluations

The GSI resource center has information and talks about this.

Use humor

It puts everyone at ease. But don't use put-down humor that may insult and alienate one or an entire group of students.

Bring water

Public speaking is powerful dessicant!

Department of redundancy department

When teaching a section, "Tell them what you're going to tell them, tell them, and then tell them what you told them".

Work at the self-paced center

You'll learn a lot of UNIX (teach yourself 9e - very useful!) and see one-on-one teaching, which is a useful teaching experience if you have never tutured someone to get a sense of what it's like.

Differences between teaching upper- and lower-division students

As you might have guessed, lower-division students require you to have more patience, hold their hands more, but not be a snob. Especially early on when they are learning lots of new systems for the first time. Even logging in can cause lots of people trouble for the first time - be very explicit (almost annoyingly so) when writing up instructions.

When you get confused at the board

Don't panic! Try to take a second to see if the situation is salvagable or if you can figure it out. If not, make a point to tell the student that you'll work on it in the meantime (then DO work on it after class) and post the answer to the newsgroup/homepage/etc.

Handling majors / non-majors

A CS course can be an indimidating thing for a non-major. When possible, try to find out who the non-majors are by asking Jay-Leno-esque demography questions on the first day. (e.g. How many people here are non-majors? What are you? (then show interest and validate what they say) Encourage them to find projects (when there is flexibility) which cross the disciplines.

"Knows when students are having difficulty"...1 (out of 5)

Anonymous feedback cards help here.

Use resources

My personal strengths

Enthusiasm, Love of the material, Interest in puzzles (following up on a question until it's solved), love of attention, secret desire to be a stand-up comedian.

My personal weaknesses

Enunciation, biting off more than I can chew (and sometimes not following up), Allowing myself to let teaching absorb every spare second of my time.

Pedagogical philosophy questions

  1. Do you single out students with questions during class?
  2. Do you teach to the low, middle or high end of the bell curve?
  3. Do you grade on a curve or on an absolute scale?
  4. What do you think about grades at all? Do you think rewarding students fosters grade mongering and undermines intrinsic motivation to learn? Or is a necessary construction to push them to learn and focus on what you've deemed important (measured by what is covered on exams)?
  5. Do you believe students should have knowledge of their grades (and rank) at all points during the semester? At what level of detail?
  6. What do you do with students whom you discover have cheated? Does the level of cheating (homework / project / test) matter, and if so, what do you do in each case?
  7. Have you ever felt burned out? Explain. How did you get yourself revitalized? How could someone avoid it in the first place?
  8. How do you strike a balance and not allow teaching to absorb every second of your free time? I.e. How do you manage your time (hours/week) and what do you delegate or just skip entirely:
    1. Answering student email
    2. Reading and answering the newsgroup
    3. Office Hours
    4. Quality of your preparation
    5. Quality of your online notes
    6. Quality of your handouts
    7. Quality of your homework (more / less re-use of old questions)
    8. Quality of your exams (more / less re-use of old questions)
    9. Attending TA discussion sections
    10. Group staff meetings
    11. Giving / grading mini-quizzes
  9. To which method of teaching do you subscribe vis-a-vis handouts?
    1. Teach directly out of the book, write almost nothing on the board / overhead transparency, have the students bring their books to class to follow along, no handouts.
    2. Teach from the book and/or personal notes, but write copious notes on the board / overhead transparency which students copy, no handouts.
    3. Teach from the book and/or personal notes, but write copious notes on the board / overhead transparency which students copy, handout an outline.
    4. Teach from the book and/or personal notes, but write copious notes on the board / overhead transparency which students copy, handout exactly what you've written on the board / overhead transparency.
    5. Teach from the book and/or personal notes, but write copious notes on the board / overhead transparency which students copy, handout exactly what you've written on the board / overhead transparency with much greater detail and examples you may have not covered.
    6. Teach from powerpoint-ish slides (or web notes), no handouts whatsoever, nothing online.
    7. Teach from powerpoint-ish slides (or web notes), no handouts because they're online.
    8. Teach from powerpoint-ish slides (or web notes), handouts are your slides / web page.
    9. Teach from powerpoint-ish slides (or web notes), handouts are the original, detailed notes you used to create your slides / page.
    10. Other?
  10. If you were given twice the staff for the same amount of students, what would you do with them? (Said another way, What are you not doing in your class due to lack of time/resources that you would do in the ideal case?) E.g., Weekly quizzes, more lab staffing, etc.
  11. What are some examples of innovative technology (hardware / software) that have the potential of significantly improving the amount students learn in your couse? [Question thanks to Mike Clancy and CS302]
  12. What are 5 key elements to being a great teacher?

WWW Maven: Dan Garcia (ddgarcia@cs.berkeley.edu) (finger) Send me feedback

Dan Garcia Berkeley Computer Science Teaching