摘要
Introduction Programming for K-12 can be traced back to the 1960s when Logo programming was firstly introduced as an intellectual thinking educational tool for teaching mathematics (Feurzeig, Papert, & Lawler, 2011). After Logo, the use of programming to teach thinking skills in K-12 was scarcely reported. In recent years, however, there has been renewed interest in introducing programming to K-12 students (Grover & Pea, 2013; Kafai & Burke, 2013). This was aroused by the availability of easy-to-use visual programming languages such as Scratch, Stagecast Creator and Alice, etc. During programming, students are exposed to computational thinking (CT), a term popularized by Wing (2006). CT involves solving problems, designing systems, and understanding human behaviors, by drawing on the concepts fundamental to computer science (Wing, 2006). Many researchers argue that CT is a fundamental skill for almost everyone in a digital age, not just for computer scientists (National Research Council, 2010; Wing, 2006). More importantly, CT is in line with many 21st century competencies such as creativity, critical thinking, and problem solving (Binkley et al., 2012). Thus, it is not surprising that many educators claim that programming provides an important context and a set of opportunities for K-12 students to develop CT (Kafai & Burke, 2013; Lye & Koh, 2014; Resnick et al., 2009). This revived interest in programming in K-12 settings suggests a need to consider how CT can be fostered effectively via programming. Studies have showed that students taught with pair programming (PP) often perform better in CT than with solo programming (Lye & Koh, 2014; Werner & Denning, 2009; Werner, Denner, Campe, & Kawamoto, 2012). PP is a practice in which two people work side-by-side at one computer, and closely collaborate to create a program. One is normally called the driver, who is responsible for using a computer to key in codes. The other is usually known as the or observer/reviewer, who takes the responsibility for observing the driver's work and providing support by pointing errors or offering ideas in solving a problem (Williams & Kessler, 2000). In view of the usefulness of fostering CT, we have used PP as a pedagogical teaching technique in a primary school for two years. Meanwhile, we have also identified some issues with putting PP into practice. One main issue is about how often the roles (driver and navigator) in a pair should switch from one to the other, since it is very important to switch roles periodically between the driver and the navigator (Williams & Kessler, 2002). In other words, what period should we choose to switch the students' roles in PP practice? Literature review Many studies have showed that PP has obvious benefits over solo programming, including PP can (1) significantly improve individual programming skills and promote productivity or program quality (Braught, Eby, & Wahls, 2008; Cliburn, 2003; Hannay, Dyba, Arisholm, & Sjoberg, 2009; Williams & Kessler, 2000); (2) reduce frustration experienced by novice programmers; increase student satisfaction, enjoyment; and foster positive attitudes in programming (Bishop-Clark, Courte, Evans, & Howard, 2006; DeClue, 2003; LeJeune, 2006; McDowell, Werner, Bullock, & Fernald, 2002; Preston, 2005; Werner, Bullock, & Fernald, 2006); (3) increase retention of students (especially for female students) in computer science courses (Li, Plaue, & Kraemer, 2013; McDowell et al., 2006); and (4) better prepare students to work as a team (Cliburn, 2003; Williams & Kessler, 2000). However, the above benefits do not occur automatically. Some experiments and empirical studies have reported inconclusive or contradictory results (Balijepally, Mahapatra, Nerur, & Price, 2009; Sfetsos, Stamelos, Angelis, & Deligiannis, 2009). This accentuates the need for further studies. …