Tutor HuntResources Computer Programming Resources

Technology Enhanced Programming Pedagogy

An introductory article discussing the issues concerning programming pedagogy.

Date : 08/09/2015

Author Information

Robert

Uploaded by : Robert
Uploaded on : 08/09/2015
Subject : Computer Programming

Much of the literature surrounding the teaching of computer programming focuses on the novice learner. Much, too, has been made of the various deficiencies of novices. For instance, they have both surface and fragile knowledge, their actions are context free, and features must be provided that are independent of experience (Winslow, 1996 Mongan & Suojanen, 2000). Moreover, while there is merit in highlighting these weaknesses, there is less of a focus on how to eradicate them.

While there are many stages on the novice to expert continuum (see Table 1.1), the key factor in progressing along this continuum is the teaching style adopted by the instructor: theory X and theory Y. The application of Theory X and Theory Y to teaching uses the work by McGregor (1960) as its foundation (see Table 1.2). McGregor used these theories to form a basis for human motivation in a business environment and the two can readily be applied to an academic environment. In a theory X climate, the student is not trusted. The teacher makes the assumption that the students are taking the module simply to pass, do not want to learn and will cheat if they believe they will not be caught. This leads to an environment where assessments are rigorously defined, deadlines ruthlessly enforced, and plagiarism zealously detected (Jenkins, 2001a Weimer, 2002). It is clear, therefore, that there is no cooperation between the teacher and their students.

Theory Y is the opposite, and the fundamental difference is one of trust. Here, the teacher believes the student has a basic desire to learn that they are intrinsically motivated. The teacher aims to provide fewer, but more meaningful, assessments. Furthermore, in an effort to foster creative thinking and a feeling of mutual trust, the teacher does not enforce strict guidelines or deadlines - the student is relatively free to complete the assessment as they see fit (Trigwell, Prosser & Waterhouse, 1999). Given the level of trust involved the issue of plagiarism is a non-issue, as the student is assumed to want to learn, therefore will not cheat (Jenkins, 2001a Biggs, 1999).

This teaching style, therefore, has a profound impact on not only the approach taken by the instructor, but on both the motivation - extrinsic and intrinsic - and learning style - deep or surface - of the student. If the motivating factors of a student can be understood then, it is posited, their overall performance can be improved by way of the proper teaching methods. The more modern interpretations of extrinsic motivation tend to broach the subject from a rewards angle the student undertakes a task due to some external factor, namely a future reward of some kind. On the opposite end of the scale to extrinsic motivation is intrinsic motivation - the doing of an act because it is inherently interesting or enjoyable.

Further to this, two forms of learning are associated with both the form of motivation and teaching approach - surface learning and deep learning. Both forms of learning map very closely to the motivations of students (extrinsically motived students engage in surface learning while intrinsically motived students undertake a form of deep learning), while they also map to the main forms of teaching (See: Table 1.3) which shall be discussed in one of the following sections.

The traditional means of teaching computer programming tends towards the theory X side of the process. This results in students who are extrinsically motivated and adopt a surface learning approach as the knowledge presented is declarative in nature.

The types of learning cited above indicate that programming is far more than just knowledge that can be memorised and regurgitated verbatim it is a skill, or, indeed, multiple skills. Linn & Dalbey (1985) describe an ideal chain for learning computer programming:

Students must first learn and understand the features of a single language. They must then learn how to combine that language feature with known templates or procedural skills in order to produce a working program. They must develop design skills including planning, testing and reformulating. Finally, they must develop general problem solving skills.

They also note, however, that few students make it past the first link on the chain, which is comprised of declarative knowledge. Therefore, if one is to learn programming and progress past the level of novice the other two portions of the chain for learning must be covered these are based on procedural knowledge. As mentioned above the learning of procedural knowledge is fostered in a theory Y environment.

As the theory X approach to teaching is so prevalent it must be demonstrably shown how this approach leads to sub-par students. One of the more oft cited studies by McCracken et al. (2001) found that for a combined sample of 216 first-year students from four universities, the average score across three assessments was 22.89 out of 110. It is worth noting that the results for both verification and validation were abysmal with average scores of 1.6 (out of 60) and 0.3 (out of 10), respectively. These results surely strengthen the argument put forward by Bennedsen & Caspersen (2005) regarding the programming process.

In a recent study (Eckerdal et al., 2006) it was found that only 9% of students produced designs that were considered satisfactory (partial or complete) while 62% of students produced designs that added little or nothing to the problem statement. The study found numerous reasons for these results: students who either spent more time on the problem or undertook more computer science courses produced better results, while the best designs came from students whose overall grades were average.

Spohrer & Soloway (1986) tackled one of the common myths associated with novice programmers - that they continually make the same mistakes. They found that a number of bugs occurred so frequently that they accounted for the majority of all bugs encountered 10% of bug types accounted for between 32% and 46% of all bugs. Furthermore, one-fifth of bug types accounted for over half of the bugs which, they conclude, confirm the notion that novice programmers continually struggle with the same error types.

By adopting a predominantly theory X approach to teaching instructors are essentially encouraging their students be extrinsically motivated if students are not trusted they will go out of their way to excel in the course. Furthermore, by presenting knowledge that is declarative in nature instructors are almost forcing students into adopting surface learning. Consequently, this restricts novices to just the syntax of a language, and not the entire programming skillset.

Considering the observation that many graduating students do not display an adequate knowledge of computer programming and have not progressed beyond the level of novice, a number of questions arise as to both their level of ability and the methods used to teach them.

As such, the objective of this research is to design, implement and evaluate a theoretically-grounded software environment that enhances the learning experiences of programming students and supports their progression from novice to advanced beginner.

Given the goal of this research study, Design Science was selected as the most suitable research methodology the utility of an artefact is the ultimate goal of any Design Science research study (Hevner et al., 2004). The creation of this artefact is a purposeful attempt at addressing an unsolved problem in the IS knowledge base, and its evaluation is based around the utility provided and its success - or failure - in solving the given problem (Hevner & March, 2003).

A number of approaches were then considered to evaluate the efficiency of this artefact a mixed methodological approach was deemed to be more appropriate than either qualitative or quantitative, while an experiment, survey and semi-structured observation were employed in the experimental phase of the study. These considerations were made in light of their applicability to the overall Design Science methodology.

Chapter Two presents both the literature review and the first stage of Design Science research - identification of the problem. It argues the need for an empirical investigation into the relationship between novice programmers and the current principles and methodologies used to teach computer programming. By providing an examination of the continuum from novice to expert, along with the shortcomings of the former, the remainder of the chapter can then focus on the means of progressing them along this continuum.

The chapter then considers the learning process as it relates to novice learners. This process is broken down into numerous stages: motivation, learning style, knowledge and finally teaching style which is the factor that most influences the process as a whole. Subsequently, the learning cycle as it relates specifically to programming is discussed and how it might be applied to novice programmers. It is put forward that by applying a specific cycle repeatedly - language features, design skills and problem-solving skills - the learning of programming becomes more effective.

Finally, the specific facets of the programming skillset are considered, with specific attention paid to progressing novices along the continuum from novice to expert. These skills - planning, design, tracing, testing, debugging, documentation and doodling - are linked specifically to the design skills of the learning cycle. This chapter concludes by stating that an empirical investigation into the characteristics, frameworks and solutions in programming pedagogy and their effectiveness with relation to novice students is warranted to ascertain whether a technological approach can better serve this process and to extend the body of knowledge in the area of programming pedagogy.

By providing a full analysis of the literature surrounding novice programmers and the trends that impact them, a complete set of recommendations is the outcome of this chapter. These recommendations ultimately inform the design of the software environment as outlined in Chapter Four which encompasses two stages of Design Science research - objectives of the solution and artefact development.

Chapter Three describes the research strategy that guided this study. The chapter begins by outlining the research objective of the study. In order to accomplish this objective a number of different research paradigms are presented and discussed: interpretivism, positivism, post-positivism and Design Science. Given the objective of this study concerned the development of a software environment, Design Science was chosen as the most suitable research paradigm.

Subsequently, a number of complementary research concerns are outlined with respect to the chosen paradigm. While both qualitative and quantitative research methods are considered, a mixed methodological approach was deemed the most adequate option as it provides a means of acquiring the most substantial set of data by way of a survey and semi-structured observation. These are then used in conjunction with an experiment which tests the validity of the software environment.

Having established the essential recommendations from the literature in Chapter Two, along with the research strategy that guided the design, development and evaluation of the Design Science artefact, Chapter Four focuses on the implementation of the preceding chapters. The design and development of the artefact, the design of the traditional environment and the overall implementation of the research strategy are presented.

The chapter begins by outlining the development of the artefact this development satisfies three of the seven Design Science guidelines as defined by Hevner et al. (2004), while also passing through two of the Design Science stages. The first stage, objectives of the solution, involves the factors that influence and restrict the desirable IT artefact. The second stage, artefact development, is concerned with the development of an artefact that demonstrably solves the problems posed in the preceding stage. The output of both stages should, ultimately, be an IT artefact. This chapter clearly demonstrates that both stages were passed through and that their outcomes were provided.

The preceding sections completed three of the four stages of Design Science research. Chapter Two identified the problem and began the process of defining the objectives of the solution Chapter Four completed this process and outlined the development of the artefact while also describing the scenario in which the artefact would be tested. Chapter Five completes the Design Science process by presenting the final stage: artefact evaluation. The evaluation of the artefact was based on three distinct criteria: it is checked whether or not the IT artefact meets the previously defined objectives the actual performance of the artefact is compared to the results of alternative proposals this data is contrasted with the intended properties of the solution.

The findings reveal that a number of the practices currently used to teach computer programming to novices are insufficient, while others obstruct the process entirely. It was also noted that certain programming topics remain entirely abstract to the majority of participants. Chapter Five concludes by summarising the findings of the experiment.

The overall purpose of Chapter Six is to summarise and conclude this research study. The core of the chapter surrounds the implications of the issues as identified in Chapter Two while taking into account the results presented in Chapter Five. By describing these implications a number of contributions can be made which further the IS knowledge base.

The majority of the artefact features conformed to the recommendations of Chapter Two and, as such, their predicted outcomes were met. Certain aspects of the teaching style, along with note-taking, were the main features that did not meet the predicted outcome. At a high level, therefore, the implications are that certain theory Y concepts play no role in the ability of novices to progress to the level of advanced beginner while note-taking, despite encouragement, was seen by the majority of participants to be a non-issue. The chapter describes both the positive and negative implications of the study.

The chapter also serves to highlight both the limitations of the study and the recommendations for further research. A number of limitations are highlighted, namely lack of time and resources, the number of participants involved in the experiment phase and the presentation of the traditional environment. The recommendations, therefore, aim to alleviate these limitations.

This resource was uploaded by: Robert