We show how the first steps of algorithmic thinking and programming can be trained separately. The learner is not assumed to have any prior experience. A general framework and a sequence of training tasks is described and tested in practice with two 10th graders. Both were able to write relatively complex programs using only pen & paper within two days.
To train algorithmic thinking, computational problems are presented as games to the learner. Roughly speaking, a winning strategy corresponds to an algorithm which solves the problem. Thus, if the learner consistently wins the game for various instances then this indicates that they have found an algorithm. We describe a general mechanism to translate a computational problem into such a game. For the programming part, the learner is shown how a program can be constructed from traces. Programs are specified in a language which depends on the underlying model of computation (think of Turing machines, pushdown automata or instruction set architectures); such a model can be seen as a notional machine. The language itself is very simple yet broadly applicable due to the generality of our definition of model of computation.
|