The Teaching Machine

Introductory Video

This is a five minute introductory video to the Teaching Machine which shows off much of what it can do.

The Recipe Approach

It is commonplace in teaching IT (as opposed to computer science or engineering) to use what might best be termed a recipe based approach. That is, one takes a particular, usually narrowly focused, task and lays out the steps that must be taken to accomplish it. Teaching an entire technology then simply becomes a matter of presenting a large number of such recipes, generally starting with the simplest and most commonplace (saving a file) and working your way out to the most esoteric (separating a document into content and style by using templates or stylesheets).

This approach is widely used in teaching applications such as word processing. Increasingly today it has taken over (one is tempted to say ' infected') help systems. Even were the approach the best for learning applications (and that is at least arguable) it is a poor way for computer science and engineering students to learn something as fundamental to their careers as programming. Yet if you work with students in the laboratory as they attempt to develop their programming skills, you discover that is the approach that many of them seek out on their own. In part, it is likely that is because it is the approach many of them are familiar with from high school which tends to focus on IT training instead of computer science.

Instructing the Machine

When skilled programmers write a line of computer code they are doing nothing more or less than issuing an instruction to a machine. Given the complexity of modern computers, how can we expect anyone to carry out such a task unless they have a thorough understanding of the machine they are trying to instruct?

student response to an anonymous survey
When I write code, I visualize how the Teaching Machine would translate it.

Unhappily, the recipe-based approach to IT training does a very poor job of developing the mental models necessary for that understanding. It's as if we had taught them how to drive in high school and now expect them to design cars. Lacking a coherent model and faced with a short term deadline students perforce fall back on the what do I have to do to get this working? approach they learned as teenagers. What is needed is a way to help them develop a clear mental model of the machine. We need to take them under the hood.

That begs the question, "What is the machine?" The obvious answer is the microprocessor but that answer, fortunately, is wrong. Fortunate because we clearly do not want to require every student to take a course in microprocessors before they are allowed to tackle programming.

Getting Underneath the Hood

The machine we "talk to" when we program is an abstraction, part microprocessor, part compiler, part memory manager. For example, when we declare a variable in a modern object-oriented language like C++ or Java, most experienced programmers would understand that space is being set aside in memory and good ones would be aware whether it was on the heap or the stack. A simple declaration involves at once

  1. a notion of the physical computer, i.e. the memory.
  2. a grasp of the compiler's role in deciding where the storage is allocated.
  3. the run time management of the storage

The Teaching Machine is an abstraction, part microprocessor, part compiler, part memory manager.

The Teaching Machine presents an integrated abstraction of the computer-we-program (different from the more familiar computer-we-use) which allows students to follow, in a consistent and revealing way, the unfolding state of the machine as code is processed.

A large applet (more of an appletiisimo) it is integrated directly into teaching web pages, allowing examples to be displayed and discussed as they would in a textbook, yet be animated at will.

Delivery Modes

Our teaching web pages have been used in the following ways:

In class
as lecture notes, replacing overheads. Instructors display the examples in class, as part of the notes, then run them in the Teaching Machine. Freed from having to laboriously detail the evolution of the machine's state on the board, the instructor can present more cycles than possible manually and spend more time on discussion. Backing up to a previous state is easy (and there's no danger it has been already erased). Instructors report enjoying the classes more and students report them as being more effective.
either off the course web site or from a provided CD, students may re-animate what examples they choose, whenever they choose, stepping through them at their own rate. In some cases we have provided videos of the instructor walking through the example. The student sees the Teaching Machine evolve and hears the instructor's voice-over discussion, just as if the dynamic experience had been recorded in class.
Careful use of stylesheets together with a modest amount of manual work allows printed versions of the course notes to be produced, which some students prefer to web-based notes when animation is not required.
Distance Education
A version of our introductory on-campus course in Introductory Programming was offered to a small no. of students through Memorial's Distance Education and Learning Technologies (DELT). The technology coexisted comfortably with the webCT course management software.

See it in Action

The best way to see it in action is to look at one of the courses we have included on the web site.