Could not download file: This paper is available to authorised users only.


V. Estivill-Castro

Griffith University (AUSTRALIA)
This paper describes a project that proposes a strategy to address the weaknesses in students’ abilities for abstract thinking and generic problem-solving skills. We suggest focusing on problem-solving skills outside textual programing by developing settings where descriptions of algorithmic solutions can be performed by physical and concrete constructions. It is a response to the decreasing performance in state-wide admission indicators of the cohorts arriving to university. This suggests a new way to teach is required. The proposal here is similar to new teaching trends around the work to teach computer science concepts and algorithms by implementing theories of constructivism, situated learning and collaborative learning. Thus, we provide educational tools and “situated-leaning'' activities that concur with others in the belief that these promote learning within an authentic context. We also follow the path that ``kinesthetic learning'' participation in such activities promotes learning by doing.

However, the distinctive aspect of our approach is that the focus is on developing problem-solving skills using as a vehicle the situation and challenges of some computer science concepts. That is, the objective is not to teach computer science concepts (although some of these are developed). We also provide explicit instruction on problem-solving.

In this paper we describe the approach with one activity. The activity progresses from a concrete individual experience in an outdoors environment or open gym, to working with concrete building material and then with a virtual environment in the computer. Usage of the computer is delayed and the last stage is indeed a textual based programming language; however, the progression is for reinforcing the problem-solving skills and is their applicability to larger scales of the same problem.

The ability to solve problems with a degree of creativity is highlighted as an essential characteristic for both novice undergraduate engineers and qualified IT professionals in benchmarks published by the OECD. It is usually manifested by the ability to program
a computer so that, from any set of input values that constitute a valid instance of the problem, the computer finds out the solution to such instance. There is much creativity, analysis and design skills in developing solutions, since there is usually a large body of acceptable solutions. Problem solving for IT graduates means not only solving problems, but also expressing a method, an algorithm, in the language that defines the operation of an automaton. This means not only figuring out the answer to a problem, but also describing the step-by-step process that a machine (with no intelligence or common sense) would be performing to obtain the answer.

Problem-solving skills are more important than learning several programming languages, because the technologies to program computers vary constantly - computers are faster and with more memory, but they remain fundamentally state-transition machines. Thus, learning a particular programming language is ephemeral; describing solutions to problems algorithmically is and will continue to be an endurable skill.

We do have positive and encouraging experience with our activity. However, our position is that problem solving for programming can be taught meaningfully while separating many details of syntax and semantics of programing languages and programming environments.