Authors Glívia Angélica R. Barbosa Luís M. Alves Marcela Viana P. Almeida Maria João Varanda Pereira
License CC-BY-3.0
EasyCoding – Methodology to Support Programming Learning Marcela Viana P. Almeida Research Centre in Digitalization and Intelligent Robotics (CeDRI), Polytechnic Institute of Bragança, Portugal CEFET Minas Gerais, Brasil a42929@alunos.ipb.pt Luís M. Alves1 Research Centre in Digitalization and Intelligent Robotics (CeDRI), Polytechnic Institute of Bragança, Portugal lalves@ipb.pt Maria João Varanda Pereira Research Centre in Digitalization and Intelligent Robotics (CeDRI), Polytechnic Institute of Bragança, Portugal mjoao@ipb.pt Glívia Angélica R. Barbosa CEFET Minas Gerais, Brasil glivia@cefetmg.br Abstract Knowing that the programming curricular units in the first year of engineering courses have a high failure rate and, assuming that this failure is due, in large part, to the lack of motivation and the lack of autonomy of the student to program in context outside the classroom, a methodology based on activity guides using attractive web platforms is proposed. The proposed methodology aims to facilitate both the planning of activities by the teachers and the autonomy and motivation by students. In order to receive a first feedback about this work, the methodology is being used by programming professors from Polytechnic Institute of Bragança, but in the near future it will be also evaluated by professors from the Federal Center of Technological Education of Minas Gerais and from the Federal Technological University of Paraná, both from Brazil. Following this work, a system is being developed that allows the automatic construction of guides based on exercises available from the web and systems that facilitate the collection of solutions and analysis of results. 2012 ACM Subject Classification Human-centered computing → Visualization systems and tools; Software and its engineering → Imperative languages; Social and professional topics → Computer science education Keywords and phrases learning programming, teaching programming, automatic activity guides, programming motivation Digital Object Identifier 10.4230/OASIcs.ICPEC.2020.1 Funding This work has been supported by FCT – Fundação para a Ciência e Tecnologia within the Project Scope: UIDB/05757/2020. 1 Introduction School dropout and failure in higher education has been the subject of many research studies. Student dropout is an international problem that has social consequences and affect the results of educational institutions [1]. This is due to several factors, such as the lack of 1 Corresponding author © Marcela Viana P. Almeida, Luís M. Alves, Maria João Varanda Pereira, and Glívia Angélica R. Barbosa; licensed under Creative Commons License CC-BY First International Computer Programming Education Conference (ICPEC 2020). Editors: Ricardo Queirós, Filipe Portela, Mário Pinto, and Alberto Simões; Article No. 1; pp. 1:1–1:8 OpenAccess Series in Informatics Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl Publishing, Germany 1:2 EasyCoding motivation and dedication of students in the face of the challenges that are proposed to them inside and outside the classroom. Following this context, Mendes [14] quotes that the first programming curricular units at the Department of Informatics Engineering from the University of Coimbra suffer from high failure and dropout rates, as reported in many other high educational institutions. As Silva Filho [18] quotes, in Brazil, the private sector invests around 2% to 6% of higher education institutions’ revenues in marketing, in order to attract new students. However, in order to keep students enrolled, just short and punctual experiments have been made in higher education contexts [17, 13, 16]. Moreover, developing a programming logic can be a complex and challenging task. This is because, according to Moreno [15] and França et al. [8], in addition to knowing the basic instructions, the individual needs to understand how to use them to solve different problems. Furthermore, the applicability of this content in other areas has expanded the profiles of people interested in learning it (e.g., high school students). Therefore, it is necessary to diversify the approaches to teaching/learning programming so that they are suitable for different profiles of interest [8, 15]. Regarding this issue, given the constant unsatisfactory results in the first programming disciplines of technology courses in Portugal and Brazil, a larger study on new methodologies to support programming learning become essential in the search for better teaching quality and greater enrollment of students. Following the results analysis of the project NoviBraga [4], the objective of this study is to avoid the lack of dedication of the first year programming students. To this end, teaching methodologies are being developed to improve the quantity and the quality of the slots of time that the student uses to program outside and inside classroom and consequently improve the learning outcomes. According to Gomes and Mendes [9], when talking with programming teachers, most of them claim that students don’t know how to program because they don’t know how to solve problems and don’t have enough mathematical background. There are lots of tools on the web that can be used by programming students and almost all of them have some motivating features like animations, control flow graphs, interactive debugging, syntax- direct editors, collaborative programming, chats, programs to complete, games, submission platforms, rankings and so on. All these features can turn the programming activity more attractive and easier if they are correctly explored. Moreover, these tools can be combined to join the best of each one. In order to achieve this, teachers also need some support to be able to propose the appropriate set of activities along the semester and get feedback from the students. An activity guide is needed, and the exercises must be carefully chosen. It is difficult to find in the web these activity guides already constructed. The main contribution of this work is to propose a methodology based on web platform activities and to create a system to automatically produce activity guides. These guides are based on free web platforms whose features we believe that can motivate students to program. This work presents two research questions: 1. Does the use of web systems that allow the resolution of programming exercises motivate students to work outside the classroom? (Section 3) 2. Is it possible to systematize and automate the creation of programming activity guides for both the teacher and the student? (Section 4) Besides this introduction where some related works are presented, the section 2 introduces the methodology proposed. The application of the activity guides is discussed in section 3 and based on this experience, a system to automatically generate those guides is presented in section 4. In section 5, some conclusions will be presented as also some clues for future work. M. V. P. Almeida, L. M. Alves, M. J. V. Pereira, and G. A. R. Barbosa 1:3 2 Methodology In order to follow our approach, the following steps are proposed: 1. Collection of information on C programming web teaching platforms; 2. Creation of a classification system for web platforms, with the objective of using them inside and outside the classroom context; 3. Classification of platforms found and creation of a website to make this study available to C programming teachers; 4. Creation of activity guides to be developed during the first programming semesters with the students, with respective monitoring; 5. Validation of the methodology, based on the results of the monitoring, the students’ academic success and questionnaires for collecting opinions from teachers and students; 6. Development of a system that allows teachers to assemble and generate new activity guides, according to characteristics pre-defined by the classification model. The result of the three first items can be seen in [3]. At the end of the project’s develop- ment, the results will be analyzed and validated, and future perspectives and proposals for improvement of the study will be pointed out. 3 Application of the Activity Guides The present study considered an introductory programming course (Programming I) in the context of higher education at Polytechnic Institute of Bragança (IPB). This course unit has 218 enrolled students spread over two courses, namely, Informatics Engineering and Management Informatics. Programming I is in the first year, first semester of our two courses. At the end of these course unit, the student is expected to be able to design solutions and implement C programs that solve small/medium complexity problems. In order to do that, the student must apply concepts of imperative programming in the C programming language, coding function-based structured programs to manipulate data structures. The student must also be able to use an Integrated Development Environment (IDE) including the debugging tool to get successful solutions. In this case, the IDE is the Microsoft Visual Studio Community 2019. The syllabus of this course contains C language topics that are commonly taught in introductory programming at the university level. Like other cases found in the literature, Programming I also reveals a low student success rate. The teaching-learning programming process is a difficult task, as is known to the community involved. This process faces several challenges, the most important of them, it is to improve student motivation to learn and to ensure that they do not give up learning. Another important challenge is to enroll the students to work outside of the classroom. Aware of these challenges, in the first semester of academic year 2019/2020 we applied the proposed approach to hold the students involved in programming tasks. Thus, we create a set of activity guides that cover the whole syllabus of programming I. These guides use a set of web platforms with exercises well contextualized. In the classes, the teacher gave a brief description of each of these guides, whose exercises were solved by the students inside and outside of the classroom. In a first phase, we proposed the activity guides to 65 students that are divided into two different classes. We decided to involve only these students for two reasons: (i) The teacher, one of the authors of this paper, taught both classes, so he had full control of the students; (ii) The idea is to start just as a pilot project and adjust the guides during the semester. ICPEC 2020 1:4 EasyCoding The Figure 1 presents the results of the activity guides application. We enumerated the activity guide from 1 to 5 and they are divided by topic. For each topic we have more than one activity guide. The table shows also the web platforms used by the students to do the tasks. A qualitative research was carried out on the main tools available online, which support teaching C programming, focusing mainly on features considered useful for combating school dropout. The chosen platforms are URI Online Judge, Codeboard, CPuzzles, C Tutor, CodinGame and Coderbyte [11, 5, 12, 10, 7, 6]. They were chosen based on their characteristics like quantity of exercises, contents scope, ease of use, free access and some extra features like tutorials, animation, collaborative work and automatic assessment. All these web platforms have different purposes and they cover a set of different functionalities: 1. URI Online Judge is a web portal that offers a variety of programming problems for the students to solve and share knowledge, besides having a teachers’ module called URI Online Judge Academic that lets the teacher manage the activities, students’ submissions and grades, without having to use any other system. Its main features include real-time correction, available problems separated by categories and use of gamification concepts, with the application of a of a badges and ranks reward system. 2. Codeboard is a web-based IDE to help the students to learn programming by allowing the teachers to create exercises as they wish and letting the students run and compile their own solutions inside the IDE and after submitting to the teacher, that has total access to the student answers. Codeboard also allows automatic grading to help the exercises correction and has the possibility of exporting the results in spreadsheet format. 3. CPuzzles is a repository that contains a collection of C puzzles and solutions to supplement the activities and assist the teacher. The puzzles inside the platform are divided in eight groups, each one regarding a C subject. Each puzzle has a difficulty rating, in order to help the teacher choose which exercise better meets students needs. Besides that, the teacher can find an example of solution and a "code skeleton", which helps the student to start the exercise. 4. C Tutor is a tool that assists teachers and students when writing code, making them understand what happens as the computer runs each line of code and visualize each state of data structures being used. When applicable, C Tutor also helps the visualization of the contents present in the heap and the pointers. Finally, the system allows collaborative work, by letting different users change the same code simultaneously and has an online chat that allows students to discuss each problem. 5. CodinGame is a gamified platform for teaching programming languages. The system uses game puzzles with high level animation and different difficulty levels. The website has its own IDE where the students can run and compile their own code and submit their result to the platform that has its own automatic correction. CodinGame also has a reward system with the application of badges and ranks. There is still a forum dedicated to the users for any doubts about the puzzles. 6. Coderbyte is a web system developed to offer challenges and courses with the aim to help users to prepare for upcoming job interviews, as well as practicing more programming. The system has an IDE where the students can run, compile and test if their solution is valid, by going through the system’s automatic correction. The code challenges range in difficulty and can be solved using different programming languages. In Figure 1 we can see the code and the name of each exercise made by the students. These codes were obtained by the platform itself. In the last three columns of Table 1 we can see the number of total students to whom the activities were proposed, the number of student submissions and the number of successful submissions. Based on these numbers we quickly M. V. P. Almeida, L. M. Alves, M. J. V. Pereira, and G. A. R. Barbosa 1:5 Figure 1 Results of Activity Guides Application. realized that the student involvement is much greater in the first activities and it has been decreasing as the subjects have become more complex. The deadline for students to complete the tasks of the last three activity guides is still open, so it is expected that more students will complete them. The Coderbyte and CodinGame web platforms had less adherence by students. In fact, some of the students referred some difficulties to use and to understand the problem statement of these platforms. All the activity guides were transferred to the students using Sakai platform. This is a web platform similar to the Moodle used in IPB. During the classes, the teacher briefly explained the tasks for each of the activity guides. The students received the activity guides by institutional email. The text of the email always referred some encouragement words. Unfortunately, not all students read institutional email, especially those who miss classes. We need to address this issue during the next semester and use a different approach to convince students to do the activities. After each activity the teacher opinion was collected and used to improve the next guides. The idea now is to intensify the construction of new activity guides using the platforms that had more success from the students’ point of view and also the ones that are more appropriate for the contents of Programming II. Since data structures will be better explored, we are aware that animation tools will be more adequate and useful. 4 A System to Automate the Activity Guides Construction A system (Figure 2) called EasyCoding is being developed to automate the guides construction and help teachers to produce new activity guides in order to use them with the students inside and/or outside the classroom, with the aim of facilitating their planning and to motivate the students by performing these exercises. The technologies being used for the development of this platform are Javascript with JQuery library to simplify the scripts interpreted on the client-side browser, jsPDF library which is a widely used solution for client-side PDF generation, in order to generate the activity guides for teachers and students, and Bootstrap front-end library to help prototype the system for a friendly and responsive experience. As a ICPEC 2020 1:6 EasyCoding Figure 2 EasyCoding - automatic generation of programming activity guides. static platform, the system is being hosted on GitHub Pages host service. Therefore, the system is capable of automatically generating activity guides, in order to explain to students and teachers the correct use of each chosen web platform. The proposed exercises were collected from the studied web platforms (when they had exercises available as a feature) and also from the book “Linguagem C”, by Luis Damas. When using the system, the teacher only has to choose: 1. Inside or outside the classroom context. 2. Programming subject. 3. Platform in which s/he wants to apply the exercises. 4. The exercises themselves. Each exercise will have an estimated time in which the teacher can rely on to compose her/his activity guide. Actually two guides will be produced, one for the teacher to prepare the session and one for the student, that will receive it from the teacher, to follow the guide. The results will be automatically collected, and the teacher can use them as s/he wants. The system proposed is already available in [2]. The main reason for the generation of these two types of activity guides (teacher and student guide) is that each web platform being used has its own way of use. Some of them, like URI Online Judge and Codeboard have different functionalities for teachers and students. Because of this, each guide is developed to help their understanding of the steps they have to complete to accomplish the task. Thus, the teacher’s guide will assist the teacher on how to use the web platform chosen to add the activities needed and show them to the students. The students’ guide will assist them on how to have access to the web platform, perform the given activities and send their results to the teacher. In order to evaluate the acceptance of the analyzed web platforms, an interview was carried out with the students who participated in this study. The interview revealed that the URI Online Judge, Codeboard and Python Tutor platforms had a greater acceptance among the students. According to them, the other ones seemed complex or without significant benefits. Due to this result, we opted to keep on working, this next semester, only with these 3 web platforms and CPuzzles, to collect exercises. Moreover, the EasyCoding system is being implemented to provide activity guides using these 4 platforms also. Examples of generated teacher and student’s guides are shown in Figure 3. M. V. P. Almeida, L. M. Alves, M. J. V. Pereira, and G. A. R. Barbosa 1:7 Figure 3 First page of a teacher and a student’s activity guide applied. 5 Conclusion and Future Work In this paper, a methodology based on the creation of programming activity guides was described. The concrete application of the proposed approach to IPB students was explained as well and the results from this initial research were analyzed. From the first semester of application, we are able to conclude which are the most appropriate tools and what kind of activity guides should be produced to enrich our system and improve the student’s motivation. The student opinion about this was also collected and used to improve the guides. The developed system has a database of activities that will be used by the teachers to automatically generate more guides as they wish. At the end of this second semester, the success rate of the Programming I and Programming II subjects will be analyzed and this study will be able to show if the application of these activity guides with the use of web platforms that have motivating features was satisfactory. For that, student and teacher opinions will be collected again. References 1 Leandro S Almeida and Rosa Vasconcelos. Ensino superior em portugal: Décadas de profundas exigências e transformações. Innovacion Educativa, 2008. 2 Marcela Almeida. Easycoding – metodologia de suporte à aprendizagem de programação. https://marciviana.github.io/projeto_mestrado.html. Accessed: 2020-04-01. 3 Marcela Almeida. Metodologia de suporte à aprendizagem de programação. https: //mestrado-marcelaviana.webnode.com/. Accessed: 2020-04-01. 4 Luís Alves, Dušan Gajić, Pedro Rangel Henriques, Vladimir Ivančević, Maksim Lalić, Ivan Lukovic, Maria João Pereira, Srđan Popov, and Paula Tavares. Student entrance knowledge, expectations, and motivation within introductory programming courses in portugal and serbia. 47th European Society for Engineering Education (SEFI 2019), pages 1354–1363, 2019. 5 Codeboard. Codeboard – the ide for the classroom. https://codeboard.io/. Accessed: 2020-04-01. 6 Coderbyte. Code screening, challenges & interview preparation. https://coderbyte.com/. Accessed: 2020-04-01. ICPEC 2020 1:8 EasyCoding 7 CodinGame. Play with programming - codingame. https://www.codingame.com/. Accessed: 2020-04-01. 8 RS d França, VFS Ferreira, LCF de Almeida, and HJC do Amaral. A disseminação do pensamento computacional na educação básica: lições aprendidas com experiências de li- cenciandos em computação. In Anais do XXII Workshop sobre Educação em Computação (WEI-CSBC). sn, 2014. 9 Anabela Jesus Gomes and António José Mendes. A study on student performance in first year cs courses. In Proceedings of the fifteenth annual conference on Innovation and technology in computer science education, pages 113–117, 2010. 10 Philip Guo. Python tutor – visualize code and get live help. http://pythontutor.com/. Accessed: 2020-04-01. 11 Universidade Regional Integrada. Uri online judge. https://www.urionlinejudge.com.br/. Accessed: 2020-04-01. 12 Bradley Kjell. Cpuzzles. https://chortle.ccsu.edu/CPuzzles/CPuzzlesMain.html. Ac- cessed: 2020-04-01. 13 Christian Maekawa, Walter Nagai, and Claudia Izeki. Relato de gamificação da disciplina projeto e análise de algoritmos do curso de engenharia de computação. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação, volume 4, page 1425, 2015. 14 António José Mendes, Luis Paquete, Amilcar Cardoso, and Anabela Gomes. Increasing student commitment in introductory programming learning. In 2012 Frontiers in Education Conference Proceedings, pages 1–6. IEEE, 2012. 15 Julián Moreno. Digital competition game to improve programming skills. Journal of Educa- tional Technology & Society, 15(3):288–297, 2012. 16 Walter Nagai, Claudia Izeki, and Rodrigo Dias. Experiência no uso de ferramentas online gamificadas na introdução à programação de computadores. In Anais do Workshop de Informática na Escola, volume 22, page 301, 2016. 17 Walter Aoiama Nagai and Claudia Akemi Izeki. Relato de experiência com metodologia ativa de aprendizagem em uma disciplina de programação básica com ingressantes dos cursos de engenharia da computação, engenharia de controle e automação e engenharia elétrica. Revista de Exatas e TECnológicas, 4(1):18–27, 2013. 18 Roberto Leal Lobo Silva Filho, Paulo Roberto Motejunas, Oscar Hipólito, and Maria Beatriz de Carvalho Melo Lobo. A evasão no ensino superior brasileiro. Cadernos de pesquisa, 37(132):641–659, 2007.