Improving the programming skills of students: a critical systems approach
Van der Linde, Suné
MetadataShow full item record
Learning to program is a challenge for students and has remained a researched topic for the past two decades. Various reasons why students struggle with programming exist, and teaching programming presents its own opportunities and challenges. The researcher teaches programming, and the research topic emanated from personal teaching experiences in the classroom and a passion to address these difficulties in order to make programming understandable. The aim of the research is to address some of the difficulties experienced by programming students when learning to program. Within information systems, research is often undertaken in positivistic-, interpretive-, design science-, or critical social theory research. The suitability of critical social theory research was determined by the ontological stance of learning through change and to emancipate programming students through critical reflection. Action research was used as a tool to facilitate the process of diagnosing, planning intervention, taking action, evaluating and specifying learning. Ulrich’s systems ideas, based on the Kantian view of knowledge and reason, was used, and the ontological assumption was made that each student brings his/her own frame of reference or conditioned reality to the classroom. Each student also experiences phenomena differently according to his/her conditioned view. The more conditioned views are understood, the clearer the phenomenon (learning to program) will become, and this enables the lecturer to provide a more accommodative learning environment. Computational thinking skills were used to create a frame of reference for the programming students. Computational thinking forms part of the constructionist paradigm, which is deeply rooted within constructivism. A constructionist approach called the problem solving learning environment (PSLE), incorporating constructivist guidelines, was followed to develop an instructional design that fosters computational thinking skills when learning to program. The instructional design was planned, implemented and reflected upon within the phases of the AR, in order to develop and adapt the instructional design as well as guidelines to improve the programming skills of students using a critical systems approach.