An Overviuw Of The Teaching And Learning Process Basic Programming In Algorithm And Programming Courses

In this paper, we review the literature related to computer programming learning, where Algorithms and Programming are the topic domains of the Informatics and Computer science clusters. There are 4 competencies in learning outcomes, such as: 1) understand algorithmic concepts; 2) master algorithm concepts and principles; 3) master programming language concepts; and 4) master programming languages and algorithms. The main focus of this review is on beginner programming and topics related to student difficulties in learning programming. Various problems experienced by beginners were identified from the literature to some of the solutions offered by researchers.


Introduction
IT (Information Technology) graduates are still the prima donna. The field of information technology or other businesses that are supported by the application of information technology at present and in the future remains the government's concern. In 2020, the number of higher education graduates in Indonesia is around 6 million people per year, assuming 7 percent of students take the IT discipline (Tutang, 2009). Ironically, from the data of the Informatics and Computer Education Association (Aptikom) IT graduates in Indonesia only 10 percent is absorbed by the industry of the 25,000 IT graduates in Indonesia. Another case in India, 25 percent of IT workforce graduates are absorbed by the workforce of 3 million IT workers (Nair, 2020). The gap between universities and the industrial world is due to the unfulfilled competencies of graduates (Muchlis et al., 2020).
Education should be oriented to the world of work, the emphasis is not solely on cognitive aspects, but other personality aspects such as affective and psychomotor aspects are needed (Muhson et al., 2012). To face this challenge, higher education institutions must prepare an innovative learning system, and improve the competence of graduates who have 21st century skills (Learning and Innovation Skills), namely 4C skills (Critical thinking, Creativity, Collabarotion, and Communication (Muhson et  KKNI APTIKOM (2015) establishes the standard of learning outcomes (Learning Outcomes) for subjects related to the subject area in the field of Computer Science / Informatics at the undergraduate level that Algorithm and Programming with reference to learning outcomes based on the KKNI APTIKOM which aims to meet the qualifications of Bachelor of Computer graduates in the S1 Information Engineering Program. Competence Algorithms and Programming are specifically defined and relevant to competencies based on the KKNI APTIKOM. Thus Programming Algorithms include aspects of the topic domain of the subjects in the S1 Informatics Engineering study program with related subjects, namely, Programming Basics, Data Structures and Algorithms, Algorithm Design and Analysis, Declarative Programming, Automata Language Theory, Intelligent Systems, Object Oriented Programming, and Web Programming. To achieve graduate competence, the core learning outcomes of the study program are formulated which refers to learning outcomes. The core learning outcomes in the field of Information Technology / Computer Science are grouped into six competency domains, namely (1) Mathematics (2) Basic Computer Science; (3) Algorithms and Programming; (4) Software Engineering; (5) Computer Systems; and (6) Life Skills (Success Skills). 2. Mastering the concepts and principles of algorithms and computer science theory that can be used in computer-based system modeling and design 3. Mastering programming language concepts, and being able to compare various solutions and various programming language models 4. Mastering programming languages and algorithms related to application programs to manipulate image, graphic and image models Algorithms and Programming are the first programming courses given to students. This subject requires a set of cognitive processes that naturally develop through practice, writing solutions with algorithms (Francisco & Ambrosio, 2015). Programming is part of the curriculum in computer science education and is a basic skill that all computer science students should learn. Teaching programming languages aims to enable students to develop a set of skills needed to design computer programs and systems capable of solving real problems (Gomes et al., 2008). Learning programming requires students to increase creativity, teamwork, innovation and knowledge of data structures and algorithms (Nair, 2020). Computer programming skills require several types of thinking skills such as logical thinking and problem solving (Ozyurt, 2015). Developing a computer program requires the ability to translate and model one's thinking, problems and solutions in natural language into the selected programming language (Renumol et al., 2010). Computer programming requires problem-solving strategies and involves a lot of programming logic activities that pose challenges for students (Wang & Hwang, 2017).
Based on a survey between institutions around the world on research (Bennedsen & Caspersen, 2007) in 15 countries, in 63 institutions found 33% failure rate to learn computer programming or pass 67%. This research is strengthened by (Watson & Li, 2014) conducting a survey for quantitative evidence that has been done by (Bennedsen & Caspersen, 2007) whether the failure rate in computer programming increases or decreases over time. With data from 14 countries in 51 institutions, the failure rate was 32.3% or a graduation rate of 67.7%.  The educational practice of each country will be different, further (Watson & Li, 2014) giving the average percentage of students who do not pass computer programming by country, as seen in Figure 2. Portugal has the highest failure rate followed by Germany and Brazil. Meanwhile, Indonesia is ranked 7th out of 15 countries.  Figure 3. the selection of programming languages at the student graduation level according to (Watson & Li, 2014)the first rank is seen in C language and followed by C ++. Furthermore (Bennedsen & Caspersen, 2019) conducted another study on the failure rate of learning programming where previous research found that the student failure rate was an average of 33% in 2007 and in 2018 the average failure rate was 28%. Not surprisingly, learning to program can be such a difficult task, to the point where the failure rate phase in programming classes is almost the same (Bennedsen & Caspersen, 2007).
From the literature, collected on the problem of programming failure is a programming language commonly used in programming classes such as C, C ++, C # and Java which has a broad and complex syntax, making learning difficult for beginners (Gomes et  The results of the study (Khaleel et al., 2017) show that the low value of learning programming is because students experience ineffective learning, lack of interest and lack of motivation. Another most important problem faced by students in learning programming is in the practicum section, which involves their need to practice extensively to achieve higher programming skills (Wei, 2010).
Researchers from the literature review have done a lot of research on strategies to help students learn computer programming which is a challenging problem of how to improve beginners' understanding and programming skills. Cognitive theory is offered to answer the question: why do so many students fail to learn programming. These include difficulty understanding program objectives and their relationship to computers, difficulty understanding the syntax and semantics of a particular programming language (Robins et al., 2003).

3. Programming Learning Solutions
Teaching programming languages aims to make students develop a set of skills needed to design computer programs and systems capable of solving real problems. The 36 literature reviewed showed eight failure rates in computer programming. The first is not applying the correct algorithm(4 articles).. Second, programming is difficult (14 articles). Third, ineffective problem-solving strategy skills (18 articles). Four, the inability to solve the problem (6 articles). Five, wrong perspective about computers (3 articles). Six, lack of human interaction (2 articles). Seven, learning styles and motivation (4 articles). Eight, lecturer-centered learning (3 articles). Figure 1 shows the percentage of literature review of students' failure rates in computer programming. Figure 1. Percentage of failure in programming Literature on computer programming failure, from studies there are states that the same problem is obtained so that the percentage is as above.
To be able to compete, students must have cognitive skills, ability to solve complex problems, have attitudes and motivation (Tsai & Tsai, 2018). The solution to dealing with problems that will become a trend in the 21st century is to combine mastery of knowledge with technology (Voskoglou & Buckley, 2012

METODOLOGY
The results of the search for scientific sources such as international journals found solutions that have been done by previous researchers to answer student failures in computer programming. Appropriate samples were collected and analyzed. The following are the systematic steps taken in conducting a literature study as shown in Figure 2. After selecting and screening, based on the criteria for articles that meet the requirements for literature review, the website database page. A total of 20 articles were used as a source of review reading as a strategy to overcome the failure of basic programming learning.

RESULT AND DISCUSSION
The results of the literature review explain several programming learning strategies that have been carried out by several researchers along with the results of these studies. The solution offered is learning programming with collaobarotive, problem-based programming with PBL or PjBL and an approach with computational thinking. More details can be seen in Table 2.

A review of 20 literature studies with problem-based, collaborative and computational thinking approaches
Applying technology in programming learning has become hot during these 40 years (Douce et al., 2005). The programming problem-solving process forces a person to think about what problems and what needs to be done to solve the problem and then various program functions and procedures are identified in the form of inputs and outputs, so solving problems is a key component for programming activities so that learning programming by embracing PBL / PjBL as one of the instructional approaches. Problem-based programming learning involves various aspects of programming knowledge, strategies, and problem-solving processes. Incorporating collaborative work in programming courses has been identified as a potential strategy for maximizing student participation and having a positive impact on learning. However, social interaction in collaborative learning does not happen automatically. Appropriate guiding strategies and supporting tools for collaborative learning are indispensable. Practice-based problem solving strategies to support collaborative learning activities in computer programming practice courses.
A literature review also shows that collaborative programming learning can increase student motivation (Esteves et al., 2007). The research supports that collaboration is an effective educational feature for programming (McDowell et al. 2002;Esteves et al. 2009). According to Roe and Queensland (2008), in their research, there was a change in student perceptions about collaborative learning, sucha as: 1) a more pleasant environment; 2) more confident with a peer environment; and 3) increased skills. W. W. M (2009) also stated that collaborative learning supported by computers can improve thinking skills, social interaction, criticality and creativity. Computational thinking involves solving problems, designing systems, and understanding human behavior based on computer science concepts (Grover & Pea, 2013). Understand the cognitive processes underlying collaborative (A. Soller et al., 2004).
Computational thinking is one of the programming learning approaches to train students to solve problems to be able to think in a structured, logical, and algorithmic manner (Yeni Anistyasari, Ekohariadi, 2020).Students' skills in programming computers are in line with computational thinking which is a skill to learn and to think in a structured, abstract, algorithmic and logical manner, and to be ready to solve complex and open problems (Yasin, 2020). Computational thinking is in accordance with 21st century skills in solving problems, designing systems, and understanding human behavior by drawing on the basic concepts of computer science (Nouri et al., 2020).

Conclusion
In this literature review, the failure rates in computer programming are presented and the factors that cause the failure rates of students to learn programming and the solutions that have been offered by several researchers. Based on the study: 1) good knowledge of problem solving skills; 2) knowing the syntax and semantics of programming languages; 3) being able to understand existing code; 4) the ability to analyze problems; 5) being able to compile solutions; and 6) being able to express the program into a programming language and being able to test it,