The Effect of Algorithm Education on Students’ Computer Programming Self-Efficacy Perceptions and Computational Thinking Skills

In this study, the effect of algorithm education on pre-service teachers’ computational thinking skills and computer programming self-efficacy perceptions were examined. In the study, one group pretest posttest experimental design was employed. The participants consisted of 24 (14 males and 10 females) pre-service teachers, majoring in Computer Education and Instructional Technology (CEIT). In order to determine the pre-service teachers’ computer programming self-efficacy perceptions, the Computer Programming Self-Efficacy Scale was used, whereas Computational Thinking Skills Scale was used to determine their computational thinking skills. The Wilcoxon Signed-Rank Test was used to analyze the differences between pretest and posttest scores of students' computer programming self-efficacy perceptions and computational thinking skills. Throughout the practices, 10 different algorithmic problems were presented to the students each week, and they were asked to solve these problems using flow chart. For 13 weeks, 130 different algorithmic problems were solved. Algorithm education positively and significantly increased students' simple programming tasks, complex programming tasks and programming self-efficacy perceptions. On the other hand, algorithm education had a positive and significant effect only on students’ algorithmic thinking sub-dimension but did not have any effect on other sub-dimensions and computational thinking skills in general.


Introduction
The process of creating software that brings technological equipment to life, in other words, the programming process, has gained importance today and has emerged as an important skill that every individual should have. Teaching processes have been shaped in this framework, and it has been ensured that programming education takes place as a course in schools starting from elementary school (Sayın, 2017; International Society for Technology in Education [ISTE], 2018). In Turkey, coding education has been included in Information Technologies and Software course starting from the 5th grade (11 years old) since 2012. Recently, it has come to the agenda to further reduce the age range of coding education and to include this content in all age groups from 1st grade to 4th grade (between 7-10 years old).
In short programming can be said as a series of codes written to make electronic devices perform certain functions in order to produce solutions to problems (Arabacıoğlu, Bülbül & Filiz, 2007;Blackwell, 2002;Ersoy, Madran & Gülbahar, 2011;Yükseltürk & Altıok, 2016). Programming skill is not only a skill required to produce software for computers. Students' high-level skills develop during the programming process. For example, Akçay and Çoklar (2016) describe these skills as critical thinking, algorithmic thinking, analytical thinking, problem solving, multidimensional thinking, creativity and questioning. There are also studies showing that programming skills have positive effects on computational thinking skills (Lye & Koh, 2014;Pala & Mıhcı Türker, 2019;Yıldız & Çiftçi, 2017). Computational thinking is a kind of analytical thinking, which includes elements such as problem solving, system design and understanding of human behavior based on the concepts of computer science (Wing, 2006). Korkmaz, Çakır & Özden (2017) gathered the computational thinking skills in five sub-dimension on the scale they developed. These skills are creativity, algorithmic thinking, collaboration, critical thinking and problem solving. In this study, these sub-dimension of computational thinking skills were used.
The programming process takes place in the development stage of the software development process. The programming process in this stage consists of four stages. Algorithm development is at the second stage of these processes (Çamoğlu, 2018). Akçay and Çoklar (2016) states that the algorithm as the process of developing a design that reveals how the computer should work and the process of finding a solution to a problem. According to Gökoğlu (2017), the operations performed to solve the problem during the programming process vary according to the programming languages but the logic does not change. To this end, students should be given the logic of programming before moving on to any programming language teaching. Algorithms form the basis of programming logic. In other words, without any programming language, students are taught the logic of programming with algorithm. With algorithm, it is possible for the individual to write the processing steps of the program in his or her own language, that is, to create the flowchart of the program with the so-called code. When the basic steps of algorithm development are examined, individuals should first identify the problem, define the inputs and outputs and determine possible solutions. Then, they should parse these solutions into steps and connect these steps to each other, that is, building an algorithm (Çamoğlu, 2018). In this process, it is possible that the students will benefit from some sub-dimensions of computational thinking skills such as algorithmic thinking, problem solving and creativity.
However, many studies indicated that programming is a difficult process and there are some problems in programming education (Arabacıoğlu, Bülbül and Filiz, 2007;Gomes and Mendes, 2007;Esteves and Mendes, 2004;Hongwarrittorn and Krairit, 2010;Ozoran, Çağıltay and Topalli, 2012;Robins, Rountree and Rountree, 2003;Saygıner and Tüzün, 2017). The complex structure of the programming language is listed as one of these problems (Gomes and Mendes, 2007;Kalelioğlu, 2015). Aşkar and Davenport (2009) state that the programming course at the university is perceived as quite difficult by the beginner-level students. Students' initial acceptance of programming as difficult can cause them to fail in this course. For example, Altun and Mazman (2012) emphasize that students may fail due to the fact that students accept programming as difficult and have low selfefficacy perceptions.
In the light of this information, it can be said that with the algorithm education, the student will get the logic of programming and focus on the solution process of the problems. In other words, without the complex language of programming, it is provided to comprehend the logic of programming and enter the programming course. On the other hand, algorithm education is one of the computer science unplugged activities. With computer science unplugged activities, it is aimed to teach computer science to students without computers. Bell (2014) states that with computer science unplugged activities, students interact directly with content and not bothered with unnecessary details. In addition, computer science unplugged enables them to learn how computing principles work, providing students with the opportunity of direct observation and experimentation. Computer science unplugged activities include many subjects such as algorithms, human computer interaction, artificial intelligence, computer graphics, data compression and encryption (Bell, 2014). Bell, Alexander, Freeman, and Grimley (2009) state that engaging in activities away from the computer might be effective for students because they might see the computer as a tool or toy. Students may think of problems encountered as a computer programmer by getting away from the computer. They can learn subjects such as algorithms, data compression, graphics algorithms, interface design, and models of computing without technical experience. In most cases, students find programming topics impressive. For example, in a study conducted by Mıhcı Türker and Pala (2018) with 5 th and 6 th graders, students stated that coding helped with developing games, moving characters, making movies, making robots and having fun. However, although the students have positive views on programming, the difficulty of learning programming should be explained appropriately. Therefore, computer science unplugged provides students with the opportunity to interact with the topic they find impressive without getting into complex programming topics, provides more fun and lasting learning opportunities in different contexts such as game-based learning and learning by discovery and help them attain computational thinking skills (Kalelioglu, 2017). Kalelioğlu (2015) addressed the difficulties of programming languages during the programming process and stated that thinking skills should be supported with different methods for programming. In this context, computer science unplugged is important for developing these skills.
In line with these views, it is possible that students will learn the logic of programming and develop their programming self-efficacy through algorithm education by moving away from the complex structure of programming languages. On the other hand, students are expected to produce a solution to a problem without programming language during this process and to use high-level thinking skills in this way. Therefore, in this study, the effect of algorithm education on pre-service teachers' computational thinking skills and computer programming self-efficacy perceptions was examined and answers to the following questions were investigated: 1) Is there a significant difference between the pretest and posttest scores of students' computer programming selfefficacy perceptions?
2) Is there a significant difference between the pretest and posttest scores of students' computational thinking skills?

Related Literature
In this study, the effect of algorithm education on pre-service teachers' computer programming self-efficacy perceptions and computational thinking skills were examined. For example, in a study conducted by Tsai (2019), visual programming language was used to teach basic programming concepts to university students. Accordingly, students' learning performances and computer programming self-efficacy regarding perceptions were examined. After the implementation, students' performances in basic programming concepts and programming self-efficacy increased positively.
Özmen and Altun (2014) conducted a study on students' perceptions of self-efficacy regarding programming. In this study, the reasons of failure of teacher candidates in programming course were examined and 12 students were interviewed for this purpose. The interview results revealed that students had difficulties in processes such as programming knowledge, programming skills, understanding the logic of the program and debugging. Students stated that the main reasons for their failure in programming were lack of practice and knowledge and not being able to develop algorithms. On the other hand, it is seen that students with high programming experience have high programming achievement and high self-efficacy perceptions.
In another study conducted by Mazman and Altun (2013), self-efficacy perceptions and pre-experience characteristics of Computer Education and Instructional Technology Education (CEIT) students were examined. In this context, programming courses were given to the students who had taken programming courses before, scales were applied before and after the course and the obtained data were analyzed. Accordingly, the programming course significantly increased computer programming self-efficacy perceptions in both preexperienced and experienced groups, and this increase was found to be higher in the group without prior experience. In addition, the difference between self-efficacy perceptions between pre-experienced and experienced groups decreased at the end of the programming course. The researchers stated that students' self-efficacy perceptions and their previous knowledge played an important role in their achievement in this course.
In a study conducted by Davidson, Larzon and Ljunggren, (2010), the effect of Introduction to Programming course on the change in self-efficacy perceptions of students was examined. Accordingly, individuals' self-efficacy scores did not show a significant change at the beginning and at the end of the programming course. However, there was an increase in students' sub-skills such as analysis and solution of simple problems, debugging and working principle of computer.
In the light of the findings obtained in the studies, it is concluded that the students' perceptions of self-efficacy increased with the increase of their experience in programming and consequently their success in programming increased. Based on these data, it is possible to obtain programming logic and to increase self-efficacy perceptions positively without facing problems related to language or abstract structure in programming. Pala and Mıhcı Türker (2019) examined the effect of programming education on the computational thinking skills of pre-service teachers. In this context, the researchers found that robotic-based programming significantly affected students' creativity, algorithmic thinking and critical thinking dimensions and that text-based programming had no effect. In a different study, Oluk and Korkmaz (2016) determined a positive relationship between programming skills and computational thinking skills. As students' programming skills increased, their computational thinking skills also increased. Similarly, as a result of implementations done using programming, Fadjo (2012) determined that implementations play an important role in the development of students' computational thinking skills and concept knowledge.

Method
Examining the effect of algorithm education on pre-service teachers' computer programming self-efficacy perceptions and computational thinking skills, the present study employed one group pretest posttest experimental design, one of the quasi-experimental research designs. In this design, the significance of the difference between the pretest and posttest values of the groups is tested (Cohen, Manion & Morrison, 2002). In the study, unplugged implementations in the algorithm course made up the independent variable, whereas students' computer programming self-efficacy perception and computational thinking skill made up the dependent variable.

Study Group
The study was conducted within the scope of Algorithm course during the Spring semester of 2018-2019 academic year. The participants consisted of 24 (14 males and 10 females) pre-service teachers studying at the CEIT department of a university in Central Anatolia Region, Turkey. The age range of the participants ranged from 19 to 26, and all of them had programming knowledge.

Data Collection Tool
In order to determine the pre-service teachers' computer programming self-efficacy perceptions, the Computer Programming Self-Efficacy Scale, adapted to Turkish by Altun and Mazman (2012), was used. Computational Thinking Skills Scale (CTSS), developed by Korkmaz, Çakır and Özden (2017) for undergraduate students, was used to determine pre-service teachers' computational thinking skills.
The original computer programming self-efficacy scale consists of 32 items and four factors. However, after the adaptation and analysis by Altun and Mazman (2012), the Turkish form consists of nine items and two factors, simple programming tasks and complex programming tasks. Internal consistency for the scale was .90 for the first factor, .94 for the second factor, and .92 for the overall scale, and these nine items explained 80.81% of the total variance.
Computational Thinking Skills Scale (CTSS), developed by Korkmaz, Çakır and Özden (2017) for undergraduate students, was used to determine pre-service teachers' computational thinking skills. The scale has 29 items and five dimensions, creativity (eight items), algorithmic thinking (six items), collaboration (four items), critical thinking (five items) and problem solving (six items). The scale is a five-point Likert one. Internal consistency coefficient Cronbach's alpha values were .84 for the creativity dimension, .86 for the algorithmic thinking dimension, .86 for the collaboration dimension; .78 for the critical thinking dimension, .72 for the problem solving dimension and .82 for the overall scale. The explained variance for all factors was 56.1%. Russell and Purcell (2009) stated that parametric tests should not be used with groups less than 30, and that when the size of the group is smaller (n<30), the data do not meet normality. Gosling (1995) stated that when the distribution of the universe is unknown and when the group number is small (n<30), the normality cannot be adequately met, and suggested the use of non-parametric tests. Ploger and Yasukawa (2003) suggested that parametric techniques should be used when the groups are large (n> 30) and the normality is met. Since the number of groups included in the study was less than 30, non-parametric tests were used to compare between pretest and posttest scores of students. In this respect, the Wilcoxon Signed-Rank Test was used to analyze the differences between pretest and posttest scores of students' computer programming self-efficacy perceptions and computational thinking skills.

Implementation Process
The implementation process of the study was conducted with 24 pre-service teachers who were studying in the CEIT department of a university in Central Anatolia during the 2018-2019 academic year. First, scales were administered to the pre-service teachers, and then the process was continued by presenting various algorithm problems for 13 weeks. Each week, 10 different algorithmic problems were presented to the students, and they were asked to solve these problems using flowchart. A total of 130 different algorithmic problems were solved.
The problems were prepared by researchers using three different algorithm books (Çamoğlu, 2018;Tungut, 2016;Vatansever, 2015). The problems were approved by two experts. According to this, questions about sequential operations, conditional states and repetitive structures are included in the algorithm problems. The students exchanged information with their groupmates during the solution process and discussed the solution with them. At the end of the process, the scales were applied to the participants again, and the data obtained were organized for analysis.

Is there a significant difference between the pretest and posttest scores of students' computer programming self-efficacy perceptions after the algorithm education?
Within the scope of the study, in order to determine pre-service teachers' computer programming self-efficacy perceptions, Computer Programming Self-Efficacy Scale was administered. The scale was comprised of two dimensions and nine items. Descriptive analyzes were conducted in accordance with the responses given by the pre-service teachers to the items, and the results are presented in Table 1. According to Table 1, while pre-service teachers' mean scores of simple programming tasks were " =14.41 before the implementation and " =17.79 after the implementation, pre-service teachers' mean scores of complex programming tasks were " =20.29 before the implementation and " =24.79 after the implementation. In addition, pre-service teachers' computer programming self-efficacy perceptions were 11 at the lowest before the implementation and 21 after the implementation, whereas pre-service teachers' computer programming selfefficacy perceptions were 57 at the highest 57 before the implementation and 61 at the highest after the implementation.  Table 2 presents the results of Wilcoxon Signed-Rank Test done to determine whether pre-service teachers' computer programming self-efficacy pretest and posttest scores differ significantly. Accordingly, there is a significant difference in pre-service teachers' pretest and posttest scores in all dimensions. However, since positive ranks were taken as baseline and the z value was negative, the difference was in favor of the posttest (p<.05; zsimple: -3.30; zcomplex:-2.43; ztotal: -3.03). In other words, algorithm education significantly increases pre-service teachers' computer programming self-efficacy perceptions.

Is there a significant difference between the pretest and posttest scores of students' computational thinking skills after the algorithm education?
Within the scope of the study, in order to determine pre-service teachers' computational thinking skills, CTSS was administered. The scale was comprised of five dimensions and 29 items. Descriptive analyzes were conducted in accordance with the responses given by the pre-service teachers to the items, and the results are presented in Table  3.  Table 3 shows that one pre-service teacher's scale results were considered invalid, and the analysis was continued with 23 pre-service teachers. According to this, pre-service teachers' mean scores of computational thinking skills were " =98.00 before the implementation and " =101.21 after the implementation. In addition, pre-service teachers' computational thinking skills were 82 at the lowest before the implementation and 79 after the implementation, whereas pre-service teachers' computational thinking skills were 142 at the highest 57 before the implementation and 125 at the highest after the implementation.  Table 4 presents the results of Wilcoxon Signed-Rank Test done to determine whether pre-service teachers' computational thinking skills pretest and posttest scores differ significantly. Accordingly, there is a significant difference in pre-service teachers' algorithmic thinking pretest and posttest scores. Since positive ranks were taken as baseline and the z value was negative, the difference was in favor of the posttest (p<.05; zalgorithmic: -2,64). However, there was no significant difference in pre-service teachers' computational thinking skills and subdimension comprising this skill (p>.05).

Discussion
In this study, the effect of algorithm education on pre-service teachers' computational thinking skills and selfefficacy perceptions related computer programming were investigated. In this context, a 13-week implementation process was carried out with 24 pre-service teachers (14 males, 10 females). Each week, 10 different algorithmic problems were presented to the students and they were asked to solve these problems using flow chart. A total of 130 different algorithmic problems were solved. The students exchanged information with their groupmates during the solution process and discussed the solution with them.
In this study, the effect of direct programming logic on pre-service teachers' computational thinking skills and computer programming self-efficacy perceptions were examined without any programming language because many programming languages cause negative attitudes in students with their abstract and complex structure (Gomes & Mendes, 2007;Kalelioğlu, 2015).
In this direction, the study results show that algorithm education positively and significantly increases students' perceptions of simple programming tasks, complex programming tasks and programming self-efficacy. Similarly, related literature put forth that students' computer programming self-efficacy perceptions are positively affected as a result of adequate understanding of programming logic by students (Jegede, 2009;Mazman & Altun, 2013;Özmen & Altun, 2014;Tsai, 2019). On the other hand, it is possible to come across studies that do not show a significant change in students' self-efficacy after programming education (Davidson, Larzon & Ljunggren, 2010). Bell, Alexander, Freeman & Grimley, (2009) stated that students do not deal with the difficulty of programming and mobilize their computational thinking skills through computer science unplugged. Similarly, Kalelioğlu (2015) pointed out the importance of computer science unplugged in the development of high-level thinking skills. Within the scope of the present study, algorithm education was offered using computer science unplugged. At the end of the implementation process, it was found that the algorithm education positively and significantly affected the preservice teachers' algorithmic thinking skills. However, it had no effect on other sub-skills and computational thinking skill in general. Significant differences in algorithmic thinking are expected. On the other hand, it is surprising that there was no significant difference in other sub-dimensions and overall score. It was expected that an increase in algorithmic thinking skill would affect creativity, collaboration, critical thinking, problem solving and computational thinking skill in general. Yet, no significant difference was found because during the algorithm education, students were allowed to work together in a collaborative environment, and they were able to find solutions to problems together. During the process, students discussed the solutions with a critical eye, and they created new solutions. This is believed to be due to the abstract progress of the implementations. It is thought that more clear data can be obtained by comparing the implementations in which the students can be more active in different researches and the implementations in which the process of solving algorithmic problems can be carried out passively.
The studies examining the relationship between programming education and computational thinking skills show that robotic programming education (Grover & Pea, 2013;Lee et al., 2011;Pala & Mıhcı Türker, 2019;Penmetcha, 2012;Repenning, Webb and Ioannidou, 2010) and visual-based programming education (Fadjo, 2012;Howland & Good, 2015) are effective on students' computational thinking skills. In addition, both robotic and visual-based programs (Khanlari, 2013;Kobsiripat, 2015) have positive effects on algorithmic thinking sub-dimension (Penmetcha, 2012), critical thinking skill sub-dimension (Blanchard, Freiman & Lirrete-Pitre, 2010;Chambers, Carbonaro, Rex & Grove, 2007), collaboration sub-dimension (Khanlari, 2013;Miller & Nourbakhsh;2016) and problem solving skill dimension (Atmatzidou & Demetriadis, 2012;Khanlari, 2013;Petre & Price, 2004;Robinson, 2005;Rogers & Portsmore, 2004). This is believed to be due to the fact that these platforms have a more concrete structure and are easier to understand programming logic. In future studies, it is possible to compare all three methods of implementation by using different groups. In addition, this study was conducted with a limited sample because of the size of class. However, it is assumed that other latent variables such as projects in other courses taken during the study period do not affect dependent variables. Similar implementations can be carried out with larger experiment groups and control groups.
In addition, in different studies, algorithm development through digital applications can be investigated. Thus, the effect of digital applications on pre-service teachers' self-efficacy and computational thinking skills can be examined. Similar studies can be reported in different age groups. Then, the success of these students towards programming can be examined.

Conclusion
It is possible to increase the self-efficacy of programming positively by learning the logic of programming by moving away from the complex structure of programming languages. In this respect, algorithms that are included in computer science unplugged activities and aim to give students the logic of programming without complex language structure gain importance. The student is required to identify the problem, to define the inputs and the outputs, and to determine the possible solutions during the algorithm creation stage. The next step is to parse these solutions into steps and associate these steps with each other. In this process, it is possible to utilize and develop various high-level thinking skills. Computational thinking is among these high-level thinking skills. In the light of this process, the effect of algorithm education, which is one of the computer science unplugged activities, on students' self-efficacy perception and computational thinking skills was examined in this study.
The results show that; algorithm education increases students' self-efficacy perceptions related programming in a positive and meaningful way. In this way, after the algorithm education, self-efficacy related programming can be increased and students can start programming with more positive perspectives. On the other hand, there was no significant difference in the students ' computational thinking skills. However, only the algorithmic thinking, a sub-dimension of computational thinking, increased significantly and positively.