Design Patterns in Learning to Program

Author: Ronald Porter

Porter, Ronald, 2006 Design Patterns in Learning to Program, Flinders University, School of Informatics and Engineering

This electronic version is made publicly available by Flinders University in accordance with its open access policy for student theses. Copyright in this thesis remains with the author. This thesis may incorporate third party material which has been used by the author pursuant to Fair Dealing exceptions. If you are the owner of any included third party copyright material and/or you believe that any material has been made available without permission of the copyright owner please contact with the details.


This thesis argues the case for the use of a pattern language based on the basic features of the programming language used in instruction for the teaching of programming. We believe that the difficulties that novices are known to have encountered with the task of learning to program ever since the inception of computers derive from a basic misfit between the language used to communicate with a computer, the programming language, and the way that humans think. The thrust of the pattern language idea is that patterns are the essential element in understanding how the mind words in that they are the source of that relationship that we call `meaning'. What an entity or event `means' to us derives from the effect that it has on us as living biological beings, a relationship that exists in the `real world', not from any linguistic relationship at the symbolic level. Meaning, as a real world relationship, derives from the patterns of interactions that constitute being. The meaning that an entity has for an individual is more than can be expressed in a formal definition, definitions are matters of agreement, convention, not the pattern of experience that the individual has acquired through living. What is missing for a novice in any skill acquisition process is meaning, the pattern of experience. All that we can give them using a formal linguistic system like a programming language is definitions, not meaning. Pattern language is the way that we think because it exists at that fundamental level of experience as living beings. The patterns of experience become the patterns of thought through recurrence, not through definition. But this takes time, so in presenting new material to a person trying to learn, we have to present it in the form of a pattern language, the 'cognitive map' that drives the problem solving process. Creativity is always a function of combining ideas, what is really being created is new meaning, not a program, or a house, or a poem, or a sculpture - these things are mere implementations of meaning. Ultimately meaning can derive only from experience, the pattern of life around us, so creativity is the language of experience, pattern language. The mind is the product of experience, creativity its modus operandi.

Keywords: programming,pedagogy,pattern language. learning to program,novice programmer,cognitive map,problem solving
Subject: Computer Science thesis

Thesis type: Doctor of Philosophy
Completed: 2006
School: School of Computer Science, Engineering and Mathematics
Supervisor: Dr Paul Calder