View on GitHub

Teaching Programming

Techniques to prepare and conduct great courses

Visual Media

Once upon a time, a teacher was the main source of information in the classroom. But today, course participants find information on any programming topic or entire courses themselves in no time. In comparison, lecturing is an ineffective method to convey information: You have to guess what information your participants are looking for, prepare it in the right granularity and convey it at the right pace. It’s a risky business.

Pin board

One of the most useful visual media are pin boards. You can use it to attach paper cards or posters using pin needles. It allows you to combine prepared with ad-hoc content and to rearrange items on the fly.

Methodically, it is a versatile medium usable for many types of brainstorming, repeating and other activities.

Most classrooms don’t have a pin board, but if you have or can get a pin board or wall, it gives you a lot of space to organize thoughts.


Whiteboard

Whiteboards are great because your class can witness the process of creation. When explaining math, this is invaluable. Because you can wipe it quickly while presenting it also provides a lot of effective space.

A legible font and space allocation needs a bit of exercise. If you start using a whiteboard, better prepare it before the lesson.

Make sure to keep the whiteboard markers separate from your permanent markers.

You can use a whiteboard to collect and sort post-its, if the room is small enough for them to be legible. I used to use magnets a lot, but they tend to ruin every surface over time.


Flipchart

Hot tip: get wax crayons to beautify whatever you write/draw.

Ideally find a place to attach the finished flipcharts somewhere.


Mind Maps

Time

10-30 minutes

Material

board or drawing paper

How to do it

Write the topic of your lesson in the middle of the board. Ask for things connected to that. Write them on the board, connected by arrows (or without). This is a faster way to get started into a new topic than e.g. affinity grouping.

As a variation, have students draw mind maps and compare them (good reflection exercise).

Comments

This big family of methods is for sorting a multitude of concepts in student’s heads. There is a multitude of variations: Connect the words by lines, arrows, arrange them to a network, or cluster them.


Videos

I use videos sparingly, because participants find and watch them in their own time. Mainly, I apply them in three scenarios:

Videos to motivate

At the beginning of a two-day Biopython programming course for 15 people, I showed a video on sickle-cell anemia. The 4:00 video clip explained the molecular basis of the disease from DNA to protein to symptoms in a patient. The main task on the first day was to develop an experimental test for the disease. All programming exercises related to sickle-cell anemia (retrieving and analysing protein and DNA sequences, for example).

Showing the video established a common ground for all participants. The participants were given the same background knowledge, and connecting the exercises to a concrete disease gave them a purpose. As a result, the video helped the entire course to move into one direction.

Videos to reinforce knowledge

During a two-day course on the Scrum methodology for 20 people, we watched the video “Sh**t bad Scrum Masters say” by Adam Weisbart. The 4:00 video clip shows a series of exaggerated mistakes of a team facilitator. The course participants already had experience as a Scrum team, and had learned basic facts during the training. The participants were given the task to note what was wrong prior to showing the video. After watching the clip, the group reported their notes, which the trainer compared to a prepared list. A few extra questions were clarified in a brief discussion. Effectively the participants not only applied their knowledge, but by observing a (staged) team they could reflect on their own style of work.

Videos to guide a discussion

At the beginning of a 90-minute meeting of a peer support group, we watched the first six minutes of the video “The Cloud” by Uri Alon were shown. In the video recording of a TED talk, Uri explains a model how scientists get stuck and unstuck again. The group subsequently discussed for one hour about “the crisis of meaning” in science. The purpose of showing the video was to prevent the discussion from drifting into a series of complaints. Showing the video achieved three things: First, it provided a model and vocabulary by which the group could express their own situation more precisely. Second, it established a positive tone from the beginning by stating that crises are normal events that can be resolved. Third, it set a boundary what the discussion would be about.

In all three cases, collect concepts or opinions after watching the video.

Caveats

In all three scenarios, I found two technical issues essential: The first issue was downloading the video from Youtube to a local file in order circumvent the risk of network failure (there are multiple tools available although many of them are linked to advertisement). The second issue was providing an appropriate sound quality. For the typical course audience a set of small speakers should be sufficient, but laptop speakers clearly are not. Taken together, I found showing short videos a versatile method to spice up a training.


Contrast pictures

Show two pictures showing different concepts (e.g. healthy/disease). Ask students to compare them & describe the differences.


Progress bar

Display how much of a lesson is over.

where course
time 1’
phases start
group size all
material board or slides

Description

Write the outline of your presentation on the board or a slide. Attach a marker to the first item before your start. Advance it while you go through your talk. If you have little space, you can -replace the outline by a 0-100% scale or a series of circles that get filled as the presentation proceeds. The advancing progress bar helps your audience to keep focused because they know how much they still have to endure.

Variation

Use physical props to display the items on your agenda


Acronym

Create an acronym, where the first characters stand for important concepts. The acronym can be visualized nicely.

Example: SOLID Object-Oriented Design:

S - Single-responsiblity Principle
O - Open-closed Principle
L - Liskov Substitution Principle
I - Interface Segregation Principle
D - Dependency Inversion Principle

Please use this tool sparingly. Forcing an acronym into every one of your lessons is Bloated, Arguably-not-helpful and Distracting.