Chapter 2 Large class programming education
This chapter introduces the problem area of the study. It reviews the literature on how and why teaching and learning of introductory programming is so challenging to students and teachers alike. The chapter also raises issues of large class teaching, which is an immediate effect of massification of higher education worldwide. The study is contextualised within the two problematic areas by establishing its problem domain on the basis of the literature study. The chapter is divided into four sections, starting with a review of challenges presented by introductory programming courses in section 2.2, and large class teaching in 2.3. Specific issues related to higher education in Sub-Saharan Africa are covered in section 2.4. The chapter concludes by outlining the study‘s focus problem area in the last section (2.5).
The challenges presented by programming education
The difficulties that novice programmers encounter in learning to program have been investigated by many researchers (Sarpong, Arthur, & Owusu, 2013; Mow, 2008; Gomes & Mendes, 2007; Robins, Haden, & Garner, 2006; Huet, Pacheco, Tavares, & Weir, 2004; Robins et al., 2003). In general, these studies have shown that novice programmers make limited progress in learning introductory programming courses, the immediate results of which include high failure and dropout rates in the courses concerned (Sarpong et al., 2013; Govender & Grayson, 2006).
Ranumol, Jayaprakash, and Janakiram (2010) reported difficulties students experience at the different levels of Bloom‘s taxonomy‘s cognitive domains, apart from the programming language used. At a knowledge level, students frequently make errors because they have difficulty in remembering the syntax of a programming language, or they lack the knowledge and skill to use library functions, or they forget to declare a variable before using it in their code (Garner, Haden & Robins, 2005). Ranumol et al. (2010) and Garner et al. (2005) have identified persistent difficulties in program design (problem understanding, algorithm design, translating algorithms into program code, comprehending code, and testing and correcting code/algorithms), knowledge and skills that span the ranges of cognitive levels in Bloom‘s taxonomy (from comprehension to evaluation levels). Besides these design-related problems, Robins et al. (2006) revealed that students are equally challenged by programming language related concepts and constructs, particularly in the topics of loops, arrays, data flows, variables, Booleans and conditions.
The cause of students‘ difficulties are many and diverse (Sarpong et al., 2013). A summary is provided on the basis of Biggs‘ (2001) presage, process and product or the ―3P‖ model. Presage factors are those that happen before learning takes place, the process factors concern events during learning, while the product factors relate to the outcomes of learning
Teaching context presage factors
Teaching context factors are those that are related to what is intended to be taught, how it will be taught and assessed, the expertise of the teacher and the climate of the classroom and of the institution (Biggs, 2001). The widely cited teaching context related factors in introductory programming courses (or in novice programming, as these are referred to in some papers) are the following:
- Different aspects of programming: Robins et al. (2003) explain this problem by illustrating the difficulty associated with programming concepts and learning activities that require students to develop an understanding of programming language constructs (both syntax and semantics) such as machine-level implementation and behaviour of constructs and program code (e.g. in the case of variables, control structures) and creating mental models of problem solving with computers (comprehending the logic of a problem solution, its algorithmic representation and code equivalent in a given programming language, and the behaviour of the solution code during execution). Gomes and Mendes (2007) observe that this is challenging for students of introductory programming who are taking the course at a difficult period of their life, i.e. at the beginning of their higher education. At this time students encounter many difficulties and novelties in their new, autonomous lives. Multi-national and multi-institutional large-scale collaborative research on novice programming such as the McCracken group, the Leeds group, and the BRACE and BRACElet projects (Clear et al., 2011; Fincher et al., 2005) concentrate on investigating the way in which novice programmers learn to write code. Clear et al. (2011) focus on exploring the kind of relationship that exists between different skills required in programming (the basic constructs, tracing, explaining the purpose of code segment, and code writing) in order to determine the precursor skills that are required for code writing. Their findings suggest a combination of code tracing and code explanation skills as a strong predictor of student performance in code writing.
- Teaching methods: the main resources required for novices to learn programming are classroom teaching, laboratory sessions (practice using a computer) and programming textbooks/learning resources (Renumol et al., 2010). Gomes and Mendes (2007) have outlined the inadequacies of these methods. Some of these shortcomings are inadequacy of personalised teaching, a teaching strategy that lacks support for all students‘ learning styles, the teaching of dynamic concepts through static materials, and teachers‘ concentration on teaching programming languages and their syntactic details instead of promoting problem solving. The learning resources, particularly introductory programming textbooks, are also structured according to the constructs of the particular programming language used (Pears et al., 2007).
- Curricula, programming language and paradigm choice: a longstanding debate exists on which programming paradigm (such as object-first, imperative-first, or functional-first, etc.) and which programming language to use for introductory programming courses (ACM & IEEE, 2001, 2013). A literature survey conducted by Pears et al. (2007) demonstrates the prevalence of different views in the choice of programming language for teaching programming, with various arguments for and against, for instance, using programming languages that are in use in industries but have complex syntactic structures (such as Java, C++, C) versus using pedagogically driven language-independent tools (such as algorithmic ones) for teaching introductory programming
Student presage factors
Student presage factors relate to students‘ prior knowledge of the topic, their interest and ability in the topic, their commitment to their education, and the like (Biggs, 2001). The computer science education (CSE) literature discusses the following student factors as contributing to difficulties in learning and teaching programming.
Suitability of pre-existing learning strategies: Robins et al. (2003) and Lister et al. (2006) demonstrate that students‘ prior learning strategies obscure their ability to learn to program. For example, novice students generally approach programming ―line by line‖ and they fail to see the forest for the trees (Lister et al., 2006). That is, whereas expert programmers form abstract representations based upon the purpose of the code, novices form concrete representations based on how the code functions. Robins et al. (2003) conclude that the pre-existing learning strategy is the determinant factor that initially distinguishes effective and ineffective novices, with the latter demanding intensive follow-up and support from teachers if they are to become successful in their learning of programming.
Students’ ability and attitudes: the literature is unanimous that novice students do not know how to solve problems (Gomes & Mendes; 2007; Garner et al., 2005; Robins et al., 2003). Students lack generic problem solving skills and do not know how to create an algorithm. Gomes, Carmo, Bigotte, and Mendes (2006) and Meyer, Dyck, and Vilberg (1989, cited in Ala-Mutka, n.d.), show that student mathematical or science abilities seem to be related to success in learning to program. Robins et al. (2003) identify the important role of students‘ attitudes in confronting problematic situations (for example, when they err). In this regard, Perkins et al. (1989), cited in Robins et al. (2003), identify three types of student behaviour: stoppers, movers, and tinkerers. Stoppers simply stop and abandon all hope of solving the problem on their own when they encounter errors. Movers keep trying and improve by using feedback, while tinkerers cannot track their program and make changes more or less randomly. Stoppers and tinkerers do not progress very far in their programming task.
The process factors relate to what students and their teachers do during the time of teaching and learning. The main process-related challenges in introductory programming are:
- Study methods: the study methods followed by many novice students are not suitable for programming learning (Gomes & Mendes, 2007). Anecdotal observation shows that students sometimes apply memorisation of formulas or procedures. Some students also believe that they can learn to program mostly through reading a textbook. Mow (2008) note that the basic ICT skills gap students face (in the use of a keyboard, an operating system, and file management and related activities) obscure their engagement in their practical learning of programming.
- What learning programming means: There are diverse points of view on what learning programming means: as mathematics-based, problem solving-based, learning a particular programming language, or as code/system generation (Pears, 2010). Whatever approach is adopted, Pears et al. advise that we should give serious consideration to what we want, can and should achieve in the course. Saeli, Perrenet, Jochems and Zwanrveld (2011) remind us about the need to apply pedagogical content knowledge, which is the way of representing and formulating the subject that makes it comprehensible, to enable researchers and teachers to better understand the issues related to the teaching and learning of the subject. To uncover the pedagogical content knowledge for programming, Saeli et al. recommend teachers or researchers to answer the following core questions: what are the reasons to teach programming, what are the concepts we need to teach programming; what are the most common difficulties/misconceptions students encounter while learning to program; and how to teach the topics.
- Motivation and comfort-level: studies in educational psychology relate students‘ goal attainment with their self-efficacy (confidence and ability to execute and regulate important action in life) and goal setting (Schunk, 1990; Volet, 1997; Cheng & Chiou, 2010). Cheng and Chiou (2010) present a literature study that shows reciprocal relationship and influence amongst self-efficacy, academic (and task) performance, goal setting, motivation to learn, and goal commitment. Bergin and Reilly (2005) examined the influence of motivation (a student‘s willingness, need, desire and compulsion to participate and be successful in learning process) and comfort-level (a student‘s ease to ask and answer, self-perception, self-esteem and self-efficacy) on learning to program. The result from Bergin and Reilly‘s (2005) study shows the positive impact of intrinsic motivation and intrinsic goal setting on their programming performance. The study also establishes strong correlation between programming performance and the value students give to a task in terms of how important, how useful and how interesting an educational activity is. This portrays the importance of consideration of motivational factors (with a focus on the intrinsic ones) in the design and implementation of teaching, learning and assessment activities (Huet et al., 2004; Bergin & Reilly, 2005). Jenkins (2002) capitalises on this for the increasing diversity of students in terms of their prior experiences, their pre-existing skills, their expectations and their level of motivations.
Having divergent views on what learning to program means (discussed above) suggests the existence of different expectations as to the learning outcomes of introductory programming courses. An earlier study by Pea and Kurland (1984) placed emphasis on the importance of building the learning experiences and developmental transformations of the novice in order to create competence in the appropriate application of higher order cognitive skills. Pea and Kurland (1984) argue that the processes of learning and development in the instructional and programming environment need to build up students‘ competence in planning and problem solving heuristics in mental activities, both with and without computers. The joint ACM and IEEE CS2008 interim review of the CS2001 computing curricula added the need to have ―a more systematic approach to the treatment of learning outcomes‖ (ACM and IEEE, 2008, p. 17). Pea and Kurland (1984) advocate linking the level of programming skill to specific expected outcomes, and suggest that teachers and researchers should focus on process and the type of interactions that students (with different levels of entering skills) have with programming and the instructional environment.
This section (2.2) has outlined the challenges associated with the teaching and learning of introductory programming. Factors identified include:
- the presage: particular aspects of programming concepts and skills; problems in the teaching methods employed by programming teachers, and issues related to students‘ prior learning strategies, abilities and attitudes
- the process: the use of less suitable study methods by students, and the use by teachers of teaching methods that do not match the course‘s design philosophy and the students‘ level of competence
- the product: the gap between outlining learning outcomes that articulate students‘ conceptual skills and knowledge development and associating these outcomes with learning activities and the instructional environment.
In the next section, 2.3, I will discuss additional challenges that emerge as class sizes become larger.
The challenges of large class education
Over the past 20 years there has been a worldwide trend towards massification in higher education (Hornsby & Osman, 2014, Altbach et al., 2009). Hornsby and Osman (2014) adopt Scott‘s (1995), definition of massification as a rapid increase in student enrolment. In the case of Sub-Saharan Africa, while the region has a lower higher education enrolment than to the rest of the world, the gross enrolment ratio has doubled from 3% in 1990 to 7% in 2010, according to figures from UNESCO Institute for Statistics (UNESCO, 2010). This trend is predicted to continue (Mulryan-Kyne, 2010).
A consequence of this growth in higher education is increased pressure on institutions and teaching staff, which usually results in, among other effects, increased class size (Foley & Masingila, 2014; Mulryan-Kyne, 2010). There is a perception that large classes ―impede meaningful teaching and learning‖ (Iipinge, 2013, p. 105). This is because higher learning institutions are being expected to accommodate greater numbers of students with fewer resources (Hornsby & Osman, 2014). Table 2-1 presents a summary of the challenges that are widely cited to relate to large class teaching in higher education institutions in studies such as Prosser and Trigwell (2014), Hornsby and Osman (2014), Foley and Masingila (2014), Gobena (2013), Mulyan-Kyne (2010) and Cuseo (2007). The primary challenge facing students in large-class teaching is a decline in effective teacher-student interaction. From the teacher‘s perspectives, there is an obvious increase in staff workload, which causes undesired effects when it is combined with gaps in identifying and applying appropriate large class teaching strategies (which is the focus of Chapters 3 and 4).
A sparse body of CSEd literature reports on the issue of large class teaching of introductory computer science (Kay, 1998; Apple & Nelson, 2002; Holmquist et al., 2002; Chamillard & Merkle, 2002; Decker, Ventura, & Egert, 2006; Brown & Baatard, 2008). Apple and Nelson (2002) and Kay (1998) have found that students in large introductory computer science classes have traits that are similar to those presented in Table 2-1 increasing risk factors for their learning. Chamillard and Merkle (2002) examined issues associated with developing and administrating a large introductory computer science course and identified two core challenges as ensuring that course materials are developed and distributed to the students in a timely manner, and grading loads on instructors. With the focus on programming courses, Brown and Baatard (2008) revealed the challenges facing programming teachers of large classes in enabling students to comfortably use the development environment for their learning purposes. Apple and Nelson (2002) conclude that any shortcoming in addressing these factors leads to early frustration and disengagement on the part of students
CHAPTER 1 – I N T R O D U C T I O N
1.1 THIS WORK IS MOTIVATED BY PROBLEMS IN PRACTICE
1.2 THIS IS COMPUTER SCIENCE EDUCATION RESEARCH
1.3 THIS IS ACTION DESIGN RESEARCH
1.4 THESIS STRUCTURE
1.5 SUGGESTION ON HOW TO READ THE THESIS
1.6 LIMITATIONS OF THE STUDY
PART I: CHALLENGES OF LARGE CLASS INTRODUCTORY PROGRAMMING
CHAPTER 2 – LARGE CLASS PROGRAMMING EDUCATION
2.2 THE CHALLENGES PRESENTED BY PROGRAMMING EDUCATION
2.3 THE CHALLENGES OF LARGE CLASS EDUCATION
2.4 COMMON CHALLENGES IN SUB-SAHARAN AFRICA
2.5 PROBLEM DOMAIN OF THIS STUDY
PART II: COURSE AND LEARNING ENVIRONMENT DESIGN
CHAPTER 3 -THEORIES AND PRACTICES OF TEACHING AND LEARNING.
3.2 LEARNING THEORIE
3.3 LEARNING DESIGN
3.4 IMPROVING THE TEACHING OF PROGRAMMING
3.5 LARGE CLASS TEACHING STRATEGIES
CHAPTER 4 – TECHNOLOGIES FOR INTRODUCTORY PROGRAMMING
4.2 BLENDED LEARNING
4.3 USING PROGRAMMING TOOLS
4.4 EVALUATING TECHNOLOGY INTEGRATION AND USE
CHAPTER 5 – COURSE AND LEARNING ENVIRONMENT DESIGN
5.2 COURSE DESIGN.
5.3 LEARNING ENVIRONMENT DESIGN
PART III: IMPERIAL INVESTIGATION
CHAPTER 6 – RESEARCH DESIGN
6.2 ACTION DESIGN RESEARCH
6.3 RESEARCH QUESTION
6.4 RESEARCH VARIABLES
6.5 OVERALL DESIGN OF THE STUDY
6.6 RESEARCH INSTRUMENTS
6.7 DATA ANALYSIS
6.8 VALIDITY AND RELIABILITY
CHAPTER 7 – ACTION RESEARCH: CYCLE I
7.2 CONTEXT AND IMPLEMENTATION PATH
7.3 THE EMBEDDED RESEARCH
7.5 FINDINGS AND LESSONS LEARNED
CHAPTER 8 – ACTION RESEARCH: CYCLE II
8.2 DESIGN REFINEMENT AND CONTEXT OF IMPLEMENTATION
8.3 EMBEDDED RESEARCH
8.4 SATISFACTION SURVEY WITH COLLES
8.5 GROUNDED THEORY ANALYSIS OF QUALITATIVE DATA
8.6 ANALYSIS OF GROUP DISCUSSION AND EXPERT REVIEW DATA
8.7 ANALYSIS OF INTERVIEW DATA
PART VI: INTERPRETATION AND CONCLUSION
CHAPTER 9 – INTERPRETATION
9.2 RESULTS FROM THE TWO CYCLES OF ACTION RESEARCH
9.3 CRITICAL REALIST ANALYSIS OF THE EMERGING FINDINGS
9.4 GENERALISING THE RESEARCH PROBLEM AREA
9.5 FINDINGS OF THE STUDY
CHAPTER 10 – CONCLUSION AND RECOMMENDATION
10.1 SUMMARY OF THE RESEARCH
10.2 REFLECTING ON MY JOURNEY AS A PHD STUDENT
10.3 CONTRIBUTION OF THE STUDY TO PROGRAMMING TEACHING PRACTICE.
10.4 THE STUDY CAN CONTRIBUTE TO A THEORETICAL CSED DISCUSSION
10.5 WHAT FUTURE RESEARCHERS CAN TAKE FROM THE STUDY
GET THE COMPLETE PROJECT