Escolar Documentos
Profissional Documentos
Cultura Documentos
Anna Eckerdal
Anders Berglund
Department of Information
Technology
Uppsala University
P.O. Box 337, 751 05 Uppsala,
Sweden
Department of Information
Technology
Uppsala University
P.O. Box 337, 751 05 Uppsala,
Sweden
Anna.Eckerdal@it.uu.se
Anders.Berglund@it.uu.se
ABSTRACT
General Terms
Human Factors, Theory
Keywords
Phenomenography, process-object duality, levels of abstraction
1.
INTRODUCTION
What is programming thinking ? When interviewing students about their experiences of learning to program, many
of them expressed that programming includes a dierent
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
ICER05, October 12, 2005, Seattle, Washington, USA.
Copyright 2005 ACM 1-59593-043-4/05/0010 ...$5.00.
135
2.
RESEARCH APPROACH
2.1 Phenomenography
Phenomenography aims at describing the variation of understanding of a particular phenomenon found in a group
of people. Marton and Booth discuss [7] the idea of phenomenography:
The unit of phenomenographic research is a way of
experiencing something, [...], and the object of the
research is the variation in ways of experiencing phenomena. At the root of phenomenography lies an
interest in describing the phenomena in the world as
other see them, and in revealing and describing the
variation therein, especially in an educational context [...]. This implies an interest in the variation
and change in capabilities for experiencing the world,
or rather in capabilities for experiencing particular
phenomena in the world in certain ways. These capabilities can, as a rule, be hierarchically ordered.
Some capabilities can, from a point of view adopted
in each case, be seen as more advanced, more complex, or more powerful than other capabilities. Differences between them are educationally critical differences, and changes between them we consider to
be the most important kind of learning. [7, p. 111]
And later:
Other questions were:
[...] the variation in ways people experience phenomena in their world is a prime interest for phenomenographic studies, and phenomenographers aim
to describe that variation. They seek the totality of
ways in which people experience, or are capable of
experiencing, the object of interest and interpret it
in terms of distinctly dierent categories that capture the essence of the variation, a set of categories
of description [...] [7, p. 121-122]
3.
THE STUDY
136
3.2.2 Learning is a way of thinking, which is experienced as difficult to capture, and which is understood to be aligned with the programming
language
A common way to express what it means to learn to program, or what is missing in their understanding of programming, can be described as programming thinking. Approximatly half of the students in the study talk about the actual
thinking behind programming as something specic, an ability one has to acquire to be able to program. Many of these
students seem to have problems identifying what programming thinking involves. Some express themselves as if it is
something magic, dicult to catch.
Category two in Table 1, Learning to program is experienced as learning a way of thinking, which is experienced
as dicult to capture, and which is understood to be aligned
with the programming language, summarizes this understanding. This second category includes the rst one, Learning to
program is experienced as to understand some programming
language, and to use it, but is more developed. An example that illustrates that the rst category is included in the
second is when student D says: youre supposed to get an
understanding of the actual thinking when you program.
The student discusses programming, but the focus is on the
special thinking that is required. The understanding is, like
in the rst category directed toward the programming language but also toward the logic and thoughts behind the
language. In this spirit some students discuss the dierences between human beings and computers as something
crucial to grasp in the learning of programming. Student C
talks about what is most important in the course:
3.2.1
learning, partly the commands, fundamental commands I use, I have to remember them [...]
N: (giggle) Yes, but to learn must mean to understand and... but it doesnt mean that, because we have done the mandatory assignments
in pairs, so it doesnt mean to sit beside and look
when the other person does it, of course. Yes but
to pick up what its about, to understand what
its about and hopefully remember something.
I: What is it about then?
N: Well (giggle), dont know... dicult to say.
I: [...] what is your opinion of what it is all about?
[...]
N: What it is all about, I think it is all about
Some students use the word logic when they discuss how
to think when they learn to program. This logic is discussed by student A when he/she is asked what is most
important in the course:
A: It is the understanding of how the programming language is built rather than the specic
command, if you want to do this, its more the
thinking itself, the logical thinking. Everything
you need to know you must think of when it
comes to programming. Its kind of, yes, its very
137
Student D, who is enrolled in the program Chemical Technology Engineering, describes this special way of thinking as
making it dicult to know how to construct a program, to
understand concepts, and that it also causes problems in
knowing how to go about studying. Student D talks about
programming thinking in a way reminiscent of magic. On
the question what has been dicult in the course student D
says:
D: Yes, I think it has been dicult with concepts and stu, as to understand how to use different, how one should use dierent things in a
program. And I actually think that most of it
has been dicult, but this very thought behind,
it feels as some people just understand programming, its something they... but I also think that
some people who have been programming before
have probably learned to think like that. But I
still think the course, its dicult for a novice to
sort of get a grip of how to study when you implement the programs and like that. (Giggle)...
Student D also discusses the reputation the course has
among the students in his/her own program, and compares
programming with other subjects studied.
138
The last category in Table 1 is Learning to program is experienced as a skill to use outside the programming course.
This understanding presupposes the understandings in the
previous categories. The ability to know and use a programming language, as expressed in categories one, two and four,
are clearly expressed, but no longer the focus. The focus has
moved outside the course and course context. The purpose
of learning to program is not vaguely expressed as in category three. The students can clearly discuss why they want
to learn to program and how they will use this knowledge
after the course. Whilst this understanding is expressed in
dierent ways by dierent students, what is common in the
students expressions is that the knowledge acquired is seen
as something the student believe will prove useful later on,
in further studies or in working life. Programming is experienced as a tool that will be benecial for the student even
after the course.
Student C focuses on the use of Java knowledge when
learning other programming languages. Student C answers
the question what he/she thinks the course is about:
The category expressed in category four in Table 1, learning a way of thinking, aligned with the programming language which enables problem solving, talks about learning
to program in terms of problem solving. It is closely related
to the understandings expressed in categories one and two.
Programming knowledge is more or less presupposed, and
programming thinking is connected either to the course and
course context, or to a need not limited by the course itself
with its specic language learned. By taking the discussion
outside the course context the understanding expressed in
category four reaches beyond the rst two categories and
includes and builds upon the third category which discusses
programming as it is met in everyday life. Problem solving
is discussed as an ability useful both within the course and
outside of the course context.
Student G discusses what it means to learn in the present
course:
Student E also emphasizes the importance of independence. Knowledge is clearly described as a tool for his/her
139
own success, to be used to manage the working life better. Student E answers the question what he/she thinks the
course is about:
E: [...] I guess, its ... learning to think like a
programmer
Later in the interview:
I: Whats the point of learning to program [...]?
E: Yes but its that the more you know about
computers the less dependent on others youll be,
sort of.
I: I see.
E: I dont know, if you work somewhere later and
have some insight into things, then I think itll
open a window so that you know what its about
at least even if you dont, I mean, its the pros
that will deal with the real things.
Students who express an understanding belonging to category ve, have managed to place the course and the course
context in their own world and thinking about their future.
Learning to program is experienced as meaningful for themselves, even though the reasons for this vary.
4.
DISCUSSION
The present study has its focus on students understanding of what it means to learn to program, and more precisely
to learn object-oriented programming. The process-object
duality is of immediate interest in a course where we introduce abstract concepts like object and class early in the
teaching, and where the understanding of these and other
object-oriented concepts are fundamental for the rest of the
course and for the ability to learn to program. Programming
is a skill, but requires also a deep understanding of abstract
concepts. [A]nalysing the essence and properties of central
concepts in object-oriented programming is very much in
line with the analysis and design phase in a programming
problem. Analysis and design are abstract skills that belong
to an object conception that requires a good understanding
of central concepts.
In object-oriented programming as in mathematics there
are standard solutions to certain type of problems, canonical procedures to learn and discover. They are used by
experienced programmers, and necessary for the simplication and speed up of the work. It is thus desirable to help the
students to discern such procedures. In this discussion we
want to compare the students discussion on programming
thinking when learning object-oriented programming, with
a discussion on canonical procedures. Many students mentioned programming thinking as something specic, dierent from other subjects they had studied. Student D is an
140
5. CONCLUSIONS
A study has been performed on beginning students understanding of what it means to learn to program. The
students were interviewed when they had just nished their
rst programming course. The phenomenographic analysis
of the data identied what beginning students called programming thinking. This is described e.g. as understanding
of concepts, but also as methods and study techniques necessary when learning to program. The study indicates that
some students have problems to discern the study techniques
required when learning object-oriented programming, and
this is also by the students connected to the learning of concepts. Some students commented that it is harder to discern
such techniques in programming than in subjects like mathematics and chemistry.
By comparing our results with research on process-object
duality, developed in mathematics education, we found that
it is of great importance that students reach an understanding expressed as learning to program is a way of thinking,
which enables problem solving, and which is experienced as a
method of thinking. This corresponds to procedure conception, necessary for students to discern. Such a conception scaolds for the more abstract level of understanding,
the object conception. This level of abstraction is described
as solving a problem by analyzing the essence and properties of concepts and might be needed when central concepts in object-oriented programming are used in e.g. analysis and design. Both our results and Hazzans point in the
same direction, although from dierent starting points. This
strengthen the discussion that students may need canonical procedures for the passage to object conception. Our
study goes further in that it puts searchlight on the problems
some students have to discern such canonical procedures
when learning object-oriented programming. As educators
we need to become aware of the problems indicated, and
facilitate for students to discern canonical procedures in
object-oriented programming. These can act as heaves to
a more abstract understanding of central concepts within
object-oriented programming.
141
6.
REFERENCES
[5] M. K
olling. The problem of teaching object-oriented
programming, part i: Languages. JOURNAL OF
OBJECT-ORIENTED PROGRAMMING, January
1999.
[6] S. Kvale. InterViews: An introduction to qualitative
research interviewing. Sage, 1996.
[7] F. Marton and S. Booth. Learning and Awareness.
Lawrence Erlbaum Ass., Mahwah, NJ, 1997.
[8] E. Roberts. The dream of a common language: The
search for simplicity and stability in computer science
education. In Proceedings of the thirty-fth SIGCSE
technical symposium on Computer science education,
2004.
[9] A. Sfard. On the dual nature of mathematical
conceptions: Reections on processes and objects as
dierent sides of the same coin. Educational Studies in
Mathematics, 22:136, 1991.
142