Analysis of the learning object-oriented programming factors

ABSTRACT


INTRODUCTION
Research shows that it is difficult for students to learn object-oriented programming languages like Java, Python, or C++ because they are based on abstract concepts like class, inheritance, and polymorphism [1]- [4]. Factors such as problem complexity, programming environment, and students' skills can also make learning difficult. To improve learning, integrated approaches such as hands-on learning or visualized programming environments have been developed. Examples of these visualized programming environments include BlueJ [5], Greenfoot [6], and object-oriented puzzle programming (OOPP) [7].
According to Su and Hsu [8], reducing students' difficulties in grasping the concepts, principles, and rules of an object-oriented programming language may improve their performance, competency, and motivation to learn the language. As a result, various studies have been conducted on making programming more motivating and interesting, enhancing performance, and boosting programmers' confidence [9], [10]. Therefore, in order for students to learn an object-oriented programming language, it is necessary to determine the fundamental factors that affect their learning. The goal of this work is to develop a list of programming learning factors that can help students learn an object-oriented programming language. This list of factors will then be validated using qualitative and quantitative methods from different perspectives.
In the first section of this study, we provide a concise explanation of the study's main topic, as well as the goals and how they are accomplished. The challenges and issues are summarized in section 2, which builds on prior work. In section 3, relevant works are summarized and critically evaluated. The methodologies used in this investigation are discussed in section 4. Section 5 presents the analysis of the results and discusses the findings based on various perspectives. Finally, section 6 presents the conclusion of this research.

PROGRAMMING LANGUAGE ISSUES AND CHALLENGES
According to Robins [11], students often encounter challenges in the form of success/failure rates as well as the complexity of programming (such as the code, the object, the model, and the display) when enrolling in programming courses. However, there are effective and innovative approaches to teaching programming skills that motivate novice students to learn programming while also adding value to the teaching process. There are many learning tools for graphical programming, which is more appealing than textual programming. As college students are at an age where they can start learning how to program and solve problems, these tools have been proposed as part of university learning methods [12].
In general, logic is the most crucial aspect of the programming process, and it is also the first step in the creation of a complete program. Many high-level languages, such as Java, C++, and Arduino, have similar syntactic and semantic rules. However, writing programs in a specific programming language requires that the programmer be familiar with the language's structure and be able to recall certain concepts. While the complex syntax of programming languages may be easy for experts to understand, it offers no instructional benefit to beginners. As a result, many students struggle to grasp basic concepts, such as object-oriented management or the development of an algorithm to solve a problem.
The challenges that students face when learning object-oriented programming have led to the development of various educational programming environments in recent years. The design of these environments is a crucial topic as it can impact the success of students' learning. Hence, this research aims to explore the factors that educational programming environments possess to enhance students' learning outcomes and identify the main factors that should be considered in any learning environment for object-oriented programming.
Mackin [13] claims that the turtle graphics library is included in the logo programming language. Papert's theory on mathematics teaching inspired this logo-based effort, so Turtle graphics are often used in introductory computer science courses. The process of sketching on paper with a pen served as a point of comparison for the physical and graphical models that were the basis for the design of the turtle graphics, making the concept easy for students to understand.
Alice is a block-based narrative environment designed to help at-risk female students increase their chances of success in computer science 1 and lower-level courses [14], [15]. An add-on for Alice, called AliCe-ViLlagE, was released in 2014 with the aim of improving students' confidence and collaboration by integrating the Alice environment with a pair of programming methods [16]. With Alice and AliCe-ViLlagE, students can easily observe the behavior of their animated programs. The visual feedback provided allows students to make connections between the program "pieces" and the actions they observe in the animations. However, while Al-Jarrah and Pontelli [16] have found that this tool has a positive effect compared to Alice, there is still a lack of evaluation of its effectiveness for teaching object-oriented programming to university students. Additionally, some learners have expressed a preference for seeing the real Java code as this would help them become more familiar with industry-standard coding practices [17]. It is worth noting that Alice only provides an object representation of the program, which excludes learning the programming language.
The Greenfoot system is an educational development tool designed to teach programming to pre-university students [6]. Greenfoot combines Java programming with interactive and graphical outputs as a standard. It encourages learners to experiment with the appearance and behavior of objects using the Greenfoot interface, which allows them to create new functions or modify Java code using the built-in editor. However, the strict syntax rules of the Java language can be challenging for inexperienced learners, who may have difficulty detecting and correcting syntax errors in their code. By providing a more interactive and user-friendly learning environment, Greenfoot enables students to develop their programming skills and gain a deeper understanding of object-oriented concepts.
To investigate the use of block programming on touchscreen devices, a co-located collaborative block-based programming environment called multi-device grace was developed [18]. This environment allows multiple users to work on the same program on different devices, enabling them to collaborate and share their code in real-time. While the environment was designed specifically for touch-enabled devices, there is a lack of research on the effectiveness of using it to teach object-oriented concepts in education.
Snap! is a visual programming language designed for children, high school, and university students. It is based on a system of blocks, which makes it easy to use and understand [19]. The language allows users to define new blocks, which helps to extend its capabilities and makes it more versatile. The Snap! extension, NetsBlox [20], adds networking elements to the visual programming paradigm, enabling students to create distributed applications and collaborate on projects in a Google Docs-like environment. However, there is a lack of research on its effectiveness with object-oriented concepts, making it unclear if Snap! can be successfully used for object-oriented programming. Further research is needed to address this gap in understanding.
The OOPP environment was developed as a way to support object-oriented programming, a popular programming paradigm that was first presented by Ferrari et al. [7]. The environment is specifically designed to help school students and students taking computer science 1 courses learn how to program. However, no research has been done on the usefulness and effectiveness of object-oriented blocks for computer science 2 students. This lack of research makes it difficult to determine the extent to which these blocks can help students in programming courses.
Learning an object-oriented programming language can be difficult for inexperienced students. In order to make programming more accessible to these students, some educators have turned to visual programming languages like visual logic or to more beginner-friendly languages like Python to simplify programming and make it easier for students to understand [21]. However, while Python may be suitable for introducing students to the basics of computer science, it may not be the best choice for learning higher-level concepts like object-oriented programming [22]- [24]. In order to effectively teach these more advanced concepts, educators may need to use different approaches. It is important to carefully consider the needs and abilities of students when choosing a programming language or other learning tools.

FACTORS TO ENHANCE THE LEARNING OF OBJECT-ORIENTED PROGRAMMING
This section provides a detailed explanation of the various learning needs for an object-oriented programming language and explores effective strategies for fulfilling these needs. The research that has been conducted in the past forms the foundation for this section, and the learning factors for an object-oriented programming language are addressed implicitly in the research investigations. The following section elucidates the learning factors that are implicit in the research inquiries.
McNerney [25], [26] proposed that easy debugging capabilities should be included in learning programming to assist novices. Papert [27] also suggested that the use of mathematical or geometric operations can help students become proficient in a particular programming language. On the other hand, [28], [29] argued that simplicity and difficulty level are important for learning a programming language. Simplicity refers to the ease of understanding and usage and should involve limiting the number of command instructions. A simple language can be acquired quickly, giving students more time to apply the language they are learning to the content of their courses. Csikszentmihalyi [30] after students are familiar with event handling and function call blocks, they should be introduced to additional complexity and abstraction, as it requires a significant degree of abstract thinking, logic, and conventional programming skills.
On the other hand, DeRose and Laurel [31] suggested that individuals who want to learn programming should engage in group interaction and utilize modularity in specific environments to enhance their understanding of the complex programming process. Horn and Jacob emphasized the importance of realitybased interaction in programming languages, arguing that it should take place in real life in order to engage learners in a more realistic manner [32]. McNerney [25] also argued that collaborative programming should be used to help novices learn more, achieve statistically significant progress, and increase students' interest in learning. Latih et al.
[33] emphasized the importance of practical experience in acquiring programming development abilities, stating that students must engage in regular practice in order to effectively develop and improve their programming skills. They suggested that a strong practical ability is essential for success in programming and should be a key focus for students learning the subject. To conclude, Table 1 summarizes the object-oriented programming learning factors based on previous research. Object representation (Microworld) [32] 4. METHOD This research was conducted using two types of research methods: quantitative and qualitative. Firstly, the literature on learning programming/object-oriented programming was reviewed with the aim of identifying the main learning constituents. Then, the research employed interviews designed to identify the experts' perspectives in the context described at the beginning of the research. Next, a questionnaire instrument was used as part of a survey method to determine the opinions of the actual users who had taken the object-oriented programming course, as shown in Figure 1. The research methods used are explained in detail in the next section. The goal of the interview was to confirm the factors involved in the process of acquiring skills in object-oriented programming, which had already been explored in previous research. The investigation was carried out by means of a qualitative technique, through an interview-based approach, at the Faculty of Information Science and Technology (SoftAM) located at the Universiti Kebangsaan Malaysia (UKM). An explanation of the research's goal and the rationale behind using the interview method was provided at the beginning of the interview. Based on [34], a total of five respondents were interviewed, each of whom had been teaching object-oriented programming for more than ten years. All questions related to each element were asked during the 1-2 hour-long interviews.
The research used a quantitative approach based on a survey method to gather data. The questionnaire was distributed to a sample of 50 individuals who had prior experience with object-oriented programming, including 31 students and 19 lecturers from Jordan University of Science and Technology and Irbid National University, with ages ranging from 19 to 45 years. The questionnaire was designed to gather feedback on the identified factors from actual users and included an explanation of the purpose of the research and the rationale for choosing a questionnaire approach.
The questions in the survey were carefully formulated based on previous research and validated through interviews with five experts in the field of object-oriented programming [34]. The aim was to gather valuable insights and recommendations on how to improve the learning of object-oriented programming for students. Respondents were asked to consider the various factors that influence the learning process, which were identified through previous research and further validated through interviews with experts, as referenced in [29], [35], [36]. Each respondent was asked to provide their own recommendations on how these factors could be leveraged to enhance student learning and success in object-oriented programming.

Data collection
The interviews were carried out face-to-face at UKM, and the interview questions were adopted from previous research and are listed in Table 2. For the survey, a Likert scale questionnaire was distributed to students for self-administration. The survey questions were based on the results of the interviews, and the purpose was to compare the opinions of experts and students from different generations on the same factors. What do you think about how these factors affect learning object-oriented programming? 4 In your opinion, how might these factors increase students' motivation and effectiveness while studying an object-oriented programming language? 5 In your opinion, do you agree that these materials would help to learn object-oriented programming? Interactive visualizations tool. Interactive environment. Lecture notes/copies of transparencies. Programming course book. 6 In your opinion, do you agree that any of these situations would help to learn object-oriented programming more effectively? In practical. Consultation or discussion with lecturers, tutors, seniors or friends In group exercise sessions While working alone on programming coursework

Survey instrument
The instrument used in this research employed Likert scales with five points to measure the level of agreement, with options ranging from strongly disagree to strongly agree. Students were asked to select one scale that best reflected their beliefs for each question. The survey questions were developed based on prior research and the interview schedule. The survey aimed to measure the level of agreement among actual users.

RESULTS AND DISCUSSION
The data collection techniques yielded some significant results. A list of factors for the programming learning environment was generated as a result of these findings. These factors are very important as they determine what should be developed and designed, as well as how the environment should be developed and designed. Therefore, both the results and discussions of the approaches (interview and survey) are provided in detail in this section.

Interview approach
The interview results showed that all participants agreed that the identified factors were important for keeping students motivated in learning object-oriented programming. These factors included the use of visualization or interactive environment to enhance student learning, as well as the importance of practice, consultation with lecturers, tutors, seniors, or friends, and group sessions for helping students learn object-oriented programming. The participants also concluded that these factors were important for creating a positive learning environment and promoting student success in learning object-oriented programming. Overall, the participants emphasized the importance of creating a supportive and interactive learning environment, as well as providing opportunities for practice, consultation, and collaboration, in order to help students learn object-oriented programming effectively and build their programming skills. The following are a few examples from the interviews that highlight the importance of the identified factors in keeping students motivated to learn object-oriented programming: "The essential factor is to improve their motivation using any technique such as working in groups, a discussion between students, robots, games, practices, or challenging them." (Interviewee1).
"Most of the factors are enough to enhance students' learning and pair programming, and it will enhance student effectiveness and motivation." (Interviewee2).
"Using the Games/Visualization tools to motivate students in programming for a certain period and then moving to textual programming is a good idea. The reason is that students have problems with syntax errors, and it makes them more confident." (Interviewee3).
Based on the above, all the interviewees emphasized the importance of different methods or tools that would facilitate the learning process of object-oriented programming, increase motivation, and make programming more understandable for the students. To confirm the evaluation indicated above, the students' and lecturers' views on these factors were evaluated. The questionnaire was used as a research instrument, as shown in the next section.

Survey approach
Based on the categories shown in Table 3, the mean level is considered "high". Based on Table 4, the minimum value of the mean from the instructor's perspective is 4.10 for the specific operations factor, and from the perspective of the undergraduate students, it is 3.74 for the pair programming factor. This demonstrates that respondents agree with all the programming factors. The first prerequisite, "easy debugging", gets a rating of 4.60 from the perspective of instructors and a rating of 3.77 from the perspective of undergraduates. However, for "motivating students via the use of block-based collaborative technology," the score is 4.45 from the instructors' perspective and 4.16 from the perspective of undergraduate students. To summarize, the results were satisfactory to both instructors and undergraduates. However, the instructors' results outperformed the undergraduates for a variety of reasons, the most important of which is that the instructors are highly experienced in object-oriented programming materials and are aware of the most critical factors for student learning, mainly because most instructors have taught this course for more than five years.  In order to evaluate the correlation between two different variables, which take value in the set (1,2,3,4,5), are nominal and ordinal. We use Kendall's coefficient tau (τ). This statistic measures the correlation between two values, and it gives a value range between -1 and 1, where 0 indicates no correlation, -1 indicates a perfect negative correlation, and 1 indicates a perfect positive correlation. Kendall's tau is similar to other commonly used correlation coefficients such as Pearson's and Spearman's. The benefits of using Kendall's tau include more accurate statistical properties and a clearer interpretation of the probabilities of observing consistent (concordant) and inconsistent (discordant) pairs. Additionally, Kendall's tau and Spearman's rank correlation coefficient often lead to the same conclusions in most scenarios [38].
The statistical analysis demonstrates that there is a significant and positive relationship between easy debugging, simplicity, pair programming, and cooperation with discussion forums, and the motivation of students to improve their learning for sig (0.000) which < 0.01. Additionally, there is a positive correlation between practices and object representation, and student motivation to enhance their learning for sig (0.000) which < 0.05. The correlation coefficient is the highest for easy debugging (0.594), and it is the least for variable specific operations (0.326). However, there is a weak correlation relationship between difficulty level and student motivation to enhance their learning of the object-oriented course ( = 0.221, = 0.170). We believe that the difficulty level factor is highly beneficial for students, as evidenced by the high average obtained (4.03). However, the lack of a relationship with motivation may be attributed to negative experiences with previous tasks for some students, causing them to be hesitant to engage with this factor. We suggest that teachers or educational environments provide tasks that are well-suited to the abilities of their students [39].
In conclusion, most of the programming learning factors, which were based on the findings of the prior study and interviews, were found to be favorably accepted from both perspectives. However, there are still some things that can be done to enhance students' learning of object-oriented programming. Firstly, students should be encouraged to work together and practice as much as they can. Secondly, they should be encouraged to increase the level of competition between themselves. Lastly, the educational environments must be made enjoyable and fun for students.

CONCLUSION
This study provides a comprehensive overview of the key factors that facilitate the learning of object-oriented programming. The study employed two evaluation methods: interviews and surveys. The resulting factors that can aid students in learning object-oriented programming are: i) easy debugging, ii) object representation, iii) simplicity, iv) practice, v) specific operations, vi) collaborative programming, vii) difficulty level, and viii) possibility for cooperation. A questionnaire was then administered to assess the effectiveness of these factors in facilitating object-oriented programming learning.