Files
Verstraete_39641800_2023.pdf
Open access - Adobe PDF
- 3.33 MB
Details
- Supervisors
- Faculty
- Degree label
- Abstract
- Learning the programming basics can be very challenging, as it demands a different way of thinking than students are used to. It requires the development of new skills and designing a course that allows to do this pedagogically can be difficult. At the Université Catholique de Louvain-La-Neuve, a course introducing programming for first year students was developed and has been taught in Python since five years. However, there is a constant desire to look for potential improvements and it is in this context that we carried out an analysis of the course. The course is divided into eleven weeks. Each week consists of a lecture, two tutored sessions as well as individual work. The grading and feedback of the individual work partially goes through an auto-grader, INGInious. This auto-grading platform enables students to submit their code for the exercises and provides them immediate feedback. The feedback is not automatically generated by INGInious in itself, but depending on which tests pass, the error message the teaching staff has encoded varies. We analyzed the diversity in types of feedback and concluded that there was a lot of feedback that focused on the task itself but not so much about the process of coding or about self-reflection. This represents a missed opportunity to help the students grow in autonomy and gain perspective. Since the course is organized in weeks, sometimes students also fail to see the link between the topics and exercises across the different weeks. To remedy this problem, we identified patterns that recur in the solutions of the exercises. For this thesis we focused on the similarities between data structures, coming up in total with six different patterns or "plans". In order to make these plans clear to students the first step was to develop a conceptual flowchart for each pattern. These flowcharts are designed to explain the plan in general and to be applicable to every data structure they will encounter in this introductory programming course. To provide a more practical aspect to these patterns, pseudo-codes have been developed, illustrating them. They are data structure-specific but stay easy to adapt to different types of problems. In the course, this was integrated directly in the theory syllabus, exposing these patterns as students go along the course. Several pseudo-codes for each pattern are given to illustrate how to implement them for the different data structures. Some other ways of implementing the same pattern for the same data structure are also demonstrated, for example by using a while loop instead of a for loop. The integration of these plans in the exercises was done in three different ways, ranging from a lot of help to just an indication. The first is scaffolding: the structure of the plan of the exercise is given, leaving some blanks for the student to fill. Another way of helping the students is by giving them hints on which pattern this specific exercise uses. Finally, the last way this can be integrated is to make explicit links between exercises - "this exercise can be solved similarly to the exercise(s) X". As the timing did not allow these plans to be evaluated with students, a validation with tutors was put in place. The patterns were quite well received and the tutors generally felt that the objectives of the plans had been achieved. The plans were found to be especially effective in helping students to start a new exercise. However, the link between the diagrams, on the one hand, and between the exercises sharing the same plan, on the other, is still not very clear and needs to be improved. Other ways of increasing the diversity of feedback were also identified for future work.