0% found this document useful (0 votes)
42 views6 pages

A Study of The Difficulties of Novice Programmers

Uploaded by

jpcr.jojopt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views6 pages

A Study of The Difficulties of Novice Programmers

Uploaded by

jpcr.jojopt
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/220808194

A study of the difficulties of novice programmers

Conference Paper in ACM SIGCSE Bulletin · September 2005


DOI: 10.1145/1067445.1067453 · Source: DBLP

CITATIONS READS
730 12,570

3 authors, including:

Kirsti Ala-Mutka Hannu-Matti Järvinen


European Commission Tampere University
40 PUBLICATIONS 3,136 CITATIONS 25 PUBLICATIONS 1,288 CITATIONS

SEE PROFILE SEE PROFILE

All content following this page was uploaded by Kirsti Ala-Mutka on 24 October 2014.

The user has requested enhancement of the downloaded file.


A Study of the Difficulties of Novice Programmers

Essi Lahtinen Kirsti Ala-Mutka Hannu-Matti Järvinen


Tampere University of Tampere University of Tampere University of
Technology Technology Technology
Institute of Software Systems Institute of Software Systems Institute of Software Systems
P.O. Box 553 P.O. Box 553 P.O. Box 553
FIN-33101 Tampere, Finland FIN-33101 Tampere, Finland FIN-33101 Tampere, Finland
[email protected] [email protected] hannu-
[email protected]

ABSTRACT Codewitz (www.codewitz.net) project aims to develop solutions


Programming is related to several fields of technology, and many that would benefit teaching and learning programming. The main
university students are studying the basics of it. Unfortunately, they purpose of the project is to develop web-based visualisations of
often face difficulties already on the basic courses. This work stud- programming concepts for use in classroom and for supporting in-
ies the difficulties in learning programming in order to support de- dependent learning. Unlike several approaches that concentrate on
veloping learning materials for basic programming courses. The algorithm animation, e.g. [4], this project aims at improving stu-
difficulties have to be recognized to be able to aid learning and dents’ learning introductory programming concepts and language
teaching in an effective way. structures, e.g., variables, loops, and conditional statements. For
An international survey of opinions was organized for more than developing international co-operation, it was decided to organize a
500 students and teachers. This paper analyses the results of the large survey among partner universities to study the present diffi-
survey. The survey provides information of the difficulties expe- culties in learning programming. The results of this study could be
rienced and perceived when learning and teaching programming. used both as a basis for developing new visualisations as for devel-
The survey results also provide basis for recommendations for de- oping learning approaches for programming courses generally.
veloping learning materials and approaches. The organization of the article is as follows. Section 2 con-
tains an overview of the related literature. The survey design and
methodology will be introduced in Section 3 and the analysis of
Categories and Subject Descriptors the results in Section 4. The results will be discussed further and
K.3.2 [Computers and education]: Computer and Information related to other studies in Section 5. Section 6 contains the conclu-
Science Education sions.

General Terms 2. RELATED LITERATURE


Human Factors, Languages Robins et al. [7] provide a comprehensive review on the research
relating to programming education. Another good source of infor-
Keywords mation is an older collection of research papers on novice program-
mers, edited by Soloway and Spohrer [8]. These papers provide
Programming, learning, teaching, difficulties, novices several viewpoints on the characteristics and common misconcep-
tions of novice programmers that should be considered when de-
1. INTRODUCTION signing approaches for programming education.
Programming is not an easy subject to be studied. It requires These sources conclude, for example, that novice programmers
correct understanding of abstract concepts. Many students have are typically limited to surface knowledge of programs. They often
learning problems due to the nature of the subject. In addition, approach programming “line by line” rather than using meaningful
there are often not enough of resources and students suffer from program structures. The knowledge of novices tends to be context
a lack of personal instruction. Also the student groups are large specific, and they also often fail to apply the knowledge they have
and heterogenous and thus it is difficult to design the instruction so obtained adequately. They may know the syntax and semantics of
that it would be beneficial for everyone. This often leads to high individual statements, but do not know how to combine them into
drop-out rates on programming courses. valid programs [9]. Hence, it is important to combine both concept
knowledge and strategies for their use in the learning process.
Several approaches for CS1 courses have been presented, e.g.
Fincher [1] surveyed ”syntax-free”, ”literacy”, ”problem-solving”
Permission to make digital or hard copies of all or part of this work for and ”computing as interaction” approaches. The most common dis-
personal or classroom use is granted without fee provided that copies are cussion topic in the literature of today seems to be whether imper-
not made or distributed for profit or commercial advantage and that copies ative [2] or object-oriented [3] approach should be the first. What-
bear this notice and the full citation on the first page. To copy otherwise, to ever the approach, at some point the students have to learn the ba-
republish, to post on servers or to redistribute to lists, requires prior specific sic structures of the programming languages such as loops, vari-
permission and/or a fee.
ITiCSE’05, June 27–29, 2005, Monte de Caparica, Portugal. ables, recursion, and parameter passing. Several typical miscon-
Copyright 2005 ACM 1-59593-024-8/05/0006 ...$5.00. ceptions related to language constructs are presented by Soloway

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.

3. SURVEY DESIGN AND METHODOLOGY


The earlier research on this area has often been carried out with
older programming tools and languages [8], or concentrated mainly
on certain language concepts [5]. We wanted to study the present
situation with Java and C++ courses, and find out perceptions also
on the different programming phases, learning situations and ma- Figure 1: Number of students’ responses by university.
terials on the courses. This way we would not only gain ideas for
topics that needed instruction but also information of the preferred
material usage situations.
The web-based questionnaire had three different sections: back-
ground, course contents and learning aspects. The questions can be
seen in Table 1. The same questions were asked on another form
from the teachers as their perceptions on students’ difficulties. The
goal was to compare the differences in the conceptions of students
and teachers.
The first section contained the general information of the respon-
dent (year of studies, experience in programming before university,
computer skills, programming languages used). The purpose of
this section was to be able to compare whether the background has
impact on the learning difficulties. It was known in advance that
most of the respondents had been studying programming either in
C++ or Java so we expected a possibility to study the impact of the
programming language.
The goal of the second section was to find out difficulties in
learning the course contents. It was divided in two parts: the is-
sues in program construction (e.g., using the program development Figure 2: Proportions of different languages in the survey.
environment or dividing the functionality into procedures) and the
programming concepts. The questions asked the respondents to
grade programming aspects and concepts on a five-point scale from 4. RESULT ANALYSIS
very easy to learn (1) to very difficult (5). In addition, there was an In total, 559 students and 34 teachers answered the survey. The
option don’t know. number of students’ responses from different universities are shown
The third section contained questions about learning program- in Figure 1. The results of the sections Course contents and Learn-
ming. The goal was to find out what kind of learning situations ing and teaching programming are presented in Table 1. The Back-
and materials the students find most effective. The scale for re- ground information section is analyzed in the following.
sponses was the same as before, from 1 to 5, varying from the stu- More than half (58,6%) of the students taking part in the sur-
dent feeling that he/she was learning never in that kind of situations vey already had experience in programming before studying at the
to learning always. In the questions about the materials 1 stood for university. Almost half (40,6%) of the ones that had experience in
practically useless and 5 for very useful. programming, believed that their programming skills were at least
The questionnaire was presented for students who had experi- moderate. This shows that students in a programming class often
ence of 1-2 programming courses of their BSc and MSc programs may have very different experience levels, which makes it difficult
in 6 universities. It was advertised also to the teachers of the same to design the teaching so that it would be challenging and interest-
courses. Responses were received from Fachhochschule Furtwan- ing for everyone.
gen (FHF, Germany), Reykjavik University (RU, Iceland), Tampere Majority of the students had been learning the basics of program-
Polytechnic (TPU, Finland), Tampere University of Technology ming using C++ as the programming language. There were also
(TUT, Finland), Bucharest University of Technology (UTCB, Ro- some students who had used Java, and a small minority had used
mania), and Ventspils University of Technology (VENTA, Latvia). Pascal or other languages. The percentages of different languages
The questionnaire was available for 10 days. being used are presented in Figure 2.

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

View publication stats

You might also like