pendent discovery, students construct and reflec-
tively explain a generic solution, which leads to
an implementation / algorithm — this approach
not only ensures to test whether students managed
to constructed their own understanding, but also
develops their abstraction skills.
• Exercises exploring the limits of the solution
(through comparing the problem to other similar
ones and through asking ’what if not’ questions)
will help the learner to develop skills to recognize
concrete situations in which known abstract solu-
tions apply.
The constructive approach and the use of teach-
back (Pask, 1975; Vygotsky, 1978), ensure that the
understanding of the problem and the understand-
ing of the solution become an observable occasion.
Our design of activities (to be performed by teams
of students) is around a series of puzzles for re-
alistic problems. In these problems, the students
will construct a solution, but instead of initially us-
ing a keyboard/computer (and a formal program-
ming language as in traditional text-based program-
ming), they will commence by constructing physi-
cal artefacts. We refer to this as concrete program-
ming although it has similarities with puzzle-based
learning (Michalewicz and Michalewicz, 2008) and
with problem-based learning (Cindy E. Hmelo-Silver
et al., 2007, and references). We demonstrate here
that high-school students can participate in the activ-
ities including some instruction in textual program-
ming.
Our approach is to use concrete physical objects to
build first phase solutions: here, the students will have
playing cards, or other physical components (like
LEGO or Konex) and they will build concrete phys-
ical solutions (but still descriptions of algorithms) to
small instances of the puzzles. The students will be
asked to attempt to obtain algorithms that work in
general. However, these algorithms may fail in some
of the many configurations. These will incorporate
elements of role-play in learning. The second compo-
nent of our approach is to use automated assessment:
we propose to use a digital camera to capture the con-
structions (algorithms) of the students, and develop
image processing software to interpret their physical
programs; then execute them (run them) with all pos-
sible inputs and award them a score relative to the
fraction of inputs in which they are correct. The third
phase of our approach is programming by simulation.
The approach is close to visual programming, but
tackling larger problems than with the physical ma-
nipulation of ‘LEGO-brick’ or ‘playing cards’. How-
ever, we developed complementary educational soft-
ware that emulates the puzzles and the concrete pro-
gramming languages. Participants use simulations of
cards, and tiles, and compose programs in the same
way as in the physical world, but all in a Graphi-
cal User Interface (GUI). For example, RoboLab by
LEGO illustrates visual programming and is used by
teenagers and university students to program Mind-
Storm Robots. The fourth stage is the transition
to textual programs. To this end we will use envi-
ronments oriented for the puzzle in the educational
programming language
MaSH
(developed by Dr. A.
Rock).
MaSH
is an imperative subset of the program-
ming language Java (and by removing many of the
sophistication of Java, first-year students understand
every line of code they use).
Students are provided with guidance and in-
struction for problem solving (Jones, 1998). We
started with classical approaches. An extreme
summary (Polya, 1957, www.math.utah.edu/˜
pa/math/polya) has been provided for high-school
trials, see Fig. 1. Later, more elaborate instruction
on problem solving will be provided. For example,
students may be provided with more details on one
of the step in Fig. 1. In general, much more sophis-
tication on problem solving will be delivered than
can be illustrated here; at each step elaborating on
the techniques for problem solving and in particular,
for algorithm analysis and design (Skiena, 2008). As
alluded to before, activities illustrate a wide range
of useful problem-solving skills: analogy, simpli-
fication, exploration, iteration, divide and conquer,
and recursion. Instruction, illustrations and materials
on methods like divide-and-conquer, reduction, and
analogy will be formally provided.
3 ILLUSTRATION
The activity we use as an example is named “sort-
ing cows” but is based on Sorting Networks (Knuth,
1973, Section 5.3.4) and has similarities with the
Sorting Networks activity popularised by “Com-
puter Science Unplugged” (csunplugged.org/sorting-
networks). In its first stage, the participants are intro-
duced to the basic operations of sorting bridges (also
named gates). The analogy is a series of rails popu-
lated by cows that are connected by the gates. The
gates may swap cows across rails, and the generic
goal is to design and arrangement of the gates that
achieves a certain objective, for example, placing the
largest cow in the first rail. These simple operations
are comparison operations and swap operations. The
Blue (also named large up) operations ensure that the
larger cow is in the lower numbered rail when two
cows (items) meet at it. The green gate (also named
IMAGE CAPTURE FOR CONCRETE PROGRAMMING - Building Schemata for Problem Solving
59