- 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 http://csunplugged.org/, 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.
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.
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!
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!
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!).
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.