Academic journal article Journal of Information Systems Education

Using the Same Problem with Different Techniques in Programming Assignments: An Empirical Study of Its Effectiveness

Academic journal article Journal of Information Systems Education

Using the Same Problem with Different Techniques in Programming Assignments: An Empirical Study of Its Effectiveness

Article excerpt


Computer programming, in its modern form, has been around for over 60 years, and became a topic taught in universities in the 1960s. Since that time various techniques and tools have been developed to assist in teaching programming (Powers et al., 2006). However, there seems to be no agreement either on what we do when we teach programming (Blackwell, 2002), or the best way to do so (Fincher, 1999). Indeed, some authors argue that programming cannot be taught, with some students having aptitude and some not (Dehnadi and Bornat, 2006). For many years, the computer industry recognized that there was a disparity in the skill level of programmers, from novice to expert, with capability differences in terms of productivity including both development and debugging being a factor of 5 or greater (McConnell, 1998). Not surprisingly, most instructors would see the same differences in their students, between those who can program, and those who struggle. In these classes, students may be classified as those who do very well, those who cope, and those who do not understand the material. The problem with this situation is that teaching such a class is difficult because those who understand think the class does not cover enough material, whereas the students at the other end of the skill range believe the instructor goes far too quickly. Learning to program is hard, and so is teaching it (Dehnadi and Bornat, 2006). Students must be capable of abstraction, which is why many believe learning to program helps with general thinking skills (Rinard, 2008; van Roy et al., 2003).

This paper examines a technique suggested as a Teaching Tip (Newby and Nguyen, 2007). The approach is based on the Applied Apprenticeship method (Astrachan and Reed, 1995), where students are given well designed program code, then given similar problems to do on their own or in groups and encouraged to apply similar techniques (functions, classes, inheritance), even to the point of utilizing the instructor's code if this is appropriate. This is similar to real-life situations, where programmers are expected to work on someone else's code and also to work in a group (Fowler, 2004).

Where the experiential approach (Newby and Nguyen, 2007) extends the Applied Apprenticeship approach is that for all assignments, the same problem is used, but employing different programming techniques. Using the same problem for assignments has some similarities with the application-based approach adopted by Astrachan, Smith and Wilkes (1997) when teaching a data structures course, and to the case study approach to teaching programming advocated by Linn and Clancy (1992). In the course described in this paper, the different techniques used for the assignments were direct in-line code, function modularity, class modularity and inheritance. A sample assignment specification is given in the Appendix. Before adopting the same problem approach for assignments, each of the four programming assignments used a different problem. This was time-consuming for the instructor to come up with new problems, and time-consuming for the students to understand the requirements of each problem. When different problems were used, it was observed that many students did not seem to understand the purpose behind each technique and its use. This applied particularly to the concept of classes. The new approach of using the same problem appeared to improve student understanding and use of classes and inheritance. However, this was a purely subjective observation. Fortunately, student scores were available for assignments and examinations for some courses that used different problems for the assignments, and others that used the same problem. From these, it was possible to address the research question:

"Does using the same problem in all assignments improve student understanding of the different methods and concepts in a programming course?"

This paper describes the course, the assessable work, the sample and the methodology, and discusses the findings. …

Search by... Author
Show... All Results Primary Sources Peer-reviewed


An unknown error has occurred. Please click the button below to reload the page. If the problem persists, please try again in a little while.