Wednesday, November 25, 2009

Teaching Computer Science Concepts

I developed the below material for a workshop I gave to computer science teaching assistants today on how to teach computer science concepts. The workshop was formatted such that there were groups of two or three who got a sheet with the general tips and one of the more specific ideas. They had an assignment of what to teach and how to teach it. After about half an hour, they gave a quick eight-minute lecture.

General Tips
  • Assume students know nothing about the topic and start from the beginning; it’s a good review even for those that do know something ... but make sure it’s interesting so you don’t lose interest! (Use examples, demos, videos, etc.)
  • Ask un-intimidating questions throughout. This engages the audience and lets you know where their understanding is at.
  • Frame the discussion in a somewhat elaborate real-life example, and refer back to it throughout.
  • Be friendly and personable, speak audibly, and maintain eye contact. Don’t talk into the board or sit in front of your computer.
  • Don’t be afraid to break from the ordinary and be creative. Many people just can’t pay attention to hours of PowerPoint slides; you (and the subject matter you are teaching) will be much more memorable if you change it up.
  • Take advantage of guest lecturing opportunities – it’s much easier to try out the ‘crazier’ techniques when you only have to do one class!

Using CS Unplugged

At first glance, it might appear that the CS Unplugged activities, available at, are meant for young children rather than college students. However, with just a little bit of thought, you can adapt them for college students who are learning algorithms for the first time. Some of these would be particularly suited for a tutorial in any of the first year courses.

Your Assignment

You will read the Minimal Spanning Trees activity and prepare a lesson based on it. You can change it as needed to suit a certain level of undergraduate student (probably first year), and can use the chalkboard or a computer to conduct your activity. Be sure to make it interactive and involve the other workshop attendees as your ‘students’.

Using In-Depth Examples

When I took our first year discrete math course, COMP 1805, way back when, I remember hearing classmates complain that there was no reason to learn this stuff. (This course is one of the most challenging for new CS students.) Yet, just a year or two later, it all showed up again in very useful ways.

Many students have a hard time being motivated to learn difficult concepts if they don’t see how they connect to real-world problems, or other aspects of their domain. Creating a somewhat elaborate example to give a frame of reference to your lecture can keep the audience’s interest longer and even help make abstract subjects a little easier to grasp for certain learning styles.

Your Assignment

You are going to teach the concept of finite state machines with the assumption that your audience has never even heard the term before. You won’t be able to go into a lot of detail, but you should get across the basic concepts of the diagrams, accept states, and possibly languages.

You will choose a detailed example to frame your explanation with. Some ideas include creating a state machine to act as simple artificial intelligence for a video game, or making some kind of treasure map that forces you to choose a certain path to make it to the accept state of Treasure Island. Some examples require a bit of a back story that you have to carry through to the end. Be creative!

Online Media

Did you know that there is a wealth of resources available for you for free online? For instance, you get a lot of great hits for ‘sorting algorithms demo’, like this one from one of our very own. If you aren’t sure of the best way to visualize a concept, try finding a video or toy program online first!

Your Assignment

You will teach your choice of basic graph or tree algorithm. (You can choose based on how long it will take you to teach the concept.) You should assume that your audience knows little or nothing about graphs, and should therefore introduce the basic concepts required. You are to search for and use online resources to help you – these can include, but are not limited to, Flash animations, Java applets, images, and videos.

Whole Class Participation

Every once in a while, you might want to try getting the whole class to participate in an activity to reinforce something you’ve taught, or to introduce a new topic in a fun way. One topic to look up is ‘active learning’, which essentially brings students into the equation. One useful page on the topic includes many links to potential activities.

You’re probably wondering why we’re talking about something that seems more suited to an arts class discussion group. It’s true that this type of instruction seems to be very rare in computer science, but there’s a lot of potential if we can apply the ideas creatively (if nothing else, a little variety is a good thing!).

Your Assignment

On a website with specific types of activities for active learning, a ‘Debate Discussion’ is described:
  • What: A pro and con discussion of a controversial issue. Objective is to convince the audience rather than display skill in attacking the opponent.
  • When: In discussion a controversial issue on which there are fairly definite opinions in the group on both sides to bring these differences out into the open in a friendly manner.
  • How: Divide the group into sides of pro and con. Each speaker should be limited to a predetermined time followed by a rebuttal if desired.
There are many areas of computer science that students probably have strong opinions about. Today, we’re going to pick the old C++ vs. Java debate. Forcing students to side with one or the other (whether they agree with that side or not) will get them to think about the language constructs and general design. You will give your workshop audience members a side, and facilitate the debate between them. Introduce the topic and explain the activity (motivate why!).


Post a Comment

Comments are moderated - please be patient while I approve yours.

Note: Only a member of this blog may post a comment.