Learning, and teaching, introductory programming can be challenging, if not difficult. As a result, instructors struggle with finding the perfect pedagogy for teaching introductory programming in an effort to attract and retain students and to insure that students acquire the skills of at least a novice programmer. The authors of this chapter have found success teaching the introductory Java programming course by incorporating problem-based learning (PBL) and game design (Soares, Fonseca, & Martin, 2015). While the course has been successful in a face-to-face classroom setting, transitioning to an e-learning environment presents some challenges. This chapter describes aspects of the course structure, content and delivery, and makes recommendations to help transition those aspects to the e-learning environment.
Introduction to Programming
Learning to program is challenging for many students (Robins, Rountree, & Rountree, 2003). Introductory programming course failure rates are high, exceeding 30% and even 50% for some programs (Bennedsen & Caspersen, 2007), and students report a fear of learning to program (Rogerson & Scott, 2010). Learning to program is difficult because it requires the absorption of complex new knowledge, strategies, and skills (Rountree, Rountree, & Robins, 2002). Not only must students learn about programming structures, specific language syntax, and other basic concepts, they must also quickly begin to construct strategies for combining the new knowledge to solve problems via computer code. The task is then still not finished because the code must be tested, debugged, and often reformulated and optimized. The novice’s most challenging skill development is not in language or syntax, but rather in program planning (Spohrer & Soloway, 1986; Winslow, 1996) and generation (Rountree et al., 2002) which is a direct result of deficient problem solving skills.
Teaching programming can also be difficult because a programming course requires much more than imparting knowledge. Rather, instructors are expected to foster a learning experience with “a project realistic enough to excite interest, while providing structured problems for [the students] to practice and learn the basic skills” (Fonseca & Spence, 2014, p. 12). Complicating matters for the instructor is the fact that different students approach the task of learning to program in different ways (Bruce et al., 2004) and often have varying degrees of prior knowledge and skill level.
To address these difficulties, the authors have implemented two pedagogical strategies into the introductory programming course: game design and PBL.