Abstract
Computer programming has been gradually emphasized in recent computer literacy education and regarded as a requirement for all middle school students in some countries. To understand young students’ perceptions about their own learning in computer programming, this study aimed to develop an instrument, Computer Programming Self-Efficacy Scale (CPSES), for all students above middle school levels. Based on Berland and Lee’s computational thinking framework, this study developed the CPSES items at a literacy level and finally the instrument included the five subscales: Logical Thinking, Algorithm, Debug, Control, and Cooperation. An exploratory factor analysis and reliability tests were conducted in this study. The reliability alpha was .96 for the overall scale, and ranged from .84 to .96 for the subscales. This study also confirmed the positive correlation between computer programming experience and computer programming self-efficacy. In addition, for low- and middle-experienced learners, significant gender differences were found in two subscales: Algorithm and Debug. The CPSES can be applied as an evaluation tool in computer education, robotics education, as well as integrated STEM or STEAM education in which computer programming was regarded as a part of computer literacy.
Introduction
In the 21st century, computational thinking has become an important skill of computer literacy. Computer programming learning may be regarded as a training process which can improve students’ computational thinking skills (Atmatzidou & Demetriadis, 2016; Kazimoglu, Kiernan, Bacon, & Mackinnon, 2012). Wing (2006) defined computational thinking as a fundamental ability that allows people to design and think while using the language of computation. In other words, computational thinking ability involves numerous skills such as logical thinking, algorithm selection, and systematic thinking, which can be used in solving problems encountered in various learning contexts or in daily life, not just in the professional field of computer science. Berland and Lee’s (2011) research provided a guide to explore the nature and development of computational thinking. They proposed a conceptual framework of computational thinking including the following five categories: conditional logic, algorithm building, debugging, simulation, and distributed computation. These categories focus on the abilities required during the process of computer programming, such as designing, writing, comprehending, modifying, and reusing programs. The social cooperative nature of programming work was also revealed as distributed computation in this framework. Moreover, these skills are the competencies for our next generation to construct knowledge and solve problems in their digital world, that is, they constitute a new literacy for all citizens in a digital society. In other words, computational thinking skills are required not only for computer programmers but also for all future citizens in the world. This is why computational thinking skills have been included in school curriculum standards in some countries in recent years (e.g., Department for Education [DFE], 2013; Ministry of Education [MOE], 2016; National Science Foundation [NSF], 2016). To properly evaluate students’ competencies of computational thinking skills, there is a need to develop a reliable and convenient tool for school teachers and computer educators. Examining learners’ perceptions of their own abilities of computer programming, that is, their self-efficacy for computer programming, from a literacy angle may provide a convenient solution. It is possible that some students may reject the course of computer programming due to the frustration. Their computational thinking five subscales may appear different according to the approaches.
Self-efficacy is one psychological concept which evaluates individuals’ psychological state and refers to individual beliefs in different situations (Bandura, 1997). Moreover, self-efficacy influences students’ activity choice, including how much effort or time they will invest in solving particular tasks and situations (Bandura, 1997). It has been widely accepted that self-efficacy has an intimate relationship with general academic learning achievements and with specific skill-learning performance (Bergey, Ketelhut, Liang, Natarajan, & Karakus, 2015; Girasoli & Hannafin, 2008; Hampton & Mason, 2003; Hoffman & Spatariu, 2008; Lent, Brown, & Larkin, 1984; Sins, van Joolingen, Savelsbergh, & van Hout-Wolters, 2008; Tsai & Tsai, 2003; Wilhite, 1990). The strong relationships between self-efficacy and digital learning have also been widely examined and extensively reviewed in the prior literature (see Chu & Chu, 2010; Chiu & Tsai, 2014; Tsai, Chuang, Liang, & Tsai, 2011). In computer literacy education, self-efficacy has also shown such a strong relationship. For example, Moos and Azevedo (2009) indicated that students’ computer self-efficacy is related to their learning performance in computer-based learning environments. In the earlier literature, Ramalingam and Wiedenbeck (1998) suggested that self-efficacy is one of the successful components of programming learning, while in their later study, Ramalingam, LaBelle, and Wiedenbeck (2004) found that student computer programming self-efficacy positively predicted their performance. Given that a strong relationship exists between self-efficacy and learning performance, developing a computer programming self-efficacy scale to assess and predict computational thinking competencies of students with different grade levels is important and useful for future computer education.
Some prior studies have developed scales for assessing computer programming self-efficacy. However, most of these previous studies used questionnaires to examine students’ self-efficacy regarding specific types of programming languages such as the C++ language and the Java language. Ramalingam and Wiedenbeck’s (1998) questionnaire might have been the very first questionnaire to examine novice students’ self-efficacy of learning the C++ programming language. It consisted of 32 items categorized into four factors, namely independence and persistence, complex programming tasks, self-regulation, and simple programming tasks. Based on Ramalingam and Wiedenbeck’s (1998) scale, Askar and Davenport (2009) and Govender and Basak (2015) then modified the scale to examine students’ programming self-efficacy for the Java language. All these scales were reported with good reliabilities. However, most of them focused on specific language contexts rather than general computational thinking skills for problem-solving tasks. This may be due to that these tools were developed for assessing the computer science majors at a college level or the students taking a specific programming language course. With more focus on specific programming language syntaxes, the prior developed scales may be more suitable for future programming professionals, but not necessary for all future citizen’s computational thinking skills. Therefore, this study aimed to develop a more general self-efficacy scale, based on Berland and Lee’s (2011) computational thinking framework, to examine students’ computer programming self-efficacy. This new Computer Programming Self-Efficacy Scale (CPSES) is expected to be beneficial for school computer teachers, STEM teachers, curriculum designers, and computer educators in both teaching practice and educational research.
Based on the aforementioned literature, there is a need to develop a more general version of the tools to evaluate all future citizens’ computer programming self-efficacy from a computer literacy perspective. Therefore, the purpose of this study was to develop an instrument, the CPSES, to assess learners’ computer programming self-efficacy based on a computational thinking framework. In addition to validate the CPSES instrument, this study also attempted to explore the role of programming experience played in programming self-efficacy as well as the possible gender differences in dimensions of computer programming self-efficacy.
The Development of CPSES
Berland and Lee’s (2011) conceptual framework of distributed computational thinking provided a potential framework for developing the computer programming self-efficacy scale. The framework included five elements: conditional logic, algorithm building, debugging, simulation, and distributed computation. It basically profiles the essential elements to successfully complete a programming task. Since the goal of this study was to develop a tool for self-reporting an individual’s computer programming ability of a literacy level, we added another fundamental element control to indicate the basic ability to control over the operations provided in a programming environment such as a program editor. Therefore, the initial version of the CPSES included six subscales. Four candidate items were developed for each subscale; thus, a total of 24 candidate items were included in the initial version of CPSES. Each item was designed to be evaluated by a 6-point Likert rating scale ranging from not like me at all to very much like me. The initial version was then tested using a sample of 106 college students, 22.4 years old in average. The participants were from various learning backgrounds including natural science, social science, and engineering majors. They self-reported with mixed levels of computer programming learning experience: 42%, 42%, and 16% of the participants self-reported with a beginning level (less than 1 year), a medium level (between 1 and 5 years), and an advanced level (more than 5 years) of learning experience, respectively.
Rotated Factor Loadings and Cronbach’s α Values for the Five Factors (Subscales) of the Computer Programming Self-Efficacy Scale.
Note. Overall alpha: .96; total variance explained: 83.87%.
Retained Items in the Computer Programming Self-Efficacy Scale.
A detailed description of the five subscales is presented here:
Logical Thinking: measures students’ perceptions of their ability to write a program using logical conditions. A sample item is “I can predict the final result of a program with logical conditions.” Cooperation: evaluates students’ perceptions of the cooperative nature of a programming task. A sample item is “I can work with others while writing a program.” Algorithm: measures students’ perceptions of their ability to build up an algorithm for solving a problem independently while programming. A sample item is “I can figure out program procedures without a sample.” Control: assesses students’ perceptions about their ability to control over a program editor. A sample item is “I can run and test a program in a program editor.” Debug: measures students’ perceptions of their ability to correct program errors. A sample item is “I can fix an error while testing a program.”
Intercorrelation Matrix of the Five Factors for CPSES.
p < .001.
Students’ Scores on the Scale
Overall Students’ CPSES Scores
Students’ Scores on the CPSES Subscales.
Paired t Tests for the Means of the Five Scales.
p < .01. ***p < .001.
The Role of Computer Programming Experience
An Analysis of Computer Programming Experience and Self-Efficacy.
Note. Low = less than 1 year; Middle = 1 to 5 years; High = more than 5 years.
p < .001.
Table 6 shows that significant differences were found in all subscales among the three groups. This indicated that computer programming experience did play a role in all dimensions of computer programming self-efficacies. Furthermore, the post hoc comparisons (Scheffe tests) showed the higher level of computer programming experience and the higher computer programming self-efficacy. That is, increasing the programming experience may greatly enhance students’ self-perceptions of logical thinking, algorithm development, debugging, control, and cooperation abilities for computer programming. In sum, this study confirms the positive relationship between computer programming experience and computer programming self-efficacy.
Gender Differences
Gender Comparisons on the CPSES Subscores for Nonexpert Programming Learners.
p< .05. **p< .01.
From Table 7, it can be observed that when the programming experience was controlled for the low to middle level (i.e., nonexpert level), significant differences were found only in the two subscales: Algorithm (t = 3.08, p < .01) and Debug (t = 2.46, p < .05). No significant gender differences were found in all other subscales. That is, for nonexpert programming learners, the male students had significantly higher self-efficacies than the female students in developing algorithms (Male = 3.47, Female = 2.46) and in debugging errors (Male = 4.38, Female = 3.56). However, these male and female students had similar self-efficacies in logical thinking, software control, and cooperation for programming.
Discussion
The CPSES
This study, based on a computer literacy perspective, developed the CPSES for all students above middle school levels with computer programming experience. The CPSES consisted of five subscales: Logical Thinking, Cooperation, Algorithm, Control, and Debug. The overall scale and all subscales have good reliabilities and validities. Prior studies (Askar & Davenport, 2009; Korkmaz & Altun, 2014; Ramalingam & Wiedenbeck, 1998) have built up some foundations for developing the instrument; however, the current CPSES is unique in several aspects: First, it is designed to examine general computational thinking skills at a literacy level required for all future citizens, not for computer engineering professionals. Therefore, all students above middle school levels can be the target samples of this instrument if they have the learning experience of computer programming.
Second, most prior scales were developed for specific programming languages, for example, C++ or Java. The new CPSES scale is less language-syntax-dependent than prior scales; thus, it is more likely to be used for learning in simplified programming learning contexts, such as graphic-based or block-based languages learning contexts. In sum, the CPSES developed in this study is proper for examining the general but essential dimensions of computer programming self-efficacy for computer literacy education. It is also useful for the self-assessment in interdisciplinary integrated curricula, for example, the STEM or STEAM curricula in which computer programming is usually implemented as a way to enhance young students’ computational thinking at a computer literacy level.
Third, including a social dimension subscale, that is, the Cooperation subscale, into the instrument is another unique feature of the new CPSES. The social dimension has not been addressed a lot in prior studies (e.g., Askar & Davenport, 2009; Ramalingam & Wiedenbeck, 1998). This inclusion may be due to that the current CPSES was developed based on the computational thinking framework (Berland & Lee, 2011) in which a distributed computation dimension was included. The distributed computation addresses that a programming task is always accomplished by a group of people. Programmers are usually required to work cooperatively in order to get work done efficiently. Thus, the cooperative learning competency is important for all future citizens.
Finally, self-regulation (Zimmerman & Martinez-Pons, 1990) is still the core of the CPSES developed in this study. In prior literature, Ramalingam and Wiedenbeck’s (1998) scale directly included a subscale called self-regulation indicating the self-efficacy for the self-regulation skills related to programming. In the current study, the Control and Debug are the two subscales relating to the self-efficacies of self-regulation in programming. The Control subscale assesses the confidence of controlling over the program editing and testing works, that is, the top- or highest-level control of the whole programming work. The Debug subscale assesses the confidence of planning, monitoring, evaluating, and decision-making to correct program errors. And these elements are exactly the basic elements demonstrating the self-regulation skills (Zimmerman & Martinez-Pons, 1990). Self-regulation is not only the key element for becoming a successful computer programmer but also an important factor to be a computer literate citizen.
The Role of Programming Experience
Regarding the role which programming experience plays in computer programming self-efficacy, it was found in this study that students with more experience of programming had higher computer programming self-efficacy than those with less experience. Bandura (1977, 1997) indicated that individuals’ self-efficacy derives from personal previous experience. In addition, in computer-learning contexts, consistent relationships have often been reported in the prior literature (Askar & Davenport, 2009; Hasan, 2003; Tsai & Tsai, 2010; Wang, Xu, & Chan, 2015). Askar and Davenport (2009) further indicated that computer experience significantly predicted computer programming self-efficacy. Therefore, increasing students’ programming experience may help them enhance their confidence in computational thinking skills such as Logical Thinking, Algorithm, Control, Debug, and Cooperation abilities. That is, computer programming can provide a context or act as a facilitator to assist students in developing computational thinking skills. Providing computer programming learning experience in computer literacy education and interdisciplinary curricula like STEM or STEAM education may be a practical approach to reach this goal.
Gender Difference in CPSES
Gender difference has long been noticed and addressed in both computer education and computer engineering professional career development. In the earlier literature, males were traditionally reported as outperforming females in computer-related learning, and generally had better computer attitudes, higher computer self-efficacy, and less computer anxiety than females (Durndell & Haag, 2002; Peng, Tsai, & Wu, 2006; Sainz & Lopez-Saez, 2010; Scherer & Siddiq, 2015; Vekiri & Chronaki, 2008). Although some recent studies have found mixed results regarding the gender differences in using computer and Internet technologies (Tsai & Tsai, 2010; Tsai et al., 2011; Tsai, Liang, Hou, & Tsai, 2015), the result of this study regarding the gender difference in computer programming self-efficacy may contribute some insights into the gender issue.
It was found in this study that, for those whose programming learning experience was less than 5 years, there was no significant difference between the two genders’ self-efficacy for Logical Thinking, Cooperation, or Control; however, there were significant differences in their algorithm and debug self-efficacies. That is, for nonexpert learners, males had more confidence in developing algorithms (i.e., conceptually constructing procedures for a program) and in debugging programs (i.e., locating errors in a program and fixing them). This reveals a gender gap which exists in the beginners’ self-efficacy of computer programming. Some similar findings have been reported for engineering and science students’ computer programming self-efficacy (Askar & Davenport, 2009) and for school teachers’ computer self-efficacy of operating skills (Scherer & Siddiq, 2015). However, other studies have indicated that neither was a significant gender difference found in computer programming self-efficacy while using the Java programming language (Govender & Basak, 2015) nor was one found while using the C++ programming language (Ramalingam & Wiedenbeck, 1998). These inconsistent findings could be related to the different goals and targets of the instruments used in different studies. More studies are still needed to reach a more confident conclusion regarding the gender issues in computer programming self-efficacy.
One thing worth noting may be the skills in which plausible gender differences were found for the nonexpert learners’ computer programming self-efficacy. From the findings of this study, the male beginners seemed to have more confidence in developing algorithms and debugging programs than the female beginners. These two skills are the higher level metacognitive skills for programming tasks because they involve planning, controlling, evaluating, adjusting, and decision-making. This finding is worth reexamining with a large sample of different ages. The reason for this difference is also worth studying in the future.
Conclusion
This study developed the CPSESfor assessing individuals’ perceptions of their computational thinking skills under the five categories: Logical Thinking, Cooperation, Algorithm, Control, and Debug. With a less focus on a specific programming languages’ syntax, this instrument aims to examine students’ perceptions of their competencies defined in the above five subscales required for all future citizens. It can be used to understand students’ computer programming self-efficacy in computer literacy education above the middle school levels. It can also be applied to interdisciplinary-integrated curricula such as STEM or STEAM education involving computer programming tasks (e.g., the robotics programming learning). The targets of the scale can be anyone who has computer programming experience, ranging from middle school students to adults. Based on the assessment of CPSES, school teachers and curriculum developers may develop individualized instructional materials for learners with different computer programming self-efficacies. In addition, this study confirmed the relationship between individuals’ computer programming experience and self-efficacy. Providing successful and positive programming experience may be an important goal for future education. Finally, gender differences could exist in the algorithm and the debug self-efficacies of programming learners at the beginning and the medium levels. Future studies can further explore the gender difference observed in this study and examine the interaction between gender and programming experience in computer programming self-efficacy.
Footnotes
Declaration of Conflicting Interests
The authors declared no potential conflicts of interest with respect to the research, authorship, and/or publication of this article.
Funding
The authors disclosed receipt of the following financial support for the research, authorship, and/or publication of this article: This study was financially supported by the Ministry of Science and Technology of Taiwan at the following project numbers: MOST 106-2511-S-011-010-MY3 and 106-2511-S-011-006-MY3.
