Abstract

The purpose of this study was to investigate the relationship between students’ attitudes toward programming, gender, and learning performances. The survey used for measuring students’ attitudes toward programming consisted of 20 questions on a five-point Likert scale in five dimensions (meaningfulness, interest in programming, self-efficacy, creativity, and collaboration). Ninety freshmen who had basic programming experience by using block-based programming in the Innovation in Educational Technology course were asked to take the survey. The overall reliability of the survey was found to be 0.93. The results showed that there was no significant difference between male and female freshmen in attitude toward programming, but there was a significant difference among different learning performances in dimensions of interest in programming, self-efficacy, and creativity. We performed pairwise comparisons at the same level of significance by using Fisher’s least significant difference (LSD) method to test which group differs from the other groups. The results found that low-performing students’ attitudes toward programming in dimensions of interest in programming, self-efficacy, and creativity were the lowest of all types of students. This is a challenge for instructors in planning learning activities to encourage low-performing students to have a more positive attitude toward programming.

1. Introduction

Programming is an essential skill for students in the digital era. The world economy is being transformed, and more and more workers are being replaced by robots and artificial intelligence (AI). Consequently, programming is one of the high-demand skills in current and future job markets [1]. Many people think programming skills are only valuable for people working in highly technical careers. In fact, for people who work closely with developers and programmers, learning basic programming makes them much more valuable members of a team. Within programming in the higher education context, students learn how to break down a problem into smaller parts and design a step-by-step procedure for creating a working program by using a language that the computer understands [2]. These processes related to decomposition and algorithm design in computational thinking give students new perspectives on problem-solving. Furthermore, learning to code offers students the opportunity to have great earning potential in the future and makes them become in-demand candidates in a rapidly shifting digital economy [3, 4]. Nowadays, Thailand is concentrating on digital technology as a solid foundation for future business and as the main driving force in educational reform. Thailand has developed a national socioeconomic and educational development plan for human resources with an eye to the job market of the future [5]. To support this plan, higher education institutions must produce graduates who are highly skilled in digital areas such as programming, artificial intelligence, machine learning, data science, data analytics, cloud computing, blockchain, cybersecurity, mobile development, user interface design, and user experience design [612].

One member of our research team is an instructor who teaches Innovation in Educational Technology. He wanted to promote programming among students in his course because he realized that programming is one of the high-demand skills in the present and future. As a result of completing the Innovation in Educational Technology course, students will be able to apply basic programming and computational thinking concepts to create innovative inventions. This course is not a specialization in computer science. Therefore, students do not need to be as proficient in programming as computer science students, but they need to have basic knowledge of programming to apply it in the future. In this course, block-based programming is considered as an alternative to foster basic programming skills because text-based coding is not easy for beginners to start coding and the language syntax is a barrier for students’ understanding of computational thinking concepts [13]. Furthermore, block-based languages have a pallet of commands, making memorizing commands unnecessary; therefore, it is easy for novices [14]. To measure students’ attitudes toward programming, students were asked to take the survey after completing the course.

Many studies explored the attitudes toward programming of male and female students [1518]. On the other hand, the attitudes toward programming of students who have different levels of performance have been scarcely studied. The purpose of this study is to provide empirical evidence that can help to answer a set of research questions: what are the attitudes toward programming of male and female students? What are the attitudes toward programming of students who have different levels of performance (high, medium, and low)? This paper is organized as follows: Section 2 reviews the background literature on programming in higher education and components of attitudes toward programming; Section 3 outlines the methodology, including the participants, instrument, and procedure; Section 4 presents the results of the survey; Section 5 summarizes the discussion; and Section 6 presents the conclusion.

2. Literature Review

2.1. Programming in Higher Education

Introductory programming is important for undergraduate students in the twenty-first century. Previous skills and background knowledge are key for a novice student to learn basic programming. The skills were divided into two categories: programming-related skills and general educational skills [19]. The goal of introductory programming courses is to teach the students how to express solutions in a language that the computer understands. Choosing an appropriate language for teaching basic programming is critical. It has a strong effect on novice students. If they understand the first language they learn, they tend to continue coding and learn more difficult programming languages [20]. Many researchers emphasize that learning how to program requires the use of problem-solving skills [2123]. A lack of problem-solving skills makes it difficult to learn programming [24]. Therefore, it is considered a prerequisite skill for learning basic programming. In addition to problem-solving skills, mathematical ability is cited as necessary for programming. Most programming teachers state that lacking mathematical ability is one of the difficulties that novice students encounter when programming. When students do not have enough mathematical skills, they do not know how to program [25]. It is noteworthy that students who have mathematical skills and logical reasoning always succeed in a programming course [26]. Porter and Zingaro [27] consider previous knowledge as a predictor of success in programming for novice learners in higher education. Students who had prior programming experience tend to perform better than those with no programming experience. Concerning general educational skills, lacking knowledge of English is an obstacle in programming because it is used in the syntax of all programming languages. Students who are good at vocabulary and English grammar were more likely to be successful programmers than nonfluent ones [28].

Learning to program in higher education is difficult because it requires problem-solving and higher-order thinking skills [2931]. The difficulty of expressing the solution in a language understood by the computer is a barrier for novice students. They need to understand many abstract terms. Even students who have enough problem-solving skills find it hard to turn the pseudocode into a syntactically correct program. The syntax of programming languages is important for novice students. Correcting syntax errors is a time-consuming process and leads to random debugging behavior [32]. Selecting the appropriate control structures (sequences, loops, conditionals, recursion, and repetition) for solving problems was also mentioned as one of the difficulties for novice students in higher education [3242]. Bringula et al. [43] found that most students failed the programming examination because the level of difficulty of the examination is not suitable to the students’ level and allotted time. When they often cannot solve programming errors, they experience anxiety, panic, and stress [44]. They also sorrow and despair [45]. Finally, they tend to give up and transfer to other degree programs when they cannot overcome programming difficulties [31].

Basic programming is a challenge not only for novice students but also instructors. Instructors attempt to find ways to arouse students’ interest in programming [46]. The style of teaching that does not attract students’ interest can make them bored. Making higher education students interested in programming is not an easy task. This is a challenge for instructors when designing learning activities. In addition to motivating the students, instructors should provide novices with fundamental skills and simple problem solving before starting the course so that novices have the background needed to understand basic programming. Previous studies have suggested various teaching methods: live coding, gamification, team based-learning, interactive computer tutors, mentor support, peer instruction, and pair programming [4754]. However, some of these teaching methods do not always succeed. Hertz and Jump [55] used a variety of methods in the classroom, including active learning, demonstration, live coding, and canned examples. Yet student performance was poor and retention rates were low. In contrast, using only a trace-driven teaching method decreased the dropout rate and grade failures. It can be interpreted as showing that combining various teaching approaches in courses may not always lead to positive results. Moreover, it is difficult for the instructors to foster the development of programming skills in large classes with students who have different levels of knowledge and learning styles [46]. Some educators [5658] suggested that tutors and mentors would help make learning activities more fluid and fewer differences in individual students. Another challenge is the feedback process. Formative and summative assessment can give quality feedback. In the formative assessment, the instructors can get feedback about their teaching and use the feedback to improve it. The instructors also use summative assessment to determine whether the students are ready to move onto the next lesson and help identify weak areas for students [59]. Lastly, choosing the first programming language to be taught to novice students is significant. The instructors should consider easy languages for beginners to start coding because the language syntax is a barrier for them. Choosing languages that are too difficult can affect students’ performance and their attitudes toward programming [13, 14, 20].

2.2. Components of Attitude toward Programming

An understanding of students’ attitudes toward programming may help to develop better teaching tools and methods. Students’ attitudes toward programming also affect their performance in programming. In this study, we focus on five components of attitudes toward programming including (1) meaningfulness, (2) interest in programming, (3) self-efficacy, (4) creativity, and (5) collaboration.

(1) Meaningfulness is a student’s perceived value of programming [60]. When students perceive programming as meaningful, they will put more effort to overcome obstacles when programming [61]. (2) Interest in programming is the state of wanting to learn about programming. Students with an interest in programming tend to have better performance than other students. They are willing to spend more time on programming. They are more likely than others to view difficult programming tasks as a challenge and find effective solutions to complete it [62]. (3) Self-efficacy is students’ belief in their ability to succeed in programming [63]. When students have greater self-efficacy, they have greater confidence in their ability to overcome programming difficulties and are more likely to continue working on it until completion [61]. (4) Creativity is a student’s perception that he or she could try different methods and ideas when faced with problems in programming [61]. Although programming is related to logical reasoning, students also believe creativity is important in programming [64]. Computational thinking and programming skills can develop through creative programming. Creative programming encourages the students in the process of designing and developing work through coding [65]. (5) Collaboration is a student feeling toward doing programming activities with peers. Programming has become a collaborative task because today’s programs are too difficult and long for a single programmer to complete. Therefore, students should be familiar with collaboration before making careers in the future [66]. Pair programming plays an important role in higher education. Working in pairs produces more rapid and effective solutions than working alone. In addition, students with high programming skills will help a partner who has lower programming skills to complete their task [67]. Getting students to write code together in pairs or small groups can also enhance students’ programming performance and confidence [5254]. Students with greater collaboration attitudes tend to make more effort and more efficiently solve problems when working collaboratively with others [61].

3. Methodology

3.1. Participants

The respondents of this study were 90 freshmen attending the Department of Educational Communications and Technology of King Mongkut’s University of Technology Thonburi (KMUTT), Thailand. All of them enrolled in the Innovation in Educational Technology course. Before taking an online survey, all respondents had basic programming experience by using block-based programming [68]. In this study, we classified the students into three groups: high-, medium-, and low-performing students. The students’ classification details are shown in Table 1.

3.2. Instrument and Procedure

This survey drew on the questionnaire developed by Kong et al. [61]. Some items of their questionnaire were not directly related to freshmen’s attitude toward programming. Since our purpose was to develop the instrument to measure freshmen’s attitude toward programming, we omitted some items in their survey and changed some to reflect our purpose. Finally, we constructed 25 items for our survey. Items were designed using a 5-point Likert scale (5 = “strongly agree,” 4 = “agree,” 3 = “neutral,” 2 = “disagree,” and 1 = “strongly disagree”). Three experts in computer science and educational assessment checked the items to ensure content validity. After editing the questionnaire according to the recommendations of the experts, nine freshmen (four males and five females) read the questionnaire to check if they understand the intended meanings of each item. Finally, 90 freshmen in the Innovation in Educational Technology course were asked to take the online survey.

Exploratory factor analysis was used to reduce data to a smaller set of summary variables. Five items were deleted due to insignificant factor loading. There were 20 items left in five factors. Factors were named as “Meaningfulness,” “Interest in programming,” “Self-efficacy,” “Creativity,” and “Collaboration.” Table 2 shows Cronbach’s alpha value of the survey. The reliability for the total scale was 0.93 and the reliability of each dimension ranged from 0.80 and 0.89. Cronbach’s alpha values of 0.7 or higher indicate acceptable internal consistency [69]. Thus, each dimension of this survey indicated acceptable reliabilities of the questionnaire’s scales. The survey items translated into English are shown in Table 3.

4. Results

4.1. Attitudes toward Programming Results by Gender

Table 4 shows an independent samples t-test comparing gender differences in attitudes toward programming. There was no significant difference between male and female freshmen in attitudes toward programming. The average scores in attitude toward programming of males and females were very close. In Table 5, there was no significant difference between male and female freshmen in all dimensions. However, the average scores of the meaningfulness dimension were the highest. It can be assumed that both male and female freshmen realized the importance of programming. While the average scores of the self-efficacy dimension were the lowest. It indicates that both male and female freshmen lacked confidence in their ability to program.

Figure 1 shows box plots for total scores of attitudes in each dimension split by genders. Total attitude scores in each dimension equal 20 points. Both males and females have the highest scores in meaningfulness. The interquartile range (Q3–Q1) of the meaningfulness in males is shorter than in females. Hence, it can be stated that the attitude scores in the meaningfulness of males have less variability than among females. In addition to meaningfulness, attitude scores in the creativity of males also have less variability than among females. However, the attitude scores in interest in programming and self-efficacy of males have more variability than females. Furthermore, collaboration is the shortest interquartile range among all dimensions, especially in females. It means that the attitude of males and females toward collaboration in programming has the least variability of all five dimensions. However, outliers are marked most in collaboration. It indicates that there are abnormally high and low attitude scores in collaboration.

4.2. Attitude toward Programming Results per Learning Performances

Table 6 shows the medians (more representative than the mean in asymmetric distribution), means, and standard deviation of attitudes toward programming among students with different learning performances (high, medium, and low). The results found that high-performing students had the most positive attitudes toward programming of all types of students, while low-performing students had the lowest average scores in attitudes toward programming. Table 7 shows a significant difference among students with different learning performances in attitudes toward programming. In Table 8, there was a significant difference among students with different learning performances in dimensions of interest in programming, self-efficacy, and creativity. We performed pairwise comparisons at the same level of significance by using Fisher’s least significant difference (LSD) method to test which group differs from the other groups. In Table 9, the results found that both high- and medium-performing students had more interest in programming than low-performing students. Concerning self-efficacy in programming, Table 10 shows a significant difference in all pairs. High-performing students had more confidence in programming than medium- and low-performing students, while medium-performing students had more confidence in programming than low-performing students. In Table 11, the results found that both high- and medium-performing students had a more positive attitude in creativity in programming than low-performing students.

Figure 2 shows box plots for total scores of attitudes in each dimension of attitude toward programming split by level of learning performance. The interquartile range of all dimensions in low-performing students (except for the interquartile range of collaboration) is lower than for high- and medium-performing students. The interquartile range of collaboration in low-performing students is at the same level as for high- and medium-performing students. These results can be interpreted as showing that low-performing students have the same positive attitude in collaboration in programming as high- and medium-performing students. Attitudes toward collaboration in low-performing students have the highest scores among all dimensions. We might assume that low-performing students like to code with peers because it relieves anxiety when facing problems in programming and allows them to finish tasks faster. Outliers are found in high- and medium-performing students but not in low-performing students.

5. Discussion

The purpose of this study is to provide empirical evidence that can help to answer a set of research questions: what are the attitudes toward programming for male and female students? What are the attitudes toward programming of students who have levels of different performance (high, medium, and low)? The result showed that there were no significant differences between male and female freshmen in attitudes toward programming. This corresponds to the result of Karaci [15] that indicated that there was no significant difference between male and female students of computer engineering in attitudes toward programming. However, this result is inconsistent with the result of Baser [16] that showed that females’ average scores of programming attitude were significantly lower than those of males. In this study, we found the average scores of the meaningfulness dimension were the highest. It can be assumed that both male and female freshmen realized the importance of programming, while the average scores of the self-efficacy dimension were the lowest. That indicates that both male and female freshmen lacked confidence in their ability to program. Therefore, this is a challenge for instructors in planning learning activities to encourage students to have more confidence in programming. When students have greater self-efficacy, they have greater confidence in their ability to overcome obstacles when programming and are more likely to continue working on it until completion [61]. Some educators realize the importance of students’ programming self-efficacy. Tsai [70] used block-based programming as an intervention. The results indicated that block-based programming can increase students’ programming self-efficacy, especially in students with moderate and low self-efficacy.

In this study, there was a significant difference among different learning performances in dimensions of interest in programming, self-efficacy, and creativity. The result also showed that high-performing students had the most positive attitudes toward programming of all types of students, while low-performing students had the lowest average scores in attitudes toward programming. In terms of creativity, both high- and medium-performing students had a more positive attitude toward creativity in programming than low-performing students. It can be assumed that high- and medium-performing students believed that they could create new ideas while programming. This result corresponds to the result of Kong et al. [61] that indicated that students who have greater creative self-efficacy are more likely to try different methods and ideas when faced with problems in programming. In relation to an interest in programming, both high- and medium-performing students had more interest in programming than low-performing students. Students’ interest is crucial. Learning programming will be difficult and boring if they are not interested in the subject. The way the instructors conduct the class also can be a factor that makes students uninterested in the subject [71]. Students who have different performances have different levels of interest and motivation. Thus, the instructors need to consider ways of teaching programming to attract the attention of students, especially low-performing students who are more likely to lack interest in programming than other types of students. Many educators have tried to find ways to increase students’ interest and basic knowledge in programming. For instance, Jawad [72] suggested that Android development could increase students’ interest in programming. Xu and Jin [73] proposed that game development workshops delivered by peer mentors could increase student curiosity and interest in an introductory programming course. Pradhan [74] suggested that an open-source electronics platform based on easy-to-use hardware and software such as Arduino could increase performance and interest in programming for first-year engineering students. Concerning collaboration, low-performing students in this study had a positive attitude toward collaboration. Therefore, allowing students to practice writing code together in pairs or small groups can improve students’ programming performance and confidence [5254]. Working in pairs produces more rapid and effective solutions than working alone. In addition, students with high programming abilities will assist their partners with low programming abilities in completing their work [67].

Students’ attitudes affect performance in programming. When students have a more positive attitude toward programming, they have higher performance in programming [16]. Therefore, the instructors need to know the students’ attitude to design teaching methods, materials, and learning activities appropriately.

6. Conclusion

This study used quantitative data to examine students’ attitudes toward programming in the Innovation in Educational Technology course. The results showed that there was no significant difference between male and female freshmen in attitudes toward programming, but there was a significant difference among students with different learning performances. Low-performing students’ attitudes toward programming in dimensions of interest in programming, self-efficacy, and creativity were the lowest of all types of students. Although there were few low-performing students in the class, they should not be neglected. The curriculum-makers and instructors should find appropriate ways to improve students’ attitudes toward programming. When they are interested and confident in programming, they will also achieve a good performance in programming.

6.1. Implications

This study indicates challenges for curriculum-makers and instructors in planning and designing courses to encourage positive student attitudes toward programming. The findings show that low-performing students had the lowest average scores in attitudes toward programming and had self-efficacy, creativity, and interest in programming significantly less than high- and medium-performing students. However, low-performing students in this study had a positive attitude toward collaboration. Therefore, getting students to write code together in pairs or small groups can enhance students’ programming performance and confidence [5254]. Pair programming produces more rapid and effective solutions than solo programming [75]. Furthermore, students with high programming skills will help a partner who has lower programming skills to complete their task [67]. Curriculum-makers and instructors should pay attention to the student attitudes toward programming because negative student attitudes toward programming can increase the dropout rate and grade failures. Students who lack interest and confidence in programming were more likely to fail the programming examination and eventually give up studying programming [76]. In a nutshell, curriculum-makers and instructors need to be aware of the importance of the student attitudes toward programming and provide proper learning materials and strategies to encourage positive student attitudes toward programming.

6.2. Limitations and Future Studies

The limitation of this study is its sample. This sample only includes freshmen from the Department of Educational Communications and Technology of King Mongkut’s University of Technology Thonburi. It is not a representative sample of freshmen in Thailand. Future studies can examine freshmen from more universities in Thailand. In addition, further research may use qualitative data collection and analysis to get more insights into the attitudes toward programming of students. A face-to-face interview would help with noticing the body language of students. Open-ended questions allow respondents to give the data with more diversity than is possible with a closed-question or forced-choice survey measure.

Data Availability

The data used to support this study are included within the article and are available from the corresponding author upon reasonable request.

Conflicts of Interest

The authors declare that there are no conflicts of interest.

Acknowledgments

The authors would like to express sincere thanks to Petchra Pra Jom Klao Ph.D. Research Scholarship from King Mongkut’s University of Technology Thonburi for supporting the expense of research.