Principles for designing programming exercises to minimise poor learning behaviours in students (original) (raw)

The student learning experience: characteristics of programming tasks that lead to the poor learning behaviours

In most introductory programming courses tasks are given to students to complete as a crucial part of their study. The tasks are considered important because they require students to apply their knowledge to new situations. However, often the tasks have not been considered as a vehicle that can direct learning behaviours in students. This paper aims to encourage academics to start thinking about the tasks they set, in particular it explores characteristics of programming tasks that affect student learning and understanding in a first year undergraduate course as part of a degree in Computer Science at Monash University. Attention is paid to features of programming tasks that led to three poor learning behaviours: superficial attention, impulsive attention and staying stuck. The data gathered for this study which describe the students' engagement in the tasks are provided by students and tutors. The paper concludes with a list of generic improvements to be considered when formula...

A taxonomy of exercises to support individual learning paths in initial programming learning

Initial programming learning is known to be difficult to many students. To improve this situation it is necessary to support students learning effectively. This means that learning activities should be adapted to each student learning pace and specific needs. This is difficult considering that classes often have a large number of students. The definition of individual learning paths adaptable according to the student performance might help to improve the situation. To support the definition of learning paths it is useful to have a large set of exercises, organized according to a taxonomy that includes different dimensions and parameters relevant to the choice of appropriate exercises at any moment. To present this taxonomy is the main objective of this paper.

Comparison of Three Instructional Strategies in Teaching Programming: Restudying Material, Testing and Worked Example

2018

The aim of the study is to determine the effects of different instructional strategies on retention performance and cognitive load in teaching programming. The study also aimed to compare these strategies in terms of instructional efficiency. The study group consisted of 106 students (49 female and 57 male) enrolled in the first grade at a high school. Instructional strategies used in the study are testing (n=38), restudying material (n=31) and studying worked example with self-explanation prompts (n=37). In the implementation process, the study booklet was first presented to all groups. The booklet prepared for this study covers topics such as variable identification, decision structures, pseudo-codes and flow charts in teaching programming basics. The booklet was presented to restudying group for three times and they were expected to study material in depth for each session. Subsequently, isomorphic problems were presented for testing group. In the other group, worked examples wer...

Studies and proposals about initial programming learning

2010

The difficulties many novices feel to learn programming are well known. They don't seem directly related to the programming paradigm or language used. We present some studies and proposals that may give some contributions to help students and reduce their difficulties in programming learning. We think it is crucial to get an in depth knowledge about the main factors that cause this problem. As the problem is complex, we used a triangulation of methods on a series of studies that we have carried through in recent years. The idea was to accumulate evidence and compare it with results of other studies published in literature. We joined and compared multiple sources of data and collated the methods in order to corroborate some conclusions. From the drawn conclusions concerning the main difficulties, we propose a set of suitable educative practices that, in our perspective, can help students learn, minimizing their programming difficulties.

Towards a Classification for Programming Exercises

When researchers of the AIEDCS (AI-supported Education for Computer Science) community want to exchange programming exercises as base-lines for e.g., evaluation purposes, several questions related to the difficulty of exercises will arise: What kind of programming exercises are supported by an intelligent learning environment? How difficult are the programming exercises? In this paper, we investigate programming exercises supported by fifteen existing intelligent learning environments for the domain of programming and have learned that these exercises can be classified into three classes: 1) exercises with one single solution, 2) exercises with different implementation variants, and 3) exercises with different solution strategies. The contribution of this classification is twofold. First, it can be used to help designers of intelligent learning environments for programming apply/devise appropriate modeling techniques for a specific class of programming exercises that are intended to...

Learning to program -difficulties and solutions

Programming is a fundamental part of computer science curriculum, but it is often problematic. The high drop out and failure rates in introductory programming courses are a universal problem that motivated many researchers to propose methodologies and tools to help students. Although some of these tools have been reported to have a positive effect in students learning, the problem still remains mostly unsolved. We think that there are several reasons that cause this learning problem. Maybe the most important is the lack of problem solving abilities that many students show. They don't know how to program, because they don't know how to create algorithms, mainly due to their lack of general problem solving abilities. This and other causes to student difficulties are discussed in this paper. Some possible solutions are proposed, so that problems can be reduced.

A study on students' behaviours and attitudes towards learning to program

2012

Learning difficulties in introductory programming courses are well known to teachers and students. Although several types of causes for those difficulties can be pointed out, in this work we focused on student related issues, namely their study methods and attitudes towards learning to program. We found a strong correlation between students' results and their personal perceptions of competence during the course. This result raises the need for teachers to consider this issue when devising the pedagogical approaches to use in introductory programming courses.

A review on challenges and solutions in learning programming courses at undergraduate level

International Journal of Applied Research , 2019

Taking a computer programming language course for the first time is a problematic and challenging task for most of the pupils who mostly fail or drop out of the course. In addition to this, this problem is not restricted for computer science pupils, since pupils in other engineering disciplines have to take programming courses as well. In this paper, we review papers related to teaching approach, challenges and solutions for improving student's ability and performance in a first programming language course in undergraduate program. One of the most well-known challenges in teaching and learning a first programming language course is that in the same course, the students must learn and get to know fundamental programming techniques, high level abstraction capabilities, the application of those tricks and techniques, notion and significance in problem solving and design. In this paper the general trends comparing freshers and expert programmers, programming strategies and knowledge, program generation and understanding has been identified. The main and fundamental focus and point of this review is on novice programming and concepts relating to novice learning and teaching. Different problems faced and experienced by novices are recognized, containing issues relating to core program design, to algorithmic complexity in some specific language features, to the frangibility of novice knowledge, and so on. Keep this in mind we have summarized this material and suggest some practical concepts for academicians.

Using the Methodology Problem-Based Learning to Teaching Programming to Freshman Students

International Journal of Information and Education Technology, 2023

This work registers the initial results of a teaching strategy implemented with students entering the Algorithms discipline with a higher degree in Computing. This discipline offered to first-year students records cases of dropout and evasion. Thus, it is necessary to implement teaching strategies to provide engagement, interest, and motivation with the subjects worked on. The main objective is apply an active methodology problem-based learning in programming teaching. In this work participated 177 students in the years 2019-2 (47), 2020-1/2020-2 (83), and 2021-2 (47), enrolled in the first period of the course. The methodology adopted for the development of this study consisted of: use of questionnaires to measure prior knowledge about computing concepts; group discussion of the answers recorded in the questionnaire; development of an APP for smartphone; use of the PBL (Problem-based learning) methodology as a learning strategy. It is an activity related to the active teaching and learning methodology of problem-based learning that is being developed on the first day of class in groups of up to five students. The strategy consisted of two actions: 1) answering a questionnaire associating everyday computing elements; and 2) even though the programming concepts were not presented, the groups were challenged to develop a smartphone application. Each group received a questionnaire containing 19 questions divided into four blocks. What can be seen from the completion of this work was the enthusiasm, motivation, and engagement of the students, who, even though they were newcomers, organized themselves into groups and researched the necessary strategies to complete the challenge. When measuring the knowledge obtained through the application of a questionnaire relating to the content (with the participation of 62% of students), it was found that 81% of the participants obtained the necessary grade for approval of that content. Following the strategy of an active methodology of learning and teaching that favors the protagonism and autonomy of the student, we concluded that strategy was benefic for to the students, and the teacher acted as a guide in the teaching process, directing what should be researched to find the solution and serving as a tutor in the resolution of the problem presented. Preliminarily, part of this study was presented at the 2nd International Computer Programming Education Conference.

A Study of Difficulties of Students in Learning Programming

Journal of Education & Social Sciences

Programming has been a challenging subject for computer science students. A programmer must have strong analytical and reasoning skills to program effectively. In order to inculcate such skills, instructor must prepare their lectures accordingly and employ several novel techniques to develop analytical and problem solving skills into the students. Despite the strong need, there have not been any studies to identify the major challenges faced by programming students. Such a study can help instructor in development of appropriate materials and planning of lectures accordingly. To fulfill this gap, this work performs a survey of 57 students who just completed their first programming course. Students were asked to fill a questionnaire. The questionnaire was analyzed further to determine what are the most challenging concepts for students to learn and when do the students feel most comfortable learning. The correlations among students response were determined and k-mode clustering was also performed. Based on analysis, several recommendations were drawn. These recommendations can help instructor to develop their learning material. The paper concludes that flipped/ inverted class room model is the most appropriate model for teaching programming course.