0% found this document useful (0 votes)
46 views

Learning To Program - Difficulties and Solutions: January 2007

This document discusses difficulties students face in learning to program and potential solutions. It identifies issues with traditional teaching methods, such as a lack of personalized instruction and support for different learning styles. It also notes that concepts are often taught through static materials that don't convey the dynamic nature of programming. Additionally, the document suggests students have problems with study methods, lacking skills like problem-solving abilities, logical reasoning, persistence, and mathematical knowledge needed for programming. Solutions proposed include improving teaching strategies and supporting students in developing prerequisite problem-solving skills.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views

Learning To Program - Difficulties and Solutions: January 2007

This document discusses difficulties students face in learning to program and potential solutions. It identifies issues with traditional teaching methods, such as a lack of personalized instruction and support for different learning styles. It also notes that concepts are often taught through static materials that don't convey the dynamic nature of programming. Additionally, the document suggests students have problems with study methods, lacking skills like problem-solving abilities, logical reasoning, persistence, and mathematical knowledge needed for programming. Solutions proposed include improving teaching strategies and supporting students in developing prerequisite problem-solving skills.
Copyright
© © All Rights Reserved
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/228328491

Learning to program - difficulties and solutions

Conference Paper · January 2007

CITATIONS READS

278 9,628

2 authors:

Anabela Gomes Antonio Jose Mendes


Instituto Politécnico de Coimbra University of Coimbra
83 PUBLICATIONS   987 CITATIONS    137 PUBLICATIONS   1,511 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

New Generation Pedagogies View project

Serious Game to Support Introductory Programming Learning View project

All content following this page was uploaded by Anabela Gomes on 28 May 2014.

The user has requested enhancement of the downloaded file.


Learning to program - difficulties and solutions
Gomes, Anabela1,2, Mendes, A. J.2
1 ISEC – Engineering Institute of Coimbra - Polytechnic Institute of Coimbra
[email protected]
2
CISUC – Department of Informatics Engineering - University of Coimbra
[email protected]

Abstract - Programming is a fundamental part of


I. The teaching methods
computer science curriculum, but it is often problematic.
The high drop out and failure rates in introductory The traditional teaching methods do not seem adequate for
programming courses are a universal problem that many students needs, for different reasons:
motivated many researchers to propose methodologies • Teaching is not personalized. It would be desirable to
and tools to help students. Although some of these tools have a teacher always available to allow more
have been reported to have a positive effect in students personalized student supervision. Immediate feedback
learning, the problem still remains mostly unsolved. We during problem solving and detailed explanation of less
think that there are several reasons that cause this understood aspects could probably help many students.
learning problem. Maybe the most important is the lack However, in reality it is impossible to give this type of
of problem solving abilities that many students show. support due to time constraints and common course
They don’t know how to program, because they don’t sizes.
know how to create algorithms, mainly due to their lack • Teachers’ strategies don’t support all students’
of general problem solving abilities. This and other learning styles. People learn in several ways and have
causes to student difficulties are discussed in this paper. different preferences to approach new materials. In
Some possible solutions are proposed, so that problems traditional education all students must learn at the same
can be reduced. rhythm and in accordance to the teacher’s pedagogical
strategies, which are based on the teacher's learning
Index terms - Educational Technology, Learning Styles, style. Different students have different learning styles
Programming Teaching and Learning, and can have several preferences in the way they learn.
Some may regard learning as a solitary process while
INTRODUCTION others may prefer a more dynamic learning
environment, for instance through discussions with their
It is well known that many students have difficulties in peers. Additionally, some subjects may demand a
programming learning. Programming is a very complex particular learning approach but, without guidance,
subject that requires effort and a special approach in the way students will tend to adopt the style they prefer or which
it is learned and taught. To become a good programmer, a has served them best in the past. It is an important
student must acquire a series of abilities that go well beyond responsibility for the teacher to ensure that the students
knowing the syntax of some programming language. adopt the most appropriate learning approach for the
Several approaches and tools have been proposed subject at hand [2].
aiming to support programming learning in different ways. • The teaching of dynamic concepts through static
Although we find reports of positive results as an outcome of materials. Programming involves several dynamic
some tools [1], none of them has a general use. In fact, the concepts that many times are taught through static
problem remains relatively unchanged as we continue to find means (projected presentations, verbal explanations,
reports about the difficulties many students experience when diagrams, blackboard drawings, texts, and so on). For
learning basic programming. some students this is a problem, as they fail to
Experience shows that the problem starts for many understand program dynamics through this type of
students in the initial phase of learning, when they have to materials.
understand and apply abstract programming concepts, like • Teachers are more concentrated on teaching a
control structures, to create algorithms that solve concrete programming language and its syntactic details,
problems. Particular attention is necessary in this initial instead of promoting problem solving using a
stage, not only in the development of programming specific programming language. The purpose of an
abilities, but also (and maybe above all) in the improvement introductory programming course should be to increase
and/or consolidation of knowledge and abilities that should students’ programming abilities. However, many times
have been acquired in previous years. These include generic teachers and students focus more in the programming
problem solving abilities, logic reasoning and so on. language syntactic details. The language should only
serve as a tool to express ideas and algorithms.
However, an enormous amount of syntactic details are
THE PROBLEM taught, normally before the students have a good

Coimbra, Portugal September 3 – 7, 2007


International Conference on Engineering Education – ICEE 2007
understanding of some important programming iv) Lack of persistence - Students often give up solving
concepts. In our view, the language used in introductory a problem if they don’t quickly find a possible solution.
programming courses should be chosen considering Usually, solving programming problems demands effort
pedagogic suitability and not popularity in industry or and persistence. However, when facing any difficulty,
some other reason. many students prefer to ask the solution to a colleague
or simply give up, instead of keep trying solving the
II. The study methods
problem. This is especially important, since learning is
We consider that the study methods followed by many more effective when students find the solution, instead
students are not suitable for programming learning. We can of simply reading the solution.
identify several aspects where improvement could happen: • Many students don’t have enough mathematical and
• Students use incorrect study methodologies. Many logical knowledge. Gomes et al. [3] conducted some
students are used to solve problems from other experiments exploring the relationships between
disciplines through the memorization of formulas or mathematical problem solving competences and the lack
procedures. Sometimes students memorize formulas, of programming abilities shown by a group of students
without a complete understanding of the underlying that didn’t get approved in their initial programming
concepts, just knowing that a particular formula should course. This experience was carried out during the
be used to some type of problem. Programming requires second semester of 2005/2006 and the authors
a different study method. It should be essentially concluded that the involved students had deep
practical and very intensive, quite different from what is difficulties in several areas, such as basic calculus and
required in many other courses (more based in number theory or simple geometric and trigonometric
theoretical knowledge, implying reading and some concepts. The authors also report difficulties in
memorization). Some students believe that they can transforming a textual problem into a mathematical
learn to program mostly through reading a textbook, formula that solves it. Limitations in abstraction level
failing to understand that their main activity should be and logical reasoning were also identified.
solving as many programming problems as possible. We think that mathematical knowledge is very important
• Students don’t work hard enough to acquire for programming and it is possible to find studies ([4],
programming competences. They are used to subjects for example) that evidence some relationship between
where assisting classes and studying a text book is programming skills and experience in mathematics.
enough. However programming demands intense work • Students lack specific programming expertise. Many
extra classes. students’ programming difficulties are also caused by
programming specific errors and misconceptions.
III. The student’s abilities and attitudes Sometimes we find students that don’t know how
• Students don’t know how to solve problems. We think common programming structures work or have
that the most important cause to the difficulties many misconceptions about them. It is also common that
freshmen feel to learn programming is their lack of students demonstrate difficulties to detect simple
generic problem solving skills. The students don’t know syntactical and logical programming errors.
how to create algorithms, mainly because they don’t IV. The nature of programming
know how to solve problems. Problem solving requires
multiple abilities that students often don’t have, namely: • Programming demands a high level of abstraction.
i) Problem understanding - Many times the students try Programming learning requires skills like abstraction,
to solve a problem without completely understand it. generalization, transfer and critical thinking, among
Sometimes this happens because the student has others. Experience has also shown that the problem
difficulties interpreting the problem statement and others starts, in general, in the initial learning phase, when
simply because students are too anxious to start writing students are expected to understand and apply certain
code and don’t read and interpret correctly the problem abstract programming concepts, like control structures,
description. to solve problems.
ii) Relating knowledge - Many students don’t establish • Programming languages have a very complex syntax.
correct analogies with past problems and don’t transfer Programming languages were developed for
prior knowledge to the new problems. They tend to professional use and not to support learning. Common
group the problems that have the same superficial languages are extensive and have many complex
characteristics instead of the same principle. syntactic details to memorize. That complexity requires
Consequently, many times students base their solutions that students have to concentrate simultaneously in
on unrelated problems, leading to incorrect solutions. algorithm construction and syntactic rules.
iii) Reflection about the problem and the solution - The
V. Psychological Effects
students have a tendency to write an answer before
thinking carefully about it. Many times testing is done • Students don’t have motivation. Many students don’t
superficially and they get satisfied just because the have enough motivation to study programming, because
program works with a data set, without making more there is an extremely negative connotation associated
extensive testing. with programming that passes from student to student.
There is the public image of a "programmer" as a

Coimbra, Portugal September 3 – 7, 2007


International Conference on Engineering Education – ICEE 2007
socially inadequate "nerd" [2]. Additionally, are in the engineering field, we believe it is a good
programming courses acquire the reputation of being choice for our environment.
difficult. So, it is hard to imagine students aspiring to • The teaching of dynamic concepts is usually made
this image. If students approach a course with an through static material. The environment includes
expectation that it will be difficult, and with a negative dynamic computational models representing
image of those who excel in the subject, it is very hard programming concepts. However these models should
to imagine them as being especially motivated. And be in accordance with the preferential learning style of
students who don’t have an intrinsic motivation will the student.
hardly succeed. [5]. • Teachers are sometimes more concentrated on
• Students have to learn programming in a difficult teaching a programming language and its syntactic
period of their life. Programming is normally taught as details, instead of promoting problem solving using a
a basic subject in the beginning of a higher education programming language. The environment includes
course, coinciding with a period of transition and multimedia tools focused on problem solving and
instability in the student’s life. Some authors consider algorithm development. Algorithms can then be
that programming disciplines are badly located in the implemented in any common programming language.
curriculum, because this is a time of many difficulties Progress through the different types of problems must be
and novelties to a new and autonomous life. The type of gradual and progressive. In a first phase the problems
subject is already difficult enough when students are are simple and have some playful dimension to attract
stable so, when placed in a period of transition this can and stimulate students. Gradually problems progress to
only contribute to an increase in difficulty [2]. more specific domains towards typical programming
problems. Each new problem presented to the student
OUR PROPOSAL demands more elaborated solutions, involving more
detailed procedures. The main idea consists in
How to solve or at least minimize each of the above promoting and evaluating the student’s progress,
discussed difficulties? In our view, this can be achieved through a stimulating and attractive system.
through the development and utilization of a computational • Students often use incorrect study methodologies and
environment that may support students effectively. To reach don’t work hard enough to achieve success in this
this general objective it is necessary to define which type of discipline. To help in this area the environment
characteristics are necessary to help in each of the mentioned must be attractive and include activities that may interest
problems. students. It has many practical problem solving
• As teaching is not personalized the environment needs activities, giving students the possibility to practice with
to provide permanent student supervision. The ideal a lot of diversified activities. Programming is "problem
situation would be to have a tutor to follow student’s solving intensive" [9] requiring a significant amount of
evolution, clarify doubts, and propose problems and effort and different skills. So it is very important to give
activities. Another important role of the tutor is to students opportunities to practice a lot. It is also
prevent situations that may lead students to give up or important that after concluding an activity the
lose motivation. A computational tutor may be environment provides additional questions or activities
beneficial in the sense that it won’t show negative to make sure that the student understood the solution
sentiments and will always show some tolerance! One of completely. That will allow students to reflect on their
the teacher’s roles is to motivate students. However, solutions and how they could be improved. This is an
sometimes this is not easy and motivation lacks in both important activity that students rarely do. These
parts. Although a computational tutor cannot completely consolidation/reflection questions can be of several
replace a human tutor, we believe it can contribute to types, for example including textual questions, graphical
captivate the students’ attention, keeping them interested representations, and simulations involving some data
and allowing them to do the activities without changes.
inhibitions! • As Students don’t know how to solve problems the
• Teachers’ strategies don’t support all students’ environment includes many problems in accordance
learning styles. The environment must adapt activities with the non computational model proposed in [10].
to each student preferential learning style. This can be This environment must incorporate the following
done having different presentation formats to each characteristics:
activity and adapting interaction strategies to the student i) For each problem, the environment must verify that
characteristics. The first time students access the the student understood what was asked. This can be
environment they will be asked to register and fill a verified, for example, asking the students what the input
questionnaire that allows the identification of that is and output data for the problem or asking them to
particular student learning style. There are different predict the new output after some changes made to the
models for this purpose, for example “The Myers-Briggs problem.
Type Indicator (MBTI)” [6], “The Kolb’s Learning ii) The problems proposed have an increasing difficulty
Style Model” [7], and “The Felder-Silverman Learning level maintaining, when possible, some connection with
Style Model” [8]. The later is widely used and easy to previous problems. At least the new problems should
implement in a computational platform. As its origins maintain some concepts needed to solve some subtasks

Coimbra, Portugal September 3 – 7, 2007


International Conference on Engineering Education – ICEE 2007
in previous problems. So, if the environment detects that The environment is based on a constructivist approach
the student isn’t able to solve the current activity it can of learning, where each student learns at her/his own
give hints, such as dividing the problem and connecting pace and progressively constructs her/his own
some of the parts with problems previously solved by knowledge. We strongly believe, like many researchers,
the same student. Alternatively, it can also propose that this kind of approach can improve student problem
simpler challenges for further practice. solving abilities, as well as their critical thinking
iii) When the student proposes a solution to a particular capabilities [12].
problem, she/he will have to face a set of questions or • Programming demands a high level of abstraction. It
mini-activities in order to reflect on the proposed is important that the environment helps to develop the
solution. These activities may include, for example, the student’s abstraction capacity. For that, it includes from
adaptation of the student solution, so that it works also everyday problems to more specific problems
to some variation of the original problem. concerning the programming domain. It is important that
iv) Integrating mechanisms that prevent the students students learn to recognize patterns in the different
from giving up solving problems. This objective is problems, developing their generalization skills. We
pursued through a lot of interactivity with the student, think that the non computational model proposed in [10]
generating adequate feedback, whenever it is necessary. promotes the gradual development of students’
The idea is to motivate and encourage them to continue abstraction capacity, helping them to relate new
trying to solve the problem. This can be done in situations with their previous experiences.
different ways. For instance, after a long period of • Programming languages have very complex syntaxes.
student’s inactivity, the environment can present the The environment minimizes aspects inherent to
complete solution, asking questions about it. language syntaxes, emphasizing the algorithmic and
Alternatively, students can be asked to discover some problem solving processes. In this way it creates
errors on a presented solution or to complete parts of an conditions for students to concentrate essentially in
incomplete solution. The system can also suggest solutions without having to take care of complex
smaller challenges, based on the problem, making it syntaxes.
easier to solve. • Students don’t have motivation. We propose a
• Many students don’t have enough mathematical and multimedia environment that includes several types of
logical knowledge. The environment includes a set of problem solving activities. In the initial stages the
challenges that include implicit or explicit mathematical activities will have a more playful nature, using
concepts, especially those concepts that are important knowledge from diverse domains, as a way to attract
for typical programming problems. students to the environment. When the student shows
• Students lack specific programming expertise. Many some domain of basic problems, the environment will
times there is a gap between generic problem solving propose problems that demand more complex solutions,
and programming problem solving. Hence it is including typical programming problems. The objective
necessary that the environment helps students to make is not proposing problems that in a given stage are too
this transition. This can be done essentially in two ways, difficult for the student, eventually causing her/him to
namely: lose motivation. It is also important to show the students
i) Helping and giving hints to students, teaching them that programming is a useful tool to ease people life.
certain aspects of programming problem solving. To do This can be achieved using real life problems as much as
this the environment can present complete programs for possible.
students to analyze. We think that the best way to learn • Students have to learn programming in a difficult
to program is trying to write programs from scratch. period of their life. In our opinion, programming
However, to study and to test complete programs can should be preceded by an intensive training in problem
help students to understand how programs work. Also solving. Hence, we think that students should follow at
analyzing the strategies used to solve some problems least a course devoted to problem solving before they
can help students in their initial phase of learning to engage in typical programming courses. However, the
program. Another useful activity is to analyze programs Bologna process lead to 3 years programs in many
that include logical errors usually made by students. institutions. As programming is a pre-requisite to many
Completing incomplete programs can also be a useful other courses, it is necessary that it appears early in the
activity in initial stages, instead of waiting for students curriculum. In this context, we think that an
to write entire programs from the beginning. The environment with a strong problem solving emphasis
environment also includes programming patterns, can help reduce this problem.
representing solutions of common problems in a format The environment described in this paper is in an initial
that exemplifies good programming practices. development phase. That is why we presented essentially its
ii) Allowing students to test their principles, theories and specification and the reasoning behind it. As the environment
reasoning. The environment allows the simulation of objectives are mainly pedagogical, we are conducting a few
students’ algorithms, so that they can verify program experiments to help us better define its characteristics and to
behavior and logical errors. This is done through the more precisely identify the causes of student’s difficulties.
inclusion of the SICAS environment [11], which allows We had already conducted some experiments [11, 14],
animated simulation of student built algorithms. trying to determine how the development of mathematical

Coimbra, Portugal September 3 – 7, 2007


International Conference on Engineering Education – ICEE 2007
and logical problem solving abilities would impact [2] T. Jenkins, “On the difficulty of learning to program”, in Proc. of the
3rd Annu. LTSN_ICS Conf., Loughborough University, United
programming capacity. In this study we could identify many
Kingdom, August 2002, pp. 53-58.
students’ problem solving difficulties and relate them with
their programming limitations. These results were analyzed [3] A. Gomes, L. Carmo, E. Bigotte and A. J. Mendes, “Mathematics and
programming problem solving”, in Proc. of the 3rd E-Learning Conf.
taking into consideration the students learning styles – Computer Science Education (CD-ROM), Coimbra, Portugal,
preferences. So we already have a precise idea of the type of September 2006.
activities that should be incorporate and the way to do so
[4] P. Byrne and G. Lyons, “The Effect of Student Attributes on Success
according to the different learning styles. in Programming”, in Proc. of 6th Annu. Conf. on Innovation and
However our experiments were restricted to problem Technology in Computer Science Education - ITiCSE 2001, United
solving aspects and we did not address the way students Kingdom, 2001, pp. 49-52.
acquire knowledge. To complement this study, we are also [5] C. Bereiter and E. Ng. “Three Levels of Goal Orientation in
analyzing common teaching and learning approaches. To do Learning”, Journal of the Learning Sciences, vol. 1, nº 3, pp. 243-271,
so, we collect strategies used by programming teachers and 1991.
analyze how they can contribute to the development of [6] I. B. Myers and M. H. McCaulley, Manual: A Guide to the
students’ problem solving capacity. We also plan to Development and Use of the Myers-Briggs Type Indicator. Palo Alto,
investigate how to improve teaching strategies in CA: Consulting Psychologists Press, 1985.
introductory programming courses, taking into account [7] D. A. Kolb, Learning Style Inventory: Technical Manual. McBer and
students’ learning styles. Company, Boston, 1985.
Additionally, we also intend to verify how students [8] R. M. Felder and L. K. Silverman, “Learning and Teaching Styles in
approach programming learning, how they see its importance Engineering Education”, Journal of Engineering Education, vol. 78, nº
for their future, how much time they dedicate to 7, pp. 674-681, 1988.
programming learning, and which activities they use to [9] D. N. Perkins, S. Schwartz and R. Simmons, “Instructional Strategies
develop their programming ability, among others. In these for the Problems of Novice Programmers”, in R. E. Mayer (ed.),
studies we mainly use three basic techniques, namely Teaching and Learning Computer Programming, Lawrence Erlbaum
Associates, 1988, pp. 153-178.
observations, interviews and questionnaires, as a way to
collect facts and evaluate attitudes. [10] C. Delgado, J. A. Xexeo, I. F. Souza, M. F. Campos and C. E.
Rapkiewicz, “Uma Abordagem Pedagógica para a Iniciação ao Estudo
Once completed, the environment will also be fully de Algoritmos”, Anais do Curso de Ciência da Computação, vol. V,
evaluated, especially in pedagogical terms. It will be pp. 72-87, 2004.
necessary to see how different students use the different
[11] A. Gomes and A. J. Mendes, “SICAS: Interactive system for algorithm
materials and activities and to evaluate their impact in the development and simulation”, in Manuel Ortega and José Bravo (ed.),
development of the student’s programming abilities. Computers and Education in an Interconnected Society, Kluwer
Academic Publishers, 2001, pp. 159-166.
CONCLUSION [12] M. Ben-Ari, “Constructivism in Computer Science Education”,
Journal of Computers in Mathematics & Science Teaching, vol. 20, nº
There are different reasons why programming learning is 1, pp. 45-73, 2000.
inherently difficult. The question is somewhat complex. We [13] K. D. Sloane and M. C. Linn, “Instructional Conditions in Pascal
agree with some authors that say that programming requires Programming Classes”, in R. E. Mayer (ed.), Teaching and learning
not a single, but a set of skills. Those skills form a hierarchy computer programming, Lawrence Erlbaum Associates, 1988, pp.
137-152.
[13] and a programmer will be using many of them at any
point in time. In our opinion, the most important for novice [14] L. Carmo, A. Gomes, F. Pereira and A. J. Mendes, “Learning styles
and problem solving strategies”, in Proc. of the 3rd E-Learning Conf.
programming students is to develop their problem solving – Computer Science Education (CD-ROM), Coimbra, Portugal,
abilities. So we are developing a computational environment September 2006.
mainly based on problem solving activities from different
domains. When the student reaches a higher competence
level in generic problem solving, the environment starts to
propose typical programming problems. We believe this is
the best approach as programming education should be
preceded by the development of a sound problem solving
competence.
The environment also tries to adapt itself to each particular
student characteristics, namely taking into consideration
her/his previous work and preferred learning style when
selecting activities and interaction modes that will be used
with that particular student.

REFERENCES

[1] A. Lawrence, A. Badre and J. Stasko, “Empirically Evaluating the Use


of Animations to Teach Algorithms”, in Proc. of the IEEE Symposium
on Visual Languages, St. Louis, MO, October 1994, pp. 48-54.

Coimbra, Portugal September 3 – 7, 2007


International Conference on Engineering Education – ICEE 2007

View publication stats

You might also like