• No results found

Numerous people have stated that professional-PDEs are non-conducive to learning to program and some even state that they can actually be detrimental to novice programmers13. Most evidence for these stated views, however, is anecdotal in nature. There have been no empirical studies found, with the exception of one (de Pasquale

13

(Freund & Roberts 1996; Kölling 1999a, b; Ziegler & Crews 1999; McIver 2002; Donaldson 2003; Ko & Uttl 2003; Mueller & Hosking 2003; Murray et al. 2003; Storey et al. 2003; Warren 2003; Reis & Cartwright 2004)

III 2003), comparing a professional-IDE with a pedagogical-PDE to validate such claims. Unfortunately, the results of this study are questionable due to some of the data collection methods employed14.

Thus the main question this study attempts to answer is:

Q1: Do novice programmers in an introductory programming course perform better when using a pedagogical-PDE designed to support mechanics of programming rather than a professional-PDE?

For the purposes of this study, novice programmers are defined as students who have registered for the very first time, in their first year at the NMMU, for the introductory programming course (WRA101). This definition is similar to the definition of others, in which novice programmers are those computer users who typically have little or no experience in the domain of programming (Mayer 1981; Sutherland 1995; Cilliers 2005).

The introductory programming course is a six-month course taught in the first half of the academic year. The programming language used is Object Pascal, the programming language of Borland© DelphiTM. The PDE used is either Borland© DelphiTM 6 Professional Edition (the professional-PDE) or a modified version thereof called SimplifIDE (the pedagogical-PDE, see Chapter 4). All students are required to be proficient in basic programming using Object Pascal upon completion of the course.

The course commences with a problem-solving component in which the decomposition technique is taught. The remaining weeks cover basic concepts of imperative programming, namely: sequence, iteration, selection, variables, basic data types (integer, real, string and boolean), intermediate data types (arrays and text files), Input/Output and sub-programs (functions and procedures). Students are expected to write code that adheres to various style rules and to document code sufficiently. Students are expected to have a firm grasp of the mechanics of programming: writing, compiling, running and debugging programs. Students are assessed by a number of

14

The number of compiles and syntax errors of the pedagogical-PDE are captured, but subjects using the professional-PDE are asked to make an estimate for these values.

different assessments: weekly practical evaluations, one written and one practical semester test and a final written examination.

In order to answer Q1, it is necessary to answer the sub-questions:

Q1.1: What features should a pedagogical-PDE have to support novice programmers with the mechanics of programming in an introductory programming course?

Q1.2: Do novice programmers using a pedagogical-PDE supporting the mechanics of programming exhibit a positive measurable difference compared to those using a professional-PDE?

In order to answer Q1.1 it is necessary to examine how novice programmers think,

how they learn to program and also common problems they encounter while learning to program. This has been done in Chapter 2 through a critical analysis of literature. From this, a set of heuristics are derived that a pedagogical-PDE should meet in order to support learning to program.

Chapter 8:

Conclusion of Investigation Chapter 2:

The Process of Learning to Program Chapter 3: Program Development Environments Chapter 5: Investigative Research Methodology Chapter 6: Investigative Study Results Chapter 7: Interpretation of Results Chapter 1: Research Context Chapter 4:

Design & Implementation of SimplifIDE

Answering

Q1.1

Answering

Q1.2

The heuristics derived in Chapter 2 are refined into a set of requirements that PDEs supporting the mechanics of programming should meet in Chapter 3 (Figure 1.3). Existing professional-PDEs and pedagogical-PDEs are examined to determine features implemented and these are matched against the set of requirements. A critical analysis of literature and extant systems analysis was conducted and the results described in Chapter 3.

Most pedagogical-PDEs, however, do not implement many of the features in the feature set of an ideal pedagogical-PDE. To this end, a pedagogical-PDE, SimplifIDE, was developed and implemented. The development of this pedagogical-PDE is described in detail in Chapter 4, with special attention being paid to design decisions and the motivation for the inclusion of certain features.

In order to answer Q1.2, it is necessary to determine whether novice programmers

perform better using a pedagogical-PDE rather than a professional-PDE. This necessitates the conducting of an empirical study. There needs to be common ground between both PDEs and the same measures need to be obtainable in both PDEs. In order to conduct the study, students deemed to be novice programmers are partitioned into identical groups, namely a control group using the professional-PDE and a treatment group using the pedagogical-PDE. The selection method and experiment methodology are discussed in detail in Chapter 5. Each PDE must be instrumented to capture the same information from both experimental groups. All participants must have the same assessments administered.

Q1.2 can be refined as:

Q1.2.1: Do novice programmers using a pedagogical-PDE exhibit better

academic performance than those using a professional-PDE?

Q1.2.2: Do novice programmers using a pedagogical-PDE have more positive

perceptions than those using a professional-PDE?

Q1.2.3: Do novice programmers using a pedagogical-PDE exhibit better

Q1.2.1 seeks to determine if there is a difference in the grades of participants. The

grades obtained for assessments, as well as the final composite grade, are an indication of the knowledge that a novice programmer has acquired during the introductory programming course.

On a weekly basis, during practical sessions, participants will be required to complete an online questionnaire regarding the previous week’s practical tasks. Questions will be asked to determine a participant’s perceived learning and perceived difficulty experienced, amongst others (Appendix F). The answers will provide a measure of perceived performance, which Q1.2.2 examines.

Students are required to perform weekly practical learning activities and a single practical assessment. During these practical activities, programming events are continuously captured and require that both the professional-PDE and the pedagogical-PDE be instrumented to capture events while a participant is programming. Events captured will include:

• start and end time of a session;

• when a program was compiled or run and a copy of the source code at that point; and

• when help was accessed.

Analysing these events, it will be possible to determine programming behaviour metrics, such as the average number and time between compiles or runs, the average number and types of errors, the amount of change made to a program between compiles or runs and whether help was made use of or not. Q1.2.3 will make use of

these metrics to determine whether there is a difference between programming behaviour of participants in the experimental groups or not.

The PDE can also be used to instil good programming practices, such as secondary notation (code indentation) and code documentation. The pedagogical-PDE will be instrumented to facilitate these practices. Chapter 5 outlines the selection process, the experiment and the analysis of the data collected.

Data collected from the experiment will be analysed and the results reported in Chapter 6. In Chapter 7, the results are interpreted to answer the questions posed in this section. Based on the answers of the questions, it should be possible to determine

if professional-PDEs are actually as detrimental to novice programmers learning to program as researchers have indicated in the literature. Finally, the investigation is concluded in Chapter 8 with a summary of the entire study, the important findings and areas for future research.

Chapter 2