programming thinking icer 05

8
What Does It Take to Learn ’Programming Thinking’? Anna Eckerdal Department of Information Technology Uppsala University P.O. Box 337, 751 05 Uppsala, Sweden [email protected] Anders Berglund Department of Information Technology Uppsala University P.O. Box 337, 751 05 Uppsala, Sweden [email protected] ABSTRACT What is ’programming thinking’? In a study, first year students were interviewed on their understanding of what learning to program means. Many students talked about learning to program in terms of learning a special way to think, different from other subjects studied. Many of these students had problems in describing what this special way to think included. The analysis of the interviews revealed some features of this thinking, as expressed by the students. In this paper we discuss and analyse ’programming thinking’ using phenomenography as our research approach [7]. Our results are coherent with Hazzan’s research on the learning theory ’process-object duality’ [4], but points to problems in learning of object-oriented programming not indicated in ’process-object duality’. In comparing the results form our own study with this learning theory, we discuss what this might mean in learning object-oriented programming. Categories and Subject Descriptors K.3.2 [COMPUTERS AND EDUCATION]: Computer and Information Science Education—Computer science ed- ucation ; D.1.5 [PROGRAMMING TECHNIQUES]: Object-oriented Programming General Terms Human Factors, Theory Keywords Phenomenography, process-object duality, levels of abstrac- tion 1. INTRODUCTION What is ’programming thinking’ ? When interviewing stu- dents about their experiences of learning to program, many of them expressed that programming includes a different 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. ICER’05, October 1–2, 2005, Seattle, Washington, USA. Copyright 2005 ACM 1-59593-043-4/05/0010 ...$5.00. way of thinking. This ’programming thinking’, as some of the students said, seemed to have an almost magic charac- ter. The students had difficulties to describe and get a grip on how to apply this kind of thinking. The present paper discusses this and related issues. In our study, first year students taking an object-oriented programming course were interviewed on what it means to learn to program. Through our analysis we found that there are certain levels of understanding that seemed necessary for reaching a level of abstraction where concepts can be used for analysis and design in object-oriented programming tasks. We argue that some understanding scaffolds this level of abstraction, and that there are ways for educators to fa- cilitate for the students to reach such understanding. These may include problem solving and standard methods in pro- gramming. The understanding gained from this study is important, since object-oriented programming languages are used in university courses at all levels throughout the world. Much has been reported on the experiences of teaching on the object-oriented paradigm. Object-oriented programming is experienced as complex and difficult to teach [5] [8]. One important aspect of learning the object-oriented paradigm is that it is built on some fundamental abstract concepts, and there is a need for students to reach certain levels in their understanding of these concepts. Section 2 gives a theoretical background for the study and the analysis performed. The study and the results are then presented in section 3. In section 4 we relate our results to previous pedagogical research [4] and discuss implication for teaching. We show that our results and the pedagog- ical research illustrate the same progression in learning of abstract concepts. The current project, as well as the work of Hazzan, report about the same phenomenon, but using different approaches. This strengthen the conclusions. Our results however put a searchlight on problems not indicated in the research mentioned. There are students who seem to have problem to discern the methods and procedures avail- able when solving problems in object-oriented programming. We argue that these procedures can act as bridges to more abstract understanding of concepts in object-oriented pro- gramming. It is thus important for educators to facilitate for students to discern such procedures. This discussion is closely related to the question what does the students’ expe- rience of ’programming thinking’mean when learning object- oriented programming? which is the main focus in the study presented here. 135

Upload: eman-mostafa-azab

Post on 14-Apr-2016

213 views

Category:

Documents


0 download

DESCRIPTION

Programming Thinking ICER 05

TRANSCRIPT

Page 1: Programming Thinking ICER 05

What Does It Take to Learn ’Programming Thinking’?

Anna EckerdalDepartment of Information

TechnologyUppsala University

P.O. Box 337, 751 05 Uppsala,Sweden

[email protected]

Anders BerglundDepartment of Information

TechnologyUppsala University

P.O. Box 337, 751 05 Uppsala,Sweden

[email protected]

ABSTRACTWhat is ’programming thinking’? In a study, first yearstudents were interviewed on their understanding of whatlearning to program means. Many students talked aboutlearning to program in terms of learning a special way tothink, different from other subjects studied. Many of thesestudents had problems in describing what this special wayto think included. The analysis of the interviews revealedsome features of this thinking, as expressed by the students.In this paper we discuss and analyse ’programming thinking’using phenomenography as our research approach [7]. Ourresults are coherent with Hazzan’s research on the learningtheory ’process-object duality’ [4], but points to problemsin learning of object-oriented programming not indicated in’process-object duality’. In comparing the results form ourown study with this learning theory, we discuss what thismight mean in learning object-oriented programming.

Categories and Subject DescriptorsK.3.2 [COMPUTERS AND EDUCATION]: Computerand Information Science Education—Computer science ed-ucation; D.1.5 [PROGRAMMING TECHNIQUES]:Object-oriented Programming

General TermsHuman Factors, Theory

KeywordsPhenomenography, process-object duality, levels of abstrac-tion

1. INTRODUCTIONWhat is ’programming thinking’? When interviewing stu-

dents about their experiences of learning to program, manyof them expressed that programming includes a different

Permission to make digital or hard copies of all or part of this work forpersonal or classroom use is granted without fee provided that copies arenot made or distributed for profit or commercial advantage and that copiesbear this notice and the full citation on the first page. To copy otherwise, torepublish, to post on servers or to redistribute to lists, requires prior specificpermission and/or a fee.ICER’05, October 1–2, 2005, Seattle, Washington, USA.Copyright 2005 ACM 1-59593-043-4/05/0010 ...$5.00.

way of thinking. This ’programming thinking’, as some ofthe students said, seemed to have an almost magic charac-ter. The students had difficulties to describe and get a gripon how to apply this kind of thinking. The present paperdiscusses this and related issues.

In our study, first year students taking an object-orientedprogramming course were interviewed on what it means tolearn to program. Through our analysis we found that thereare certain levels of understanding that seemed necessaryfor reaching a level of abstraction where concepts can beused for analysis and design in object-oriented programmingtasks. We argue that some understanding scaffolds this levelof abstraction, and that there are ways for educators to fa-cilitate for the students to reach such understanding. Thesemay include problem solving and standard methods in pro-gramming.

The understanding gained from this study is important,since object-oriented programming languages are used inuniversity courses at all levels throughout the world. Muchhas been reported on the experiences of teaching on theobject-oriented paradigm. Object-oriented programming isexperienced as complex and difficult to teach [5] [8]. Oneimportant aspect of learning the object-oriented paradigmis that it is built on some fundamental abstract concepts,and there is a need for students to reach certain levels intheir understanding of these concepts.

Section 2 gives a theoretical background for the study andthe analysis performed. The study and the results are thenpresented in section 3. In section 4 we relate our resultsto previous pedagogical research [4] and discuss implicationfor teaching. We show that our results and the pedagog-ical research illustrate the same progression in learning ofabstract concepts. The current project, as well as the workof Hazzan, report about the same phenomenon, but usingdifferent approaches. This strengthen the conclusions. Ourresults however put a searchlight on problems not indicatedin the research mentioned. There are students who seem tohave problem to discern the methods and procedures avail-able when solving problems in object-oriented programming.We argue that these procedures can act as bridges to moreabstract understanding of concepts in object-oriented pro-gramming. It is thus important for educators to facilitatefor students to discern such procedures. This discussion isclosely related to the question what does the students’ expe-rience of ’programming thinking’ mean when learning object-oriented programming? which is the main focus in the studypresented here.

135

Page 2: Programming Thinking ICER 05

2. RESEARCH APPROACH

2.1 PhenomenographyPhenomenography aims at describing the variation of un-

derstanding of a particular phenomenon found in a groupof people. Marton and Booth discuss [7] the idea of phe-nomenography:

The unit of phenomenographic research is a way ofexperiencing something, [...], and the object of theresearch is the variation in ways of experiencing phe-nomena. At the root of phenomenography lies aninterest in describing the phenomena in the world asother see them, and in revealing and describing thevariation therein, especially in an educational con-text [...]. This implies an interest in the variationand change in capabilities for experiencing the world,or rather in capabilities for experiencing particularphenomena in the world in certain ways. These ca-pabilities can, as a rule, be hierarchically ordered.Some capabilities can, from a point of view adoptedin each case, be seen as more advanced, more com-plex, or more powerful than other capabilities. Dif-ferences between them are educationally critical dif-ferences, and changes between them we consider tobe the most important kind of learning. [7, p. 111]

And later:

[...] the variation in ways people experience phe-nomena in their world is a prime interest for phe-nomenographic studies, and phenomenographers aimto describe that variation. They seek the totality ofways in which people experience, or are capable ofexperiencing, the object of interest and interpret itin terms of distinctly different categories that cap-ture the essence of the variation, a set of categoriesof description [...] [7, p. 121-122]

The object of interest in a phenomenographic study is thushow a certain phenomenon is experienced by a certain groupof people. An empirically based insight in phenomenographyis that there is a limited number of qualitatively differentways in which a certain phenomenon can be understood.

Phenomenography is an empirical, qualitative researchapproach, often used in educational settings. Data can, asin the present study, be gathered in the form of interviews.The interviews are transcribed and analysed. Researchers,in this case two, analyse the data in order to find qualita-tively different ways subjects understand the phenomenonuncovered. The researcher formulates the essence of theunderstanding as categories of description. It is importantto state that the analysis is on a collective level, not indi-vidual students’ understandings. This is done by readingand rereading the interviews, in context, but also by decon-textualising excerpts, comparing them and grouping themtogether in different categories. The resulting descriptionof qualitatively different categories of understanding consti-tutes the outcome space of a phenomenographic analysis. Inthis way we thus identify aspects of the understanding of thephenomenon, from the students’ perspective.

3. THE STUDY

3.1 The InterviewsA study has been performed where 14 students were se-

lected for a one-hour tape-recorded interview. The studentsparticipated voluntarily in the study, but got one movie

ticket each as a sign of recognition. The students enrolledwere in a program called Aquatic and Environment Engi-neering. This educational program was selected becauseprogramming is not the main focus for the students, andthe students are thus representative for a large number ofstudents studying programming. The students had just fin-ished their first programming course, a mandatory coursegiving 4 credit points. One credit point at Swedish uni-versities corresponds to one week full time studies. Theprogramming language used in the course was Java.

Most students taking part in the course filled in a ques-tionnaire about previous programming knowledge, educa-tion, work experiences and gender. On the basis of theseanswers, we selected interviewees that represented as broada coverage as possible of the factors mentioned.

The interviews were semi-structured [6] with a small num-ber of pre-prepared questions, intending to approach thephenomena of interest in different ways to give the opportu-nity for the students to express as much of their understand-ing as possible. The primary question asked to the studentswas:

• What do you think learning means (involves) in thiscourse?

Other questions were:

• What do you experience this course to be about?

• What has been most important to you in this course/Why has this course been good for you?

• What do you think was the aim for you when learningto program?

• What has been difficult in the course?

3.2 The Phenomenographic AnalysisOne researcher read and analysed the transcribed inter-

views, looking for qualitatively different ways to understandthe phenomenon what does it mean to learn to program ex-pressed in the data. The second researcher studied quotesfrom the students and the categories identified by the firstresearcher. Five different ways to understand the phenomenonfound in the data were agreed upon. (A discussion on trust-worthiness in phenomenography can be found in [1].)

These categories are presented in Table 1. The categoriesare inclusive. This means that an understanding expressedin one of the later categories includes the understanding ex-pressed in the former categories. The categories are further-more hierarchical in the sense that the new understandingexpressed in the later categories are more advanced.

Three of these are directed towards the computer, theprogramming language, and programming in general, whiletwo are directed outwards, towards the society with its pro-grammed artifacts and the world of the programmer. Eachcategory is described and illustrated with excerpts from in-terviews. In the quotes, the interviewer is labeled I, and thestudents A, B, C etc. The table and the comments serveas a background for the discussion in this paper. We willfocus on categories two and four. The results are then com-pared with the learning theory ’process-object duality’ frommathematics. A more elaborated work on the results on stu-dents’ understanding of what it means to learn to program,

136

Page 3: Programming Thinking ICER 05

1. Learning to program is experienced as to understandsome programming language, and to use it for writingprogram texts.2. As above, and in addition learning to program isexperienced as learning a way of thinking, which isexperienced to be difficult to capture, and which isunderstood to be aligned with the programming language.3. As above, and in addition learning to program isexperienced as to gain understanding of computerprograms as they appear in everyday life.4. As above, with the difference that learning to programis experienced as learning a way of thinking which enablesproblem solving, and which is experienced as a ”method” ofthinking.5. As above, and in addition learning to programis experienced as learning a skill that can be usedoutside the programming course.

Table 1: Categories describing the students’ differ-ent understanding of the phenomenon What does itmean to learn to program?.

including the other categories in Table 1, will be presentedin later work.

Before describing these categories, let us note that stu-dents’ experiences of what it means to learn to program hasbeen investigated in some previous studies [2, 3]. In partic-ular, category two and three have not appeared explicitlyin the previous studies. Since our focus is on category twoand four, the other categories will be only briefly describedin this paper.

3.2.1 Learning is to understand some programminglanguage, and to use it for writing programtexts

The first category summarizes an understanding that isdirected towards the programming language itself, to un-derstand it and to be able to use it. It is expressed in sucha way that students’ description of learning the details ofsyntax gives the feeling of knowing how to program. Otherstudents focus on the ability to write short pieces of pro-grams, ’program chunks’, as characterising what learningmeans. To sit by yourself and code is desirable and appre-ciated. The skill to code in Java and to remember detailsin the language summarize this understanding. This un-derstanding is presupposed in the other understandings thestudents express.

Student N emphasizes the importance of detail knowledgeof the syntax, and learning by heart. Answering the questionwhat it means to learn in this course, student N answers:

N: (giggle) Yes, but to learn must mean to un-derstand and... but it doesn’t mean that, be-cause we have done the mandatory assignmentsin pairs, so it doesn’t mean to sit beside and lookwhen the other person does it, of course. Yes butto pick up what it’s about, to understand whatit’s about and hopefully remember something.I: What is it about then?N: Well (giggle), don’t know... difficult 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

learning, partly the commands, fundamental com-mands I use, I have to remember them [...]

Student B emphasizes learning by coding on your own.The aim with the studies is expressed as being able to codeon your own without any help:

I: What do you think it means to learn in thiscourse?B: It probably means that I’ll be able to sit anddo small simple things on the computer by myself. That I’ve learned that I think. [...] Eh, butotherwise it’s that I’ll know the foundations andthat I’ll kind of be able to try myself I suppose.

3.2.2 Learning is a way of thinking, which is experi-enced as difficult to capture, and which is un-derstood to be aligned with the programminglanguage

A common way to express what it means to learn to pro-gram, or what is missing in their understanding of program-ming, can be described as ’programming thinking’. Approx-imatly half of the students in the study talk about the actualthinking behind programming as something specific, an abil-ity one has to acquire to be able to program. Many of thesestudents seem to have problems identifying what ’program-ming thinking’ involves. Some express themselves as if it issomething magic, difficult to catch.

Category two in Table 1, Learning to program is experi-enced as learning a way of thinking, which is experiencedas difficult to capture, and which is understood to be alignedwith the programming language, summarizes this understand-ing. This second category includes the first one, Learning toprogram is experienced as to understand some programminglanguage, and to use it, but is more developed. An exam-ple that illustrates that the first category is included in thesecond is when student D says: “you’re supposed to get anunderstanding of the actual thinking when you program.”The student discusses programming, but the focus is on thespecial thinking that is required. The understanding is, likein the first category directed toward the programming lan-guage but also toward the logic and thoughts behind thelanguage. In this spirit some students discuss the differ-ences between human beings and computers as somethingcrucial to grasp in the learning of programming. Student Ctalks about what is most important in the course:

C: ...it’s probably the way of thinking, that iswhen you program, how you are supposed tothink and computer code and how it is inter-preted, that’s the difference to how human be-ings think.

Some students use the word ’logic’ when they discuss howto think when they learn to program. This ’logic’ is dis-cussed by student A when he/she is asked what is mostimportant in the course:

A: It is the understanding of how the program-ming language is built rather than the specificcommand, if you want to do this, it’s more thethinking itself, the logical thinking. Everythingyou need to know you must think of when itcomes to programming. It’s kind of, yes, it’s very

137

Page 4: Programming Thinking ICER 05

exclusive, everything is simply very detailed andyou’ve kind of got a small insight into what it’slike to program and how the computer works likethat, or the software.

Student A articulates that the problems with logic arethe precise demands of the syntax of the programming lan-guage. Student A also connects this special thinking to howthe computer itself works, not only the features of the pro-gramming language. It is interesting to compare this withanother statement from student A:

A: Yes, okey. Well, it’s a little bit interesting.I can, you kind of get an eye-opener, [...] whenyou kind of sit with the computer, that you re-alise how terribly much you can do, that you cando yourself with the help of a keyboard and thisI have got an understanding of in the same wayas I really understand those who are kind of con-firmed programmers and think this is so muchfun.

Student E expresses ’programming thinking’ as differentchoices to reach a specific goal. He/she answers the questionwhat it means to learn in this course:

E: Well it’s like thinking programming I think.Understanding things, puting together and howyou make things work sort of and accomplishingwhat you want yourself. There are also manyroads to take yourself to the goal.

Student D, who is enrolled in the program Chemical Tech-nology Engineering, describes this special way of thinking asmaking it difficult to know how to construct a program, tounderstand concepts, and that it also causes problems inknowing how to go about studying. Student D talks aboutprogramming thinking in a way reminiscent of magic. Onthe question what has been difficult in the course student Dsays:

D: Yes, I think it has been difficult with con-cepts and stuff, as to understand how to use dif-ferent, how one should use different things in aprogram. And I actually think that most of ithas been difficult, but this very thought behind,it feels as some people just understand program-ming, it’s something they... but I also think thatsome people who have been programming beforehave probably learned to think like that. But Istill think the course, it’s difficult for a novice tosort of get a grip of how to study when you im-plement the programs and like that. (Giggle)...

Student D also discusses the reputation the course hasamong the students in his/her own program, and comparesprogramming with other subjects studied.

I: Where do you think the problems lay?D: I don’t know. I guess, I think everyone haskind of a dread of programming (laughter) it’skind of, in my class...I: Really...D: ...no but... (laughter)I: ...more than math?

D: Yes really, much worse. No but it’s kind of,in my class...I: Chemistry is it there...D: Yes my class is chemistry, those who are doingthe second year now, it’s this very course thatmost of the students haven’t passed. More thanall courses. Everyone just goes, poor you, areyou taking programming, like! (Laughter fromboth). So I’ve been scared by them.I: But you have studied chemistry.D: No then you get so scared and just Oohh. Iguess, it’s just a rather different way of thinking.I: Now that you have taken this programmingcourse could you put your finger on somethingyou think is different than than chemistry... oryou must have taken math too I suppose.D: Sure, I’ve taken many math courses but mathis kind of logical and you understand it but thisis... no I don’t know (laughter). No but I kind ofthink it’s easier to study math. Then you oftenhave something creative to base it on, or youdon’t, but you learn more methods and kind of,there is some theory behind. Here you feel asif you only learn a lot of examples. You know,we’ve gotten so many examples of everything, insome way it feels as if you don’t understand thebase from the beginning [...]

Student D experiences a lack of method and theory whenlearning to program compared to when learning mathemat-ics. Mathematics is thus experienced as an easier subject tostudy.

Student C also makes a comparison between how to thinkin programming and how to think in other subjects:

I: Yes. You mentioned something about ways tothink.C: Mm. Yes, that, what should you say aboutthis? But exactly this kind of, that you have tobe so precise in everything you describe to thecomputer that you want it to do. It’s not veryopen for interpretations. [...]I: Do you think it’s a different way of thinkingcompared to what you’ve met in other courses?C: Yes we have mostly done math until now ac-tually and there it’s quite different. Then youthink on you own, kind of, it’s enough to havea way of thinking just for me. Now it must suita way of programing as well, it’s more like I getshaped into it, thinking like the computer, or likeJava is written, but in math it’s enough kind ofthat it works.I: Does it mean that you feel more free kind ofto think in math?D: Yes I definitely think so.

3.2.3 Learning is to gain understanding of computerprograms as they appear in everyday life

Some students talk about the programming they comeacross in everyday life. Category three in Table 1, Learningto program is experienced as to gain understanding of com-puter programs as they appear in everyday life, summarizesthis understanding.

138

Page 5: Programming Thinking ICER 05

Student D answers the question what was most importantin the course:

D: [...] You just think of things like when youwithdraw money from a cash point, kind of, thenyou start to think, okey, it’s these steps, figuresand the sum and kind of... if there is moneyin the account and so on. No but those thingsthat one starts to think a little about how certainthings are built and exactly, yes, such things aswhen you’re going to withdraw money or differ-ent games or such.

Student C answers the same question:

C: Yes, no I don’t know. It probably will be use-ful perhaps now and then or the understandingof how devices work in general. And machines.[...] No but there are many things that are runby computers today undeniably so that, it’s somekind of understanding how things work. It’s incars, computers, lifts and everything. So that,yes, no, a good overview.

The quotes from the students above express a vague andshallow understanding of programming as something theymeet in everyday life that might be of some use, becauseof the wide spread of computer programs. The third cate-gory includes the first two categories in Table 1 because itdiscusses computer programs and the thinking used whenbuilding programs. Despite its superficialness it bridges tothe last two categories found in the data when reachingout beyond the programming language and the course itself.The last two categories in Table 1 express understandingsthat are richer than the understandings expressed in the firstthree categories.

3.2.4 Learning a way of thinking, which enablesproblem solving, and which is experienced asa "method" of thinking

The category expressed in category four in Table 1, learn-ing a way of thinking, aligned with the programming lan-guage which enables problem solving, talks about learningto program in terms of problem solving. It is closely relatedto the understandings expressed in categories one and two.Programming knowledge is more or less presupposed, and’programming thinking’ is connected either to the course andcourse context, or to a need not limited by the course itselfwith its specific language learned. By taking the discussionoutside the course context the understanding expressed incategory four reaches beyond the first two categories andincludes and builds upon the third category which discussesprogramming as it is met in everyday life. ’Problem solving’is discussed as an ability useful both within the course andoutside of the course context.

Student G discusses what it means to learn in the presentcourse:

G: To get to try, like, you learn to think in aspecial way, you learn problem solving. [...] It’sproblem solving. With the mandatory assign-ments, that is the difficult part, this you can sayat least I think so.

Notice that student G mentions problem solving at thesame time as he/she talks about learning a certain way tothink. Problem solving is seen as part of ’programmingthinking’.

Student K discusses problem solving as an ability sepa-rate from the programming language learned in the course.When answering the question what it means to learn in thepresent course student K says:

K: [...] You know, it’s good to have this kind ofcourses because you get to kind of exercise prob-lem solving. That’s actually really good. Youhave a problem that you solve in different waysand then you perhaps find the best way. That’sone of the central parts I think. Then that youmust write in some programming language, thatyou can perhaps do in any language. But exactlythe problem solving, the way to handle problemsolving, that’s what I important think is impor-tant.

Student C answers the same question. He/she focuseson problem solving as meaning certain types of problemsappearing in the course. Student C also discusses problemsolving as an ability which might be useful after the presentcourse:

C: I don’t know... I guess it’s actually to solve acertain type of problem, it’s rather like the mathcourses. Then learning different methods to solvethem in different ways. Much like that, if youlook back at the course it’s not much actually butvery, very fundamental. So to... get an overviewand a basic idea of what it’s about and that youcan read on your own whenever you need.

3.2.5 Learning is a skill that can be used outside theprogramming course

The last category in Table 1 is Learning to program is ex-perienced as a skill to use outside the programming course.This understanding presupposes the understandings in theprevious categories. The ability to know and use a program-ming language, as expressed in categories one, two and four,are clearly expressed, but no longer the focus. The focus hasmoved outside the course and course context. The purposeof learning to program is not vaguely expressed as in cate-gory three. The students can clearly discuss why they wantto learn to program and how they will use this knowledgeafter the course. Whilst this understanding is expressed indifferent ways by different students, what is common in thestudents’ expressions is that the knowledge acquired is seenas something the student believe will prove useful later on,in further studies or in working life. Programming is expe-rienced as a tool that will be beneficial for the student evenafter the course.

Student C focuses on the use of Java knowledge whenlearning other programming languages. Student C answersthe question what he/she thinks the course is about:

C: [...] But it feels as if you get a better grip onmost languages, if you want to study C it will beeasier after this course.

Student E also emphasizes the importance of indepen-dence. Knowledge is clearly described as a tool for his/her

139

Page 6: Programming Thinking ICER 05

own success, to be used to manage the working life bet-ter. Student E answers the question what he/she thinks thecourse is about:

E: [...] I guess, it’s ... learning to think like aprogrammer

Later in the interview:

I: What’s the point of learning to program [...]?E: Yes but it’s that the more you know aboutcomputers the less dependent on others you’ll be,sort of.I: I see.E: I don’t know, if you work somewhere later andhave some insight into things, then I think it’llopen a window so that you know what it’s aboutat least even if you don’t, I mean, it’s the prosthat will deal with the real things.

Students who express an understanding belonging to cat-egory five, have managed to place the course and the coursecontext in their own world and thinking about their future.Learning to program is experienced as meaningful for them-selves, even though the reasons for this vary.

4. DISCUSSIONTable 1 presents the results of the study as qualitatively

different ways of understanding of what it means to learn toprogram. We argue that it is crucial that the students reachcategory four, Learning is a way of thinking, which enablesproblem solving, and which is experienced as a ”method” ofthinking. In the understanding described in category two,the students have noticed that a special way of thinking isrequired, but not what that is. In category four, on thecontrary, the students have realized that it has to do withproblem solving and a systematic way of thinking. The in-terview excerpts indicate clearly that students who expressan understanding corresponding to category two feel con-fused about programming.

Before we continue to discuss our results we want to pointat the relation between the categories of understanding iden-tified by us, and the discussion by Hazzan concerning ’process-object duality’ [4]. This duality goes back to work by Piaget,and was developed in mathematics education to discuss theidea of reducing abstraction. Hazzan discuss this in termsof a passage from the ’process conception’ to the ’objectconception’ 1:

Process conception implies that one regards amathematical concept “as a potential rather thanan actual entity, which comes into existence uponrequest in a sequence of actions.” (Sfard, 1991,p. 4). When one conceives of a mathematical no-tation as an object, this notation is captured asone “solid” entity. Thus, it is possible to exam-ine it from various points of view, to analyze itsproperties and its relationships to other mathe-matical notations and to apply operations on it.[4, p. 107 - 108] [9]

1When refering to our results, we will use the term ’cate-gory’, while when refering to Hazzan’s research, we use theterm ’conception’ to be consistent with her original termi-nology.

She concludes that according to these theories, “when amathematical concept is learned, its conception as a processprecedes - and is less abstract than - its conception as anobject”. It is thus a natural process when learning abstractconcepts to start at the ’process conception’. The learning,in terms of process-object duality assumes however a passagefrom ’process conception’ to ’object conception’. This is thedesirable development also when learning computer science,including object-oriented programming.

Hazzan speaks of ’canonical procedures’. These are waysfor the students to reduce abstraction level when dealingwith concepts in different subjects. She writes:

A canonical procedure is a procedure that is moreor less automatically triggered by a given prob-lem. This can happen either because the pro-cedure is naturally suggested by the nature ofthe problem, or because prior training has firmlylinked this kind of problem with this procedure.The availability of a canonical procedure enablesstudents to obtain a solution without worryingtoo much about the mathematical properties ofthe concepts involved. It seems that this techni-cal work gives students the assurance of follow-ing a well-known, step-by-step procedure, whereeach step has a clear outcome. In contrast, rely-ing on abstract reasoning, for example by explor-ing properties of concepts or by relying on the-orems, may be shaky mental approach for thestudents. Using the process-object duality ter-minology we may say that solving a problem byrelying on a canonical procedure is an expres-sion of process conception of the concepts underdiscussion; solving a problem by analyzing theessence and properties of concepts is an expres-sion of object conception of the concepts underdiscussion. [4, p. 108]

The present study has its focus on students’ understand-ing of what it means to learn to program, and more preciselyto learn object-oriented programming. The process-objectduality is of immediate interest in a course where we in-troduce abstract concepts like object and class early in theteaching, and where the understanding of these and otherobject-oriented concepts are fundamental for the rest of thecourse and for the ability to learn to program. Programmingis a skill, but requires also a deep understanding of abstractconcepts. ”[A]nalysing the essence and properties of centralconcepts” in object-oriented programming is very much inline with the analysis and design phase in a programmingproblem. Analysis and design are abstract skills that belongto an ’object conception’ that requires a good understandingof central concepts.

In object-oriented programming as in mathematics thereare standard solutions to certain type of problems, ’canon-ical procedures’ to learn and discover. They are used byexperienced programmers, and necessary for the simplifica-tion and speed up of the work. It is thus desirable to help thestudents to discern such procedures. In this discussion wewant to compare the students’ discussion on ’programmingthinking’ when learning object-oriented programming, witha discussion on ’canonical procedures’. Many students men-tioned ’programming thinking’ as something specific, differ-ent from other subjects they had studied. Student D is an

140

Page 7: Programming Thinking ICER 05

example of this. He/she compares programming with othersubjects studied.

D: [...] I guess, it’s just a rather different way ofthinking.I: Now that you have taken this programmingcourse could you put your finger on somethingyou think is different than than chemistry... oryou must have taken math too I suppose.D: Sure, I’ve taken many math courses but mathis kind of logical and you understand it but thisis... no I don’t know (laughter). No but I kind ofthink it’s easier to study math. Then you oftenhave something creative to base it on, or youdon’t, but you learn more methods and kind of,there is some theory behind. Here you feel asif you only learn a lot of examples. You know,we’ve gotten so many examples of everything, insome way it feels as if you don’t understand thebase from the beginning [...]

Compare this when student C discuss what it means tolearn in the present course:

C: I don’t know... I guess it’s actually to solve acertain type of problem, it’s rather like the mathcourses. Then learning different methods to solvethem in different ways. Much like that, if youlook back at the course it’s not much actuallybut very, very fundamental.

Student C, who expresses an understanding belonging tocategory four has on the other hand obviously discerned’canonical procedures’, and has less problems in his/her learn-ing. Student C has obviously reached the level of ’processconception’, and seems to have reached further in his/herunderstanding.

Student D on the other hand has not even reached thelevel of ’process conception’. He/she explicitly finds it sim-pler to study mathematics because there they learn methodsto use, which he/she obviously not has been given, or dis-cerned in programming. Student D furthermore discusseshow troublesome it is to know how to study programming.”But I still think the course, it’s difficult to for a noviceto get a good grip on how to study”. This points to thatstudent D is looking for ’canonical procedure’ as a studytechnique, but has not found such to the extend he/she asksfor. Student D also explicitly express that he/she founds itproblematic to understand concepts within the subject andconnects this to the ability to program ”Yes, I think it hasbeen difficult with concepts like that, as to understand howto use different, how one should use different things in aprogram. And I actually think that most of it has been dif-ficult, but this very thought behind, it feels as some peoplejust understand programming”.

In the understanding described in category four the stu-dents have realized that is has to do with problem solvingand a systematic way of thinking. Using Hazzan’s termi-nology, category four corresponds to ’canonical procedures’,important in the learning process to reach the desired ’ob-ject conception’. It is not until category four that the stu-dents express an understanding of programming in terms ofmethods to use. This is therefor an important stage to reach.From the educators perspective, it is important to support

students who have problem to reach ’object conception’, todiscern this understanding.

In our study some students do not even reach the levelof ’canonical procedures’. Altough with different startingpoints Hazzan’s research and the results from our studypoint to the same problem, but our study indicates thatin learning object-oriented programming there are studentswho do not even reach a level of ’process conception’. Ourmain question is:

• How can we help students to reach a level of’object conception’ in object-oriented program-ming?

The present study indicates however that an earlier ques-tion educators need to ask is:

• How can we help beginning programming stu-dents to discern ’canonical procedure’ whenlearning object-oriented programming?

Both Hazzan’s results and ours emphasize that studentsmight need ’canonical procedures’ as a heave to reach thehigher level of abstraction, the ’object conception’.

5. CONCLUSIONSA study has been performed on beginning students’ un-

derstanding of what it means to learn to program. Thestudents were interviewed when they had just finished theirfirst programming course. The phenomenographic analysisof the data identified what beginning students called ’pro-gramming thinking’. This is described e.g. as understandingof concepts, but also as methods and study techniques nec-essary when learning to program. The study indicates thatsome students have problems to discern the study techniquesrequired when learning object-oriented programming, andthis is also by the students connected to the learning of con-cepts. Some students commented that it is harder to discernsuch techniques in programming than in subjects like math-ematics and chemistry.

By comparing our results with research on ’process-objectduality’, developed in mathematics education, we found thatit is of great importance that students reach an understand-ing 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 con-ception’, necessary for students to discern. Such a concep-tion scaffolds for the more abstract level of understanding,the ’object conception’. This level of abstraction is describedas “solving a problem by analyzing the essence and proper-ties of concepts” and might be needed when central con-cepts in object-oriented programming are used in e.g. anal-ysis and design. Both our results and Hazzan’s point in thesame direction, although from different starting points. Thisstrengthen the discussion that students may need ’canoni-cal procedures’ for the passage to ’object conception’. Ourstudy goes further in that it puts searchlight on the problemssome students have to discern such ’canonical procedures’when learning object-oriented programming. As educatorswe need to become aware of the problems indicated, andfacilitate for students to discern ’canonical procedures’ inobject-oriented programming. These can act as heaves toa more abstract understanding of central concepts withinobject-oriented programming.

141

Page 8: Programming Thinking ICER 05

6. REFERENCES[1] A. Berglund. Learning computer systems in a disributed

project course. The what, why, how and where. PhDthesis, Uppsala University, Department of InformationTechnology, 2005.

[2] S. A. Booth. Learning to Program. Aphenomenographic perspective. Number 89 in GoteborgStudies in Educational Science. Acta UniversitatisGothoburgensis, Goteborg, Sweden, 1992.

[3] C. Bruce, C. McMahon, L. Buckingham, J. Hynd,M. Roggenkamp, and I. Stoodly. Ways of experiencingthe act of learning to program: A phenomenographicstudy of introductory programming students atuniversity. Journal of Information TechnologyEducation, 3:143–160, 2004.

[4] O. Hazzan. How students attempt to reduceabstraction in the learning of computer science.Computer Science Education, 13(2):95–122, 2003.

[5] M. Kolling. The problem of teaching object-orientedprogramming, part i: Languages. JOURNAL OFOBJECT-ORIENTED PROGRAMMING, January1999.

[6] S. Kvale. InterViews: An introduction to qualitativeresearch 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: Thesearch for simplicity and stability in computer scienceeducation. In Proceedings of the thirty-fifth SIGCSEtechnical symposium on Computer science education,2004.

[9] A. Sfard. On the dual nature of mathematicalconceptions: Reflections on processes and objects asdifferent sides of the same coin. Educational Studies inMathematics, 22:1–36, 1991.

142