Keywords

1 Introduction

The development of advanced technologies requires lots of human resources in programming skills (Lu et al., 2017). Computer science education has become more and more important in recent years (Chen et al., 2017). Thus, computer programming course has been a very fundamental course at all levels (Gordon & Brayshaw, 2008). Vaca-Ca´rdenas et al. (2015) proposed that programming skills are very crucial for preparing students for twenty-first-century success. Therefore, there is an urgent need to improve learners’ programming skills.

Previous studies reported many strategies for improving computer programming skills, such as the use of robot (Noh & Lee, 2020), problem posing-based strategy (Wang & Hwang, 2017), developing a groupware system (Bravo et al., 2013), and flipped classroom model (Durak, 2020). However, the effectiveness of these strategies for pupils need to be investigated further. In addition, novice programmers like pupils encountered a number of problems and challenges. It was found that the first programming experience affected the interest and willingness of programming (Uysal, 2014). Therefore, it is necessary to develop a holistic model to help novice programmers to improve their programming skills. This study sought to propose an innovative model to help pupils to improve collaborative programming skills in an Arduino course. The present study also validated the feasibility of the proposed model through a case study. Arduino provided an introduction to microcontrollers, and the graphical languages made it accessible to non-programmers (Reas & Fry, 2014). The following sections will illustrate literature review, method, results, and conclusions.

2 Literature Review

Collaborative programming has been considered as a very effective strategy for improving programming skills (Bailey & Mentz, 2017). Kanika et al. (2020) found that collaborative programming enabled students to learn from peers and write efficient programs. Teague and Roe (2008) believed that collaborative programming was very helpful for novice programmers in terms of establishing collective understanding of problems, receiving peers’ feedback, and building knowledge. Many scholars investigated on how to improving programming skills through collaborative programming. For example, Lu et al. (2017) applied learning analytics to improve programming skills in a MOOCs collaborative programming course. Chorfi et al. (2020) adopted a computer-supported collaborative learning-based groupware to improve programming skills. Lu et al. (2020) proposed that a continuous inspection paradigm can serve as an effective method to ensure coding quality and improve programming skills. Wei et al. (2020) proposed a partial pair programming method, and they found that elementary school students’ computational thinking skills and self-efficacy improved through the partial pair programming method.

In addition, it was found that computer programming is a problem-solving task (Piteira & Costa, 2013), and programming skills are closed related to problem-solving skills (Fessakis et al. 2013). Previous studies also indicated that problem-solving is a crucial aspect of programming (Deek et al., 1999; Shi et al., 2019). Beck and Chizhik (2013) proposed that collaborative programming helped learners to develop confidence in problem-solving abilities. Sun et al. (2020) analyzed three contrasting pairs’ collaborative programming processes, and they demonstrated the complex relations among collaborative behaviors, discourses, and performances. However, most studies implemented collaborative programming in higher education context. Few studies conducted collaborative programming among elementary school students. To close this gap, this study aims to improve pupils’ programming skills through the proposed model. The following sections will illustrate the proposed model in depth.

3 The Model of Collaborative Programming

This study proposed an innovative model of collaborative programming, including understanding, designing, programming, sharing, evaluating, and refining. This model aims to improve learners’ collaborative problem-solving skills and programming skills, as shown in Fig. 6.1. It is a cycle, and there are six phases. The first phase is to understand the context, task requirements, and learning objectives of programming. The second phase is to design how to program and draw the flowchart to represent the thoughts. The third phase is to program collaboratively through online programming tools. In this phase, learners need to program and debug the code. The fourth phase is to share the group products with peers and teachers. The fifth phase is to evaluate the quality of group products by teachers and peers. The final phase is to refine and revise the program further based on teachers’ and peers’ suggestions.

Fig. 6.1
figure 1

The model of collaborative programming

4 Method

4.1 Participants

This study enrolled 9 pupils to voluntarily participate in this study. All the participants were divided into 4 groups of two or three students. Groups 1 and 3 were composed of girls. Groups 2 and 4 were composed of boys. The average age was 11 years. They were from the same elementary school. However, they had never collaboratively programmed before. They did not know how to program.

4.2 The Introduction to the Program

The tasks of the program were to make a fortune cat through a steering engine. The learning objectives of this program were to understand the principles and control method of a steering engine as well as acquire the applications of random number and key module. After participation in this study, students’ interest in programming and programming skills was expected to be enhanced further. The learning materials include lecture notes, Arduino tools, the examples of programming, computers, scissors, gummed tape, colored paper, and colored pencil.

4.3 Procedures

This study followed the proposed collaborative programming model to design and implement the collaborative programming activities. Table 6.1 shows the procedures of the learning activity.

Table 6.1 The procedure of the first learning activity

5 Results

5.1 Analysis of Programming Skills

Since each group collaboratively programmed and programming was the final group product, the rubric was designed to evaluate the programming skills. Table 6.2 shows the rubric of group products, and Table 6.3 shows the assessment results. It was found that group 4 achieved the highest score, followed by group 3, group 2, and group 1. Compared with previous programming skills, all the participants’ programming skills were significantly improved (Fig. 6.2).

Table 6.2 The rubric of group products
Table 6.3 The results of group products
Fig. 6.2
figure 2

The programming of group 4

5.2 Analysis of Collaborative Problem Solving

This study adopted the collaborative problem-solving framework developed by PISA (2017) to evaluate collaborative problem-solving competency. This assessment framework is a matrix which is composed of vertical components and horizontal components. The vertical components were coded as (A) explore and understand (20 scores), (B) represent and formulate (25 scores), (C) plan and execute (30 scores), and (D) monitor and reflect (25 scores) (PISA, 2017; Song, 2018). The horizontal components were coded as (1) establish and maintain shared understanding (45 scores), (2) take appropriate action to solve the problem (25 scores), and (3) establish and maintain team organization (30 scores) (PISA, 2017; Song, 2018). The result of the collaborative problem-solving competency was the matrix of ABCD1, ABCD2, and ABCD3. Table 6.4 shows the results of collaborative problem solving for four groups. It was found that group 4 achieved the highest score in collaborative problem-solving competency, followed by group 3, group 2, and group 1.

Table 6.4 The results of collaborative problem solving

5.3 Interview Results

To get a better understanding of the participants’ perceptions, all the participants were interviewed by researchers. The interview results indicated that participants were more interested in programming, and their programming skills as well as collaborative problem-solving skills were improved further.

First, the participants of the four groups addressed that this activity was very interesting, and their interests in programming increased. For example, one student said that “Before I believed that programming is very difficult. But now I believe that programming is very interesting and not difficult because I can program through the graph programming tool. The text programming tool is very boring.” Another student also addressed that “I like this activity very much. I benefit a lot from it. I have a strong sense of fulfilment when I finish program. I feel very exciting when the fortune cat can swing the arms.”

Second, the participants of four groups believed that the proposed model can improve their programming skills. For example, one student stated that “Before, I just programming directly without design. I never revise the program before. But now I learn how to programming in a proper way. I understand the task and requirements of program, then I begin to design the flow chart. And then our group program and share with peers.” Another student also revealed that “Understanding, design, programming, sharing, evaluation, and refinement are very scientific and useful for improving programming skills. I learn a lot from this model.”

Third, the participants of the four groups believed that the proposed model improved their collaborative problem-solving skills. As one student said “Initially, there are some grammar errors in programming. Later our group members collaboratively corrected the errors and tested again. Finally, the fortune cat’s arms swing.” Another student revealed that “I believe the evaluating and refining group products is very important for improving problem solving skills. I learn a lot from refinement and solve several problems.”

5.4 Implications

This study had several implications for teachers and practitioners. First, the proposed collaborative programming model was very effective and useful for improving programming skills. This model includes six phases, namely, understanding, designing, programming, sharing, evaluating, and refining. These six phases were an iterative cycle with the aim of improving programming skills. Among these six phases, programming and refining programming are very important. In addition, debugging is a fundamental skill of programming (Beller et al., 2018), and novice programmers took significantly more time in debugging (Chiu & Huang, 2015). Therefore, teachers and practitioners should allocate enough time to debug for programmers.

Second, novice programmers need help from teachers or experts. Therefore, it is suggested that teachers guide novice programmers to follow the model to improve programming skills step by step. In addition, novice programmers may encounter various kinds of problems. Teachers should provide real-time feedback for novice programmers, including emotional and cognitive feedback. For example, Fwa (2018) developed an affective tutoring system to help novice programmers to regulate their negative affect.

Third, learning activities about programming need to be elaborately designed before implementation since programming is considered to be a creative activity (Grover & Pea, 2013). The programming tasks, requirements, questions, interactive strategies, programming environments, learning materials, and assessment methods need to be designed carefully. It was found that visual presentation (diagrams, video, animation) and verbal explanation contributed to learning programming (Zhang et al., 2014). The drag and drop type applications can help younger students to learn computer science and informatics concepts (Kalelioğlu, 2015). Therefore, appropriate and smart programming environments are very crucial for improving programming skills.

6 Conclusions

This study investigated how to improve programming skills through an innovative collaborative programming model. This model included six steps, namely, understanding, designing, programming, sharing, evaluating, and refining. A case study was conducted to examine the feasibility and effectiveness of this model. The results indicated that the proposed model was very helpful and insightful for improving programming skills. The best group achieved the highest scores in terms of group product’s quality and collaborative problem-solving skills. The interview results revealed that all the participants were very interested in programming, and their programming skills as well as collaborative problem-solving skills improved further.

However, this study was constrained by several limitations. First, only four groups participated in this study. Therefore, cautions should be exercised when generalizing the results. Future study will expand the sample size to conduct the empirical study. Second, this study only examined the group product quality and collaborative problem-solving abilities. Future study will examine the effectiveness of the proposed model from other perspectives.