Deconstructing and Problem Solving in Computer Programming

Problem-solving, an integral constituent module of computer programming, can be defined as a mental modelling process in which the relationship of components are restructured in order to form a functioning whole. Problem solving can be viewed as a goal-oriented process requiring the integrated use of a range of higher-order thinking skills, such as generating ideas, making interpretations and judgements, and using strategies to manage the complexity of situations (Kirkwood 2000). Computer programming continually incorporates and facilitates this higher-ordered thinking (Reed et al. 1988). Literature on problem solving emphasizes the need to provide students with guidance to develop a self-inquiry approach in their learning (Avots 1993; Newman and Whelage 1993), and the need to provide instruction detailing the application of problem solving skills in the context of specific problems (Fay and Mayer 1988; Merideth and Lotfipour 1993).

Problem solving can be approached from two perspectives:

  1. First, it can be defined as the ability to modularise a task and restructure the relationships among object/components to form a functional solution (Yu et al. 1997). Deconstructing the initial problem or specification and developing a sequence of statements to progress and solve the problem are key.
  2. Secondly problem-solving is viewed as processing previous relevant knowledge learned and applying it to an unfamiliar situation (Cronbach 1988). Thus by definition, problem solving involves transfer and transformation of information (Soloway 1982; Schoenfeld 1985; Greeno et al. 1996; Mayer 1996). It is hypothesized that through instruction and experience, learners develop problem solving schemas enhancing their ability to deconstruct challenges, forming mental models of problems and over time increasing their repertoire of problem solving approaches.

Polya (1962, 1973) was concerned in making connections with the learners own experience and their thinking process by asking common sense and general questions. Polya’s legacy includes the use of realistic problems; the use of imitation and practice as a technique for generating problem-solving skills; and the heightened attention to heuristics and metacognition (Polya 1962; Polya 1973). As with mathematics, approaches to the teaching of problem-solving and thinking skills through computer programming based only on exposure have not usually been positive. There are some examples which demonstrate that such an approach can raise problem-solving scores (Mitterer and Rose-Drasnor 1986; Clements 1999). Other studies were based on variations of the conceptual framework hypothesis, agreeing with Papert that some software applications can make the abstract concrete in a way that has been shown to accelerate cognitive development (Papert 1980).

From Concrete to Abstract

A key component in computer programming problem solving, which challenges some students, is abstract conceptualisation. Conceptualization involves interpreting the events which have been noticed and understanding the relationships among them (Petkus 2000).

Butterworth’s (1992) research suggests that for students to develop abstract conceptualisation skills, they need to begin from concrete experience which makes sense to the world they already inhabit. Hanto and Inagaki (1992) make a distinction between ‘routine’ knowledge, which is tied to specific contexts, and ‘conceptual knowledge’ which is transferable to new situations. They argue that experience of particular concrete situations could be used, through analogy, to develop conceptual knowledge applicable to new contexts. Hanto et al. also found that those who merely observed others rather than having direct, practical experience were less able to develop to a conceptual level of thinking about the subject (Hanto and Inagaki 1992).

These ideas are very applicable to aspects of higher education, in particular to computer programming education, where it may be that learning in the abstract and deconstructing problems in an abstract context, abstracted from the concrete, can be a cause of much anxiety. If abstract conceptualisation is an emergent property of concrete experience, our abstract way of thinking will depend on having had real-life experience of problems of a similar nature, and developing a schema in our long-term memory to represent such. Development and learning skills can be transferred to new situations when students are exposed to embedded contextualised learning and experience over time. Where gaps exist in concrete experience the student may find it harder to move onto more abstract examples and anxiety can ensue. These experiences taken together may partly explain the poor educational outcomes that have been observed in many computing education contexts, as well as having a negative effect on performance.

A programming object can be concrete or abstract depending on the individual’s relationship to it. Meaning is the product of the connections made to other understandings in the mental structure of the individual. As the connections between an object and other objects increase, the more concrete the understanding becomes. Therefore programming objects, which are regarded as abstract, can become realistic and concrete if there are numerous ways to represent the link to the concrete experiences of learners. The representations or links may be horizontal rather than vertical, and abstraction can then be regarded as a process of connecting rather than ascending.

“It is a process of acting and abstracting, building new connections whilst consolidating the old ones … Perhaps it is possible to think of model building as a dialectical relation between the practical and the theoretical, rather than simple ascent from one to another” (Noss and Hoyles 1996)

It is not about the dominance of abstract over concrete (or vice versa). Rather it is the interplay between programming activity and the concrete experiences of the lived-in world. Developing continuity is integral. Computer programming links can be connected with existing understandings, where even the most abstract ideas are initiated in the senses. These basic perceptions produce mental schemas, which give rise to abstract concepts when one shifts from the concrete field.


2 thoughts on “Deconstructing and Problem Solving in Computer Programming

  1. Interesting. Ok so this is a jump from computer programming but human kind has been exceptional at problem solving – hence our success as a species but what happens when we start diagnosing the problem wrong or the problem becomes so abstract that most people simply cant individually answer the problem? Like societal problems? Does that happen in computer programming….? take your time answering that… 😉


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s