At present, there is a general consensus on the nature of
learning programming, but there are different opinions on
what forms an effective environment for it. It is generally
recognized that the development of a mental model is a
formidable task for the student and that learning
programming is a complex activity that depends heavily on
metacognitive skills.
This book, based on a NATO workshop, presents both pure
cognitive models and experimental learning environments, and
discusses what characteristics can make a learning model
effective, especially in relation to the learning
environment (natural or computerized). The papers cover
cognitive models related to different aspects of
programming, classes of learners, and types of environment,
and are organized in three groups: theoretical and empirical
studies on understanding programming, environments for
learning programming, and learning programming in school
environments.
Comprehension, design, construction, testing, debugging, and
verification are recognized as interdependent skills, which
require complicated analysis and may develop independently,
and indifferent orders, in novices. This book shows that
there is unlikely to be asingle path from novice to expert
and that the structure of the final product (the program)
may not constrain the process by which it comes into being
as much as some would advocate.