A Study of The Difficulties of Novice Programmers
A Study of The Difficulties of Novice Programmers
net/publication/220808194
CITATIONS READS
730 12,570
3 authors, including:
All content following this page was uploaded by Kirsti Ala-Mutka on 24 October 2014.
14
and Spohrer [8] as well as by Pane and Myers [6]. For exam-
ple, there are often misconceptions related to variable initialization,
loops, conditions, pointers and recursion. Students also have prob-
lems with understanding that each instruction is executed in the
state that has been created by the previous instructions.
In addition to the typical misconceptions presented in the liter-
ature mentioned, a recent survey by Milne and Rowe [5] ranked
object-oriented programming concepts according to the level of
difficulty. They had only 66 respondents in their survey, but it pro-
vided interesting information about the difficulties of the students
today, with the present programming languages and programming
environments.
15
Table 1: Results on sections course contents and learning and teaching.
Question Code Students Teachers
N Avg Std N Avg Std
THE COURSE CONTENTS
What kind of issues you feel difficult in learning programming?
Using program development environment I1 553 2,43 0,99 33 2,61 0,90
Gaining access to computers/networks I2 536 2,11 0,95 32 1,97 0,78
Understanding programming structures I3 556 2,92 1,02 33 3,27 0,67
Learning the programming language syntax I4 555 2,75 1,01 33 2,70 0,73
Designing a program to solve a certain task I5 555 3,12 0,98 33 3,97 0,73
Dividing functionality into procedures I6 543 3,10 1,09 31 4,06 0,63
Finding bugs from my own program I7 549 3,28 1,03 33 3,91 0,77
Which programming concepts have been difficult for you to learn?
Variables (lifetime, scope) C1 541 2,10 0,97 34 2,41 0,70
Selection structures C2 552 1,98 0,90 34 2,38 0,70
Loop structures C3 551 2,09 0,97 34 2,79 0,91
Recursion C4 512 3,22 1,03 31 4,06 0,96
Arrays C5 526 2,79 1,15 33 3,24 0,71
Pointers, references C6 518 3,59 1,04 32 4,44 0,56
Parameters C7 513 2,60 1,09 32 3,47 0,76
Structured data types C8 496 2,90 1,03 31 3,45 0,81
Abstract data types C9 499 3,02 1,10 31 4,06 0,81
Input/output handling C10 519 2,96 1,04 32 3,75 0,88
Error handling C11 481 3,33 1,01 32 4,13 0,79
Using language libraries C12 465 3,04 1,09 32 3,88 0,71
LEARNING AND TEACHING PROGRAMMING
When do you feel that you learn issues about programming?
In lectures S1 543 3,01 1,01 33 3,21 1,02
In exercise sessions in small groups S2 510 3,44 1,10 32 3,84 0,99
In practical sessions S3 514 3,77 1,03 31 4,35 0,75
While studying alone S4 546 3,79 1,06 31 3,42 0,72
While working alone on programming coursework S5 539 3,98 1,09 33 4,00 0,79
What kind of materials have helped/would help you in learning programming?
Programming course book M1 515 3,35 1,03 33 3,30 0,88
Lecture notes/copies of transparencies M2 539 3,39 1,05 34 3,47 0,71
Exercise questions and answers M3 523 3,33 1,07 34 3,62 1,02
Example programs M4 551 4,19 0,86 34 4,24 0,65
Still pictures of programming structures M5 490 3,15 1,00 30 3,70 0,75
Interactive visualizations M6 315 3,33 1,03 27 4,07 0,87
4.1 Course contents had the mean value above 3, and the most difficult issues were the
The respondents perceived as the most difficult issues in pro- same according to teachers and students. Teachers perceived sys-
gramming understanding how to design a program to solve a cer- tematically everything in the course contents more difficult to learn
tain task (I5), dividing functionality into procedures (I6) and find- than the students. Figure 3 shows the differences on programming
ing bugs from their own programs (I7). These are all issues where concepts.
the student needs to understand larger entities of the program in-
stead of just some details about it. 4.2 Learning situations and materials
The most difficult programming concepts were recursion (C4), The students seem to be very self-confident, because they rated
pointers and references (C6), abstract data types (C9), error han- studying alone (S4) more useful than lectures (S1), and working
dling (C11) and using the language libraries (C12). Again, error alone on programming coursework (S5) more useful than excer-
handling requires understanding the program comprehensively. Us- cise sessions (S2) and practical session (S3). Learning by doing
ing the language libraries requires independent searching of the in- was considered to be effective too, because exercise sessions (S2)
formation, which can make it difficult for the novices. Recursion, were rated more useful than lectures (S1), and practical sessions
pointers and references, and abstract data types are abstract con- in computer rooms (S3) even higher. Similarly, programming by
cepts and thus cognitively complex to understand without a similar themselves (S5) was rated more useful than studying by themselves
phenomenon in the daily life for comparison. (S4).
The teachers’ opinions on the most difficult course contents were Example programs (M4) were considered as the most useful type
almost the same as the students’. In addition, the teachers perceived of material both by the students and the teachers. The rest of the
understanding programming structures (I3) difficult in issues about material forms were considered equally useful by the students. The
programming. In programming concepts, almost all the questions teachers valued interactive visualizations more than the rest of the
16
tures (C2), arrays (C5), pointers and references (C6), and parame-
ters (C7) were perceived significantly more difficult when learning
in C++ than in Java (p=0.05).
Understanding the programming structures (I3) was significantly
(p=0.05) more difficult in other languages than in C++, Java or Pas-
cal. However, there was no field in the questionnaire to reveal
which other languages were meant here. Using the language li-
braries (C12) was easier in Java than in Pascal.
5. DISCUSSION
When interpreting the results, it is important to bear in mind that
the responses are subjective opinions of the people who answered.
The students do not always see their difficulties completelyq. How-
ever, the number of responses is so large that the respondent group
Figure 3: Difference of students’ and teachers’ responses con- can be seen to represent the programming students and teachers of
cerning the programming concepts. these universities well.
The survey results concerning the programming concepts con-
firm that the most difficult concepts to learn are the ones that re-
materials, but it can derive from the fact that the survey was carried quire understanding larger entities of the program instead of just
out among teachers that are interested in developing visualizations. details, as also found in several articles in Soloway and Spohrer
The learning situations were seen differently among the teachers [8]. The results support also the notions made by Milne and Rowe
than among students. The teachers thought that the most effec- [5]; abstract concepts like pointers and memory handling are diffi-
tive learning situations were practical sessions in computer rooms cult to learn. The results also showed a group of topics (e.g. input
(S3), exercise sessions in small groups (S2) and working alone on and output, language libraries) that should probably have more at-
coursework (S5). Either the teachers seem to think that the students tention, since understanding them was not related to understanding
need guidance more than the students themselves or the teachers the recognized ”core” of programming.
consider their teaching more effective than it actually is, because However, the biggest problem of novice programmers does not
they rated all the guided learning situations higher than the stu- seem to be the understanding of basic concepts but rather learning
dents. to apply them. Robins et al. [7] suggest that teachers should focus
more on combination and use of these features, especially on the
4.3 Correlations underlying issues of basic program design. In the results of the
When analyzing the correlations of different programming is- survey both students and teachers agreed that the practical learning
sues and programming concepts from the students’ responses, it situations were the most useful. Even if the theory is very important
was found that the issues relating to understanding programming in learning programming, students also need practical experience
structures (I3), learning the programming language syntax (I4), un- to understand the concepts. The more practical and concrete the
derstanding how to design a program to solve a certain task (I5), learning situations and materials are, the more learning takes place.
and dividing functionality into procedures, functions and/or classes Learning by doing should be a part of the studies all the time.
(I6) all have a strong positive correlation with each other (0.534 < One of the problems in teaching programming seems to be that
r < 0.637, p = 0.01). The student either learns all of these easily or the students overestimate their understanding. The teachers think
has problems with all. that the course contents are more difficult for the students than the
These four aspects seem to form some kind of a core of under- students themselves. The reason for the different perceptions can
standing programming, because they also correlate strongly (0.406 be that the students do not realize all the difficulties they have, but
< r < 0.600, p = 0.01) with understanding most of the program- the teachers do, for example, when assessing exams. Also, the
ming concepts (C1-C9). The other programming issues had clearly teachers know the concepts deeper and they are able to see that
weaker correlations with learning the programming concepts. the students do not have a full understanding of the issues students
The core programming issues correlate also with the rest of the themselves think they understand completely [5]. Thus the stu-
programming concepts, but not as strongly. These concepts include dents and the teachers see the need for different kinds of learning
handling input and output (C10), error handling (C11), and using situations and materials differently. This can be seen as a possible
language libraries (C12), i.e. issues that are usually not part of the source for problems in students’ motivation.
core of the programming language. These concepts do not typically Since learning problems are often connected to more advanced
belong to the main topics on a programming course. issues than individual concepts, learning materials could be di-
There were no significant correlations between the learning sit- rected to develop program generation, modification and debugging
uations or materials and the course contents. The correlations in skills. If small examples, emphasizing few concepts at a time,
teachers’ results were also not significant. could be developed to support students’ active programming skills,
they would also better engage the student in the learning situa-
4.4 Comparison between different languages tion. Since success in creating a functional program is a major
There were some significant statistical differences between the positive force on students’ traditional programming work, materi-
languages in the course contents. The teaching language did not als should have more problem-solving nature instead of only repre-
seem to affect the learning situations. However, because different senting concepts.
universities used different programming languages, it is possible, For future work, the questionnaire could be designed so that it
that the circumstances in the universities also affect the differences would be possible to study the impact of the programming language
of the languages. and the environment used. In this survey it was only possible to see
C++ was found to be more difficult than Java. Selection struc- that the different languages have impact on learning some of the
17
programming concepts. Following the development of the difficul- 8. REFERENCES
ties on the same group of students or individuals in a long-term [1] S. Fincher. What are we doing when we teach programming?
research could reveal more detailed information. In Proc. of the 29th ASEE/IEEE Frontiers in Education
Conference, pages 12a4–1–12a4–5, November 1999.
6. CONCLUSIONS [2] C. Hu. Rethinking of teaching objects-first. Education and
Programming is not difficult only because of the abstract con- Information technologies, 9(3):209–218, 2004.
cepts. Students have also problems in different issues related to [3] M. Kölling. The problem of teaching object-oriented
program construction. It is important for the learning that the stu- programming. Journal of Object-Oriented Programming,
dents do programming by themselves. With carefully designed ma- 11(8):8–15, 1999.
terials and approaches teachers can guide students knowledge and [4] A. Korhonen and L. Malmi. Algorithm simulation with
skill construction. automatic assessment. In Proceedings of the 5th annual
The survey studied the students’ and teachers’ perceptions of the ITiCSE conference, pages 160–163, 2000.
difficulties in learning programming. The results provide an exten- [5] I. Milne and G. Rowe. Difficulties in learning and teaching
sive amount of data on perceived difficulties related to program- programming - views of students and tutors. Education and
ming concepts and program construction. The survey gives also Information Technologies, 7(1):55–66, 2002.
information on students’ perceptions of the most useful material [6] J. Pane and B. Myers. Usability issues in the design of novice
types and learning situations. These results can be used when de- programming systems. School of Computer Science Technical
signing materials and approaches for basic programming courses. Reports, Carnegie Mellon University, CMU-CS-96-132, 1996.
[7] A. Robins, J. Rountree, and N. Rountree. Learning and
7. ACKNOWLEDGMENTS teaching programming: A review and discussion. Computer
We would like to thank Minerva (Codewitz) project for fund- Science Education, 13(2):137–172, 2003.
ing. We would also like to thank Fachhochschule Furtwangen, [8] E. Soloway and J. Spohrer. Studying the Novice Programmer.
Reykjavik University, Tampere Polytechnic, Bucharest University Lawrence Erlbaum Associates, Hillsdale, New Jersey, 1989.
of Technology, and Ventspils University of Technology for helping [9] L. E. Winslow. Programming pedagogy – a psychological
with collecting the information. overview. SIGCSE Bulletin, 28(3), September 1996.
18