A Conceptual Model for Learning to Program in Introductory Programming Courses

Introduction Teaching a first programming course has been the subject of numerous studies (Ali & Mensch, 2008; Carter & Jenkins,2002; Kelleher & Pausch, 2005). Many confirm the notion that learning to program is considered to be a difficult task to the majority of students and has been a prime reason for students' drop out from computer courses (Anewalt, 2008; Porter & Calder, 2004). A study estimated that between 25 to 80 percent of students drop their first computer classes due to the difficulty they face in learning to program (Carter & Jenkins, 2002). To computer educators, this issue of difficulty in first programming course has been subject of debate and there is a wide acknowledgement among computer academics that something needs be done to counter this issue. Many programs have taken active steps to offset these difficulty points (Marreno & Settle, 2005). Some changed the language that is typically taught in a first programming course, used a different textbook and/or took additional measures. But the problem of difficulty in learning a computer program persisted nevertheless. To non-computer majors, this problem has caused additional steps. The basic service course in computer technology used to include programming. This basic service course has been replaced most often by a computer literacy course teaching productivity software. While there is an extended debate about whether to include programming topics in a first technology service course, there is still a need to counter the difficulty issue with learning to program (Hartman, Nievergelt, & Reichert, 2001). This paper adds to the discussion regarding steps to take to simplify the learning of programming languages in first programming courses. It takes previous studies a step further: It provides a conceptual model to simplify learning to program. This intended model of program learning is developed here along a widely known model used for planning systems and programs. The Systems Development Life Cycle (SDLC) is used in academia to teach program and system development planning. This paper uses the SDLC as a guide to develop a new model. The paper starts by describing the SDLC model and follows it by explaining the overall framework of this study and the steps followed to develop the intended model. About the Systems Development Life Cycle Programmers and systems developers often plan their programs and systems using a specified sequence of steps referred to as a Program Development (Schneider, 1999), Systems Development Cycle (Shelly, Cashman, & Vermatt, 2003) or Systems Development Life Cycle (Maraks, 2001). It is a phased approached aimed at solving computer problems, for examining an information systems and/or improving. In academia, the SDLC is widely used in systems analysis courses as well as entry level programming courses in specific or any other programming courses in general (Vandever, 2008). In systems analysis course, the emphasis for covering the SDLC is on the larger picture of developing systems and the repetitive nature of the same tasks, thus used the word "cycle" in this kind of systems. In programming courses, the use of the SDLC is intended to give a glimpse of the steps that are followed to develop the program as well as give a conceptual understanding of the flow of the program prior to coding it. Using the SDLC model to understand the program is more often beneficial to beginner programming students. The common notion that is often followed by beginner programming students is to jump into coding without having a conceptual understanding of the program or the problem they are trying to resolve. Following a planning model (such as the SDLC model) may help to shed some light on the concepts covered and the methodology followed to solve the problem in order to give some understanding of the program prior to coding it. Analysts in the systems development field do not totally agree on the steps that need to be included in the model. …