Tutkielman tekijä

Martti Hyvönen
OHJELMOINNIN VAIKEUS JA OPISKELIJOIDEN HEIKKO
MOTIVAATIO OHJELMOINNIN ALKEISKURSSIEN
HAASTEINA
Tietotekniikan kandidaatintutkielma
Jyväskylän yliopisto
Aineenopettajakoulutus
21.10.2012
Tekijä: Martti Hyvönen
Yhteystiedot: [email protected]
Työn nimi: Ohjelmoinnin vaikeus ja opiskelijoiden motivaAtio
Title in English: The Difficulty of Programming and Lack Of Student Motivation As a
Challenge in CS1 Courses
Työ: Kandidaaatintutkielma
Sivumäärä: 26
Linja: Aineenopettajakoulutus
Teettäjä: Jyväskylän yliopisto, tietotekniikan laitos
Avainsanat: Ohjelmoinin opetus, motivaatio
Keywords: Teaching programming, motivation
Tiivistelmä:
Abstract:
Sisältö
1 JOHDANTO......................................................................................................................1
2 OHJELMOINNIN VAIKEUS..........................................................................................4
2.1 MIKÄ OHJELMOINNISSA ON VAIKEINTA?................................................................................4
2.2 MITEN OHJELMOINTIA OPPII PARHAITEN?...............................................................................6
2.3 OHJELMOINTIKIELTEN SYNTAKSI..........................................................................................8
3 OHJELMOINTIKIELEN VALINTA JA KEHITYSYMPÄRISTÖT.........................9
3.1 OPETUKSEEN SUUNNITELLUT KIELET...................................................................................10
3.2 OHJELMOINTIYMPÄRISTÖT OHJELMOINNIN OPETUKSESSA.........................................................12
4 MOTIVAATIO................................................................................................................14
4.1 MOTIVAATIOTEORIAA......................................................................................................15
4.2 MOTIVOIVA OPETTAJA......................................................................................................17
4.3 KOHTI MOTIVOIVAA OHJELMOINNIN OPETUSTA.....................................................................19
4.4 PELIT OHJELMOINNIN OPETUKSESSA....................................................................................19
4.5 ROBOTIT OHJELMOINNIN OPETUKSESSA: ROBOCODE JA LEGO MINDSTORMS..............................21
5 YHTEENVETO JA POHDINTA..................................................................................25
LÄHTEET..........................................................................................................................27
1 Johdanto
Ohjelmoinnin alkeiden oppiminen tuntuu monien tutkimusten ja raporttien mukaan olevan
erittäin
vaikeaa.
Tästä
kertoo
myös
yliopistojen
alkeiskurssien
usein
korkeat
lopettamisprosentit. (Robins ym., 2003; Kinnunen ja Malmi, 2006) Kysymys kiinnostaa
minua, koska olen itse opiskellut ja opettanut ohjelmointia ja havainnut, että suurella osalla
opiskelijoita on aluksi huomattavia vaikeuksia hahmottaa ohjelmoinnin alkeita, vaikka he
tekisivätkin paljon töitä asian eteen. Mitkä ovat syitä tähän ja kuinka näitä opiskelijoita
voisi auttaa?
Kinnunen ja Malmi (2006) tutkivat syitä kurssin kesken jättämiseen Helsingin teknillisessä
yliopistossa. Tutkimus koostui kyselystä ja haastattelusta. Kysely lähetettiin kaikille
kurssin keskeyttäneille, joista noin puolet (N=105) vastasi kyselyyn. Lisäksi 18 kurssin
keskeyttänyttä opiskelijaa haastateltiin tarkemmin. Opiskelijoilla oli useimmiten enemmän
kuin yksi syy kurssin keskeyttämiseen, mutta kaksi syytä nousi tutkimuksessa erityisesti
esiin: opiskelijoilla ei ollut aikaa eikä motivaatiota. Kinnunen ja Malmi jakoivat
opiskelijoiden motivaatio-ongelmat vielä kolmeen alaryhmään:
1. Opiskelijan yleinen opiskelumotivaatio on alhainen.
2. Kurssista saatava hyöty on vähäinen kurssin työmäärään nähden.
3. Kurssi tai jotkut osat siitä ovat liian vaikeita, joten motivaatio laskee.
Kurssin vaikeus ei vaikuta ainoastaan motivaatioon, vaan Kinnunen ja Malmi (2006)
havaitsivat sen aiheuttavan opiskelijoille myös ajankäytön ongelmia. Kun kurssi on
vaikeampi kuin opiskelja olettaa, ei aika riitäkkään kurssin suorittamiseen. Se, että
opiskelijat kokevat ohjelmointikurssin vaikeaksi, vaikuttaa siis molempiin pääsyihin joita
tutkimuksessa havaittiin: sekä motivaatioon, että ajan riittämättömyyteen.
1
Tutkijat ja opettajat ovat löytäneet yliopisto-opiskelijoiden ongelmiin ohjelmointikursseilla
myös joukon muita syitä. Syyt voidaan jaotella ainakin neljään ryhmään: oppijaan liittyvät
syyt, opettajaan ja opetukseen liittyvät syyt, ohjelmointiin sinällään liittyvät syyt ja
opetuksen järjestämiseen liittyvät syyt. Alla listattuna jotain syitä muutamasta eri
tutkimuksesta. Lista ei pyri olemaan täydellinen.
Oppijaan liittyvät syyt
•
Motivaatio (Jenkins, 2002; Kinnunen ja Malmi, 2006)
•
Väärät oppimisstrategiat (Jenkins 2002; Gomes ja Mendes, 2007)
•
Liian vähän aikaa opiskeluun (Kinnunen ja Malmi, 2006)
•
Opiskelijat eivät työskentele tarpeeksi ahkerasti (Gomes ja Mendes, 2007)
Opettajaan ja opetukseen liittyvät syyt
•
Opettaja ei tue kaikkien oppilaiden luonnollisinta tapaa oppia (Gomes ja Mendes,
2007)
•
Opetetaan dynaamista asiaa staattisilla materiaaleilla, mutta osa oppilaista ei opi
ohjelmoinnin dynamiikkaa näin (Gomes ja Mendes, 2007)
•
Opetetaan
enemmän
tietyn
ohjelmointikielten
syntaksia,
kuin
yleistä
ongelmanratkaisua (Gomes ja Mendes, 2007)
Ohjelmointiin sinällään liittyvät syyt
•
Ohjelmointi itsessään on vaikeaa (Smith ja Webb, 1999; Rogalski ja Samurcay,
1990; Jenkins, 2002; Du Boylay 1989)
2
•
Ohjelmointikielissä on monesti vaikea syntaksi (Gomes ja Mendes, 2007)
•
Ohjelmointi vaatii abstrahointikykyä (Gomes ja Mondes. 2007)
Opetuksen järjestämiseen liittyvät syyt
•
Suuret opetusryhmät (Gomes ja Mendes, 2007)
•
Ohjelmointikurssi järjestetään opintojen alusssa, jolloin juuri kotoa pois
muuttaneilla opiskelijoilla on usein paljon muutakin opeteltavaa. (Jenkins, 2002;
Gomes ja Mendes, 2007)
Joskus myös puuttellisten matemaattisten taitojen ajatellaan aiheuttavan ongelmia
ohjelmointikursseilla (mm. Beaubouef ja Mason, 2005; Gomes ja Mendes, 2007). Tästä on
kuitenkin myös ristiriitaisia tutkimuksia ja mielipideitä (mm. Evans ja Simkin, 1989;
Jenkins, 2002), joten se on jätetty listauksesta pois.
Ohjelmointikursseilla ponnistelevien ongelmat saattavat siis olla hyvin monisyisiä, kuten
Kinnunen ja Malmi (2006) tutkimuksessaan toteavat. Tässä tutkielmassa keskitytään
lähinnä ohjelmoinnin vaikeaan luonteeseen sekä opiskelijoiden motivaatioon. Aluksi
tutkielmassa käsitellään ohjelmoinnin vaikeaa luonnetta, jonka jälkeen tarkastellaan
motivaatiota ohjelmoinnin oppimisen näkökulmasta. Lopuksi ohjelmoinnin vaikeutta ja
motivaation yhteyttä pohditaan tarkemmin yhteenvedossa.
3
2 Ohjelmoinnin vaikeus
Du Boulay (1989 viitattu Robins ym. 2003) kuvaa, kuinka ohjelmoinnissa täytyy hallita
viisi yhteen limittyvää aluetta, jotka jokainen voivat osaltaan olla vaikeita: (1) mitä
ohjelmat ovat ja mitä niillä voi tehdä, (2) käsitys siitä kuinka tietokone suorittaa ohjelmia,
(3) käytettävän ohjelmointikielen syntaksi ja semantiikka, (4) rakenteita, kaavioita ja
malleja sekä (5) pragmatiikka, eli kuinka suunnitellaan, kehitetään, testataan, debugataan ja
niin edelleen. Myös Jenkinsin (2002) mielestä ohjelmointi vaatii useita eri taitoja.
Boulaysta eroten Jenkins kuitenkin väittää, että taidot ovat hierarkkisessa järjestyksessä.
Ensin opitaan syntaksin perusteet, sitten semantiikka, rakenne ja lopulta tyyli.
Rogalskin ja Samurcayn (1990) ovat samaa mieltä Du Boulayn (1989 viitattu Robins ym.
2003) ja Jenkinsin (2002) kanssa siitä, että ohjelmoinnin oppiminen on monimutkainen
prosessi. Rogalskin ja Samurcayn (1990) mielestä ohjelmointi on vaikeaa, koska siinä pitää
hallita samanaikaisesti useita kognitiviisia aktiviteetteja ja mentaalisia malleja. Smith ja
Webb (1999) puolestaan mainitsevat, kuinka ohjelmoinnissa tarvittavat mallit ja taidot
voivat erota paljon opiskelijoiden aikaisemmin opituista taidoista. Ohjelmointi vaatii siis
uudenlaista ajattelua, jota aikaisemmalla opinpolulla ei ole vielä opittu. Tutkimusten
perusteella ohjelmointi ja sen oppiminen näyttäisikin olevan haastava prosessi.
2.1 Mikä ohjelmoinnissa on vaikeinta?
Kun mietitään, kuinka ohjelmoinnin oppimista voitaisiin helpottaa, on oleellista ymmärtää
mitkä asiat ohjelmoinnissa aiheuttavat opiskelijoille erityisesti vaikeuksia. Tällöin
opetuksessa voidaan keskittää enemmän voimavaroja näiden erityisten vaikeiden
ohjelmoinnin osa-alueiden opiskeluun.
Lahtisen, Ala-Mutkan ja Järvisen (2005) tekemään kansainväliseen ohjelmoinnin opetusta
koskevaan tutkimukseen osallistui yli 500 opiskelijaa ja yli 30 opettajaa. Vastaajista 73,4%
4
ohjelmoinnin peruskurssilla käytettiin C++-kieltä ja 17,3% Java-kieltä. Tutkimuksessa
käytetty kysely oli viisiportainen, jossa ”erittäin helppo oppia” sai arvon 1 ja ”erittäin
vaikea” arvon 5. Tutkimuksen mukaan vaikeinta ohjelmoinnin peruskurssilla oli
ymmärtää, kuinka ohjelma suorittaa tietyn tehtävän, jakaa ohjelman toiminta aliohjelmiin
ja paikantaa bugeja eli ohjelmointivirheitä ohjelmista (ks. taulukko 1).
What kind of issues you feel difficult in learning programming?
Students Avg
Teachers Avg
Using program development environment
2,43
2,61
Gaining access to computers/networks
2,11
1,97
Understanding programming structures
2,92
3,27
Learning the programming language syntax
3,27
2,70
Designing a program to solve a certain task
3,12
3,12
Dividing functionality into procedures
3,10
4,06
Finding bugs from my own program
3,28
3,91
Taulukko 1: ”What kind of issues you feel difficult in learning programming?” (Lahtinen
ym., 2005)
Vaikeimmat ohjelmoinnin rakenteet olivat puolestaan rekursio, osoittimet ja viitteet,
abstraktit tietotyypit ja virheiden hallinta (ks. taulukko 2). Helpoimmaksi koettiin sen
sijaan muuttujat, valintarakenteet ja silmukat.
5
Which programming concepts have been difficult for you to learn?
Students Avg
Teachers Avg
Variables (lifetime, scope)
2,10
2,41
Selection structures
1,98
2,38
Loop structures
2,09
2,79
Recursion
3,22
4,06
Arrays
2,79
3,24
Pointers, references
3,59
4,44
Parameters
2,60
3,47
Structures data types
2,90
3,45
Absctract data types
3,02
4,06
Input/output handling
2,96
3,75
Error handling
3,33
4,13
Using language libraries
3,04
3,88
Taulukko 2: ”Which programming concepts have been difficult for you to learn?”
(Lahtinen ym., 2005)
Ohjelmoinnin opetusta suunniteltaessa on hyvä tiedostaa ohjelmoinnin oppimisen
sudenkuopat ja kiinnittää näiden kohtien opettamiseen erityistä huomiota.
2.2 Miten ohjelmointia oppii parhaiten?
Hyvän opetuksen kannalta on hyvin tärkeää tiedostaa, kuinka opiskelijat oppivat
ohjelmointia parhaiten. On kuitenkin hyvä pitää mielessä, että oppiminen on yksilöllistä ja
eri ihmiset oppivat eri tavalla. Niinpä on järkevää käyttää monipuolisia opetustapoja.
Monipuoliset työtavat saattavat myös lisätä oppilaiden motivaatiota, kuten selviää luvusta
4.2.
Lahtisen ym. (2005) tutkimuksessa selkeästi parhaimmaksi materiaaliksi sekä oppilaat että
opettajat kokivat esimerkkiohjelmat. Oppilaiden mielestä seuraavaksi parhaat materiaalit
järjestyksessä
olivat
luentomoniste,
oppikirja,
6
interaktiiviset
visualisaatiot,
esimerkkitehtävät
ja
vastaukset
sekä
still-kuvat
ohjelmoinnin
rakenteista.
Esimerkkiohjelmia lukuunottamatta oppilaat kokivat muut oppimateriaalit keskimäärin
yhtä hyviksi. Opettajat löysivät muistakin oppimateriaaleista eroja selkeämmin.
Esimerkkiohjelmien jälkeen seuraavina tulivat interaktiiviset visualisaatiot, still-kuvat
ohjelmoinnin rakenteista, harjoitustehtävät ja vastaukset, luentomoniste ja viimeisenä
oppikirja.
What kind of materials have helped/would help you in learning programming?
Students
Teachers
Programming course book
3,35
3,30
Lecture notes/copies of transparencies
3,39
3,47
Exercise questions and answers
3,33
3,62
Example programs
4,19
4,24
Still pictures of programming structures
3,15
3,70
Interactive visualizations
3,33
3,70
Taulukko 3: Opiskelijoiden vastaukset kysymykseen "What kind of materials have
helped/would help you in learning programming?" (Lahtinen ym. , 2005)
Lahtisen ym. (2005) kyselytutkimuksessa kysyttiin myös, että milloin opiskelijat kokevat
oppivansa ohjelmointia. Opiskelijat kokivat oppivansa parhaiten silloin kun he
työskentelevät yksinään kurssitehtävien parissa. Opettajat sen sijaan kokivat opiskelijoiden
oppivan parhaiten käytännön harjoituksissa (demoissa) ja seuraavaksi parhaiten silloin kun
he työskentelevät yksin kurssitehtävien parissa. Sekä opettajat että opiskelijat kokivat, että
ohjelmointia oppii huonoiten istumalla luennoilla.
Luentojen soveltuvuutta ohjelmoinnin opetukseen kannattaakin pohtia. Yliopisto-opettajan
käsikirja sanoo, että luentojen tarkoitus ole ainakaan siirtää tietoa:
”Edelleenkin luento-opetus puoltaa paikkaansa yliopisto-opetuksessa, kun
tavoitteena on opettaa suuria opiskelijamääriä samanaikaisesti. Tällöin on
7
kuitenkin tärkeää oivaltaa, ettei tarkoituksena niinkään ole siirtää tietoa vaan
motivoida opiskelijoita kriittiseen ajatteluun, pohdintaan, kokonaisuuksien
hahmottamiseen ja laajempaan itseopiskeluun. Koska kirjoja ja materiaaleja on
nykyään
runsaasti
saatavilla,
ei
ole
mielekästä
käyttää
arvokasta
kontaktiopetusaikaa triviaalin tiedon siirtämiseen.” Yliopisto-opettajan käsikirja,
s. 237-238.
When do you feel that you learn issues about programming?
Students
Teachers
In lectures
3,01
3,21
In exercise sessions in small groups
3,44
3,44
In practical sessions
3,77
3,77
While studying alone
3,79
3,42
While working alone on programming coursework
3,98
4,00
Taulukko 4: Tulokset kysymykseen "When do you feel that you learn issues about
programming?" (Lahtinen ym. , 2005)
2.3 Ohjelmointikielten syntaksi
Gomes ja Mendes (2007) esittävät yhdeksi ohjelmoinnin oppimista vaikeuttavaksi tekijäksi
ohjelmointikielten monimutkaista syntaksia. Tätä ongelmaa voidaan helpottaa esimerkiksi
valitsemalla opetukseen soveltuvan ohjelmointikielen tai käyttämällä jotain integroitua
kehitysympäristöä (Integrated development environment = IDE). Seuraavassa luvussa
käsitellään tarkemmin ohjelmointikielen valintaa sekä ohjelmoinnin oppimista helpottavia
ympäristöjä.
8
3 Ohjelmointikielen valinta ja kehitysympäristöt
Useimmat tutkijat ovat yhtä mieltä siitä, että ohjelmointikurssien tarkoituksena on opettaa
opiskelijat ohjelmoimaan, eikä opettaa heille tiettyä ohjelmointikieltä. (Jenkins, 2002)
Mielipiteet eriävät kuitenkin sen suhteen, pitäisikö ohjelmoinnin alkeiskursseille valita
pedagogisesti hyvä kieli, joka olisi helppo oppia, vai kieli josta olisi mahdollisimman
paljon hyötyä työelämässä. Jenkins (2002) esittää myös kolmannen näkökulman, jonka
mukaan ohjelmointikielen valinnalla ei ole juurikaan merkitystä.
Ohjelmointikielen valinnalla voi olla vaikutusta sekä siihen kuinka vaikeana opiskelijat
ohjelmointia pitävät, että opiskelijoiden motivaatioon. Curzon ja Rix (1998) esittävät, että
kaupallisesti yleinen ohjelmointikieli voisi motivoida opiskelijoita enemmän, koska näiden
kielten osaajia työnantajat hakevat. Toisaalta he pohtivat myös, että jos kieli on
monimutkainen, voi tämä myös vähentää opiskelijoiden motivaatiota, koska kieli on tällöin
vaikeampi oppia.
Vujosevic-Janicic ja Tosic (2008, sivu 67) esittävät, että ohjelmoinnin peruskurssille
valittavalla ohjelmointikielellä pitäisi olla ainakin seuraavat ominaisuudet:
•
Helppokäyttöiset syöttö- ja tulostusoperaatiot
•
Luettava ja johdonmukainen syntaksi
•
Pieni ja ortogonaalinen määrä ominaisuuksia
•
Syntaktisesti selkeästi erilaiset ohjelmointirakenteet
Vujosevic-Janicic ja Tosic (2008, sivu 67) korostavat myös, että ohjelmointiympäristössä
pitäisi olla hyvä kääntäjä ja debuggeri, koska aloittelevat ohjelmoijat tekevät paljon
virheitä ja ohjelmoijat oppivat pääasiassa kokeilemalla yrityksen ja erehdyksen kautta.
9
Kääntäjän virheilmoitusten tulisikin olla selkeällä kielellä ja heijastaa tapahtunutta
syntaktista tai semanttista virhettä.
3.1 Opetukseen suunnitellut kielet
Erityisesti opetuskäyttöön suunniteltu ohjelmointikieli ei ole uusi idea. Logo-kielen kehitys
alkoi MIT:n tekoälylaboratoriosta ja sen ensimmäinen versio valmistui 1967. Pieni joukko
MIT:n tutkijoita aloitti tutkimuksen Logon käytöstä peruskoulun opetuksessa. Useissa
Logo-ohjelmointiympäristössä on käytössä kilpikonna ”Turtle”, jonka liikkumista pystyy
ohjelmoimaan. (Logo, 2012)
Vuonna
1971
Niklaus
Wirth
kehitti
Algol-kielestä
yksinkertaisemman
version
opetuskäyttöön ja antoi sille nimeksi Pascal, matemaatikko ja filosofi Blaise Pascalin
mukaan.
10
3.1.1
RoboMind
Kuvio 1: RoboMind-ympäristö on helppokäyttöinen työkalu
ohjelmoinnin alkeiden opiskeluun
RoboMind
on
ohjelmointiympäristö
ohjelmoinnin
alkeiden
oppimiseen,
jossa
ohjelmoidaan robottia. Robotti pystyy liikkumaan, katsomaan ympärilleen, liikuttamaan
esineitä ja maalaamaan. Tässä mielessä RoboMind muistuttaakin paljon Logon Turtlea,
mutta siinä missä Turtle liikkua esteettömässä ympäristössä, voi RoboMindissa luoda
robotille haastavampia esteitä sisältäviä karttoja. Ohjelmointikielenä ympäristössä on
opetukseen suunniteltu oma yksinkertainen ROBO-kieli, joka muistuttaa syntaksiltaan
hieman Java-kieltä.
Ympäristö antaa silmäyksen myös robotiikkaan ja tekoälyyn, vaikka onkin ensijaisesti
suunniteltu ohjelmoinnin alkeiden oppimiseen. Tähän se soveltuukin erittäin hyvin, sillä
RoboMindia on helppo käyttää ja ennen kaikkea se oli todella helppo asentaa.
Ohjelmointiympäristön asentaminen Windowsille tapahtui yhdestä exe-tiedostosta, jonka
11
jälkeen kaikki toimii automaattisesti. RoboMind on Windowsin lisäksi saatavilla myös Os
X ja Linux -käyttöjärjestelmille. (Robomind, 2012)
3.2 Ohjelmointiympäristöt ohjelmoinnin opetuksessa
Ohjelmointiympäristöissä on useita ominaisuuksia, jotka helpottavat ohjelmointia. Ne
saattavat
sisältää
mm.
automaattisen
syntaksivirheiden
korostuksen,
koodin
täydennystoiminnon ja jopa tiettyjen loogisten virheiden automaattisen korjaamisen. On
selvää, että esimerkiksi syntaksivirheiden automaattinen korostus auttaa huomaamaan
syntaksivirheet jo ennen ohjelman kääntämistä ja ajamista. Ohjelmointiympäristön voisikin
olettaa helpottavan ohjelmoinnin alkeiden oppimista, mutta aloittelevalla ohjelmoijalla
siitä voi olla myös haittaa. Chen ja Marx (2005) ovat todenneet, että osa
kehitysympäristöistä on niin täynnä ominaisuuksia, että niiden oppiminen vie paljon aikaa.
Ohjelmointiympäristön valinta ei siis ole helppoa. Pitäisikö valita ympäristö, joka on
suunniteltu opetuskäyttöön, kuten esimerkiksi BlueJ, vai ns. ”oikea” teollisuudessakin
käytössä oleva ympäristö, kuten Eclipse, jonka oppiminen voi viedä enemmän aikaa?
Chen ja Marx (2005) ovat kokeilujensa perusteella päätyneet ratkaisuun, jossa he aloittavat
Java-ohjelmointikurssin
ohjelmoinnin
perusteet.
ilman
ohjelmointiympäristöä,
Kahdeksan
viikon
jälkeen
jolloin
he
opiskelijat
vaihtavat
oppivat
käyttämään
teollisuudesakin käytettyä Eclipse-ohjelmontiympäristöä, jolloin opiskelijat ymmärtävät
paremmin ohjelmointiympäristön toimintaa ja voivat tehostaa omaa ohjelmointiaan.
3.2.1
BlueJ
BlueJ on Kentin yliopistossa kehitetty Java-ympäristö erityisesti olio-ohjelmoinnin
alkeiden opiskeluun. Erityisen BlueJ:stä tekee se, että luokat ja oliot on mahdollista nähdä
koko ajan sekä graafisena esityksenä, että koodina. Ympäristö on suunniteltu aloittelijoille
ja siksi hyvin pelkistetty ja helppokäyttöinen. (BlueJ, 2012)
12
Kuvio 2: BlueJ Java-ympäristö näyttää luokat sekä graafisena
esityksenä että koodina.
3.2.2
Codecademy
Codeacademy on verkkokurssi ohjelmoinnin alkeiden opiskeluun JavaScript-kielellä.
Sivustolla on tehtäviä, jotka tehdään sivustolla olevalla JavaScript-konsolilla. Sivusto antaa
välittömän palautteen automaattisesti, eikä näin ollen vaadi opettajaa, vaan opiskelua voi
tehdä täysin itsenäisesti omaan tahtiin. Motivointia on lisätty antamalla käyttäjälle pisteitä
tehdyistä tehtävistä ja lisäämällä sovellukseen sosiaalisen median elementtejä.
3.2.3
Muita ympäristöjä
Ohjelmointiympäristöjä on paljon muitakin. Teollisuudessa suosittuja ovat ainakin Eclipse,
NetBeans ja Microsoftin Visual Studio. Ohjelmointiympäristön valintaan vaikuttaa
tietenkin ohjelmointikurssille valittua ohjelmointikieli, tai ohjelmointiympäristön valinta
vaikuttaa ohjelmointikielen valintaa – riippuen kumpi valitaan ensin. Useat ympäristöt
tukevat useita eri kieliä, mutta jotkut on suunniteltu vain tietylle kielelle.
13
4 Motivaatio
Kinnunen ja Malmi (2006) huomasivat tutkimuksessaan, että motivaation puute on yksi
suurimpia syitä miksi opiskelijat jättävät ohjelmointikurssin kesken yliopistossa. He
huomasivat myös, että ohjelmointikurssin vaikeudella saattaa olla yhteyttä opiskeljoiden
motivaatiotaan.
Myös Jenkins (2002) sekä Gomes ja Mendes (2007) ovat havainneet motivaation
ongelmana yliopiston ohjelmointikursseilla. Oppilaat eivät välttämättä ole kiinnostuneita
itse ohjelmoinnin oppimisesta, vaan sen oppiminen voi olla ainoastaan väline esimerkiksi
hyväpalkkaisen
työn
saavuttamiseen.
Toiset
taas
voivat
opiskella
ohjelmointia
miellyttääkseen vanhempiansa. Tätä kutsutaan ulkoiseksi motivaatioksi (Malmberg ja
Little, 2002). Tämän vastakohtana voidaan nähdä se, että ohjelmointi itsessään on
kiinnostavaa ja motivoivaa, eli opiskelijalla on sisäinen motivaatio ohjelmoinnin
oppimiseen.
Jenkinsin (2002) motivaatiotutkimuksen mukaan yleisin syy ohjelmointikursseille
osallistumiseen on se, että ne ovat pakollinen osa opintoja. Tutkimukseen osallistui 226
Leedsin yliopiston ensimmäisen ohjelmointikurssin opiskelijaa ja 139 Kentin yliopiston
ensimmäisen vuoden ohjelmointikurssin opiskelijaa. Opiskelijoista 48% ilmoitti syyksi
ohjelmointikurssille osallistumiseen, koska se on pakollinen osa opintoja, toiseksi yleisin
tärkein syy kurssille tuloon oli oppiminen (20%) ja kolmanneksi sisältö (14%) . Muita syitä
olivat mm. ura ja työllistyminen. (Jenkins, 2001)
Middlesexin yliopistossa Lontoossa vuonna 1998 tehdyssä tutkimuksessa ainoastaan 23%
opiskelijoista ilmoitti 10 vaihtoehdosta ensimmäiseksi syykseen ohjelmointikurssille
tulemiseen olevan ”oppia ohjelmoimaan”. Opiskelijoista 20% halusi ymmärtää paremmin
ohjelmia ja ohjelmointia. Suosituin syy, jonka 33% opiskelijoista valitsi, oli kuitenkin
”koska ohjelmoinnin ymmärtäminen auttaa minua tulevalla urallani”. Noin kolmasosa
14
opiskelijoista ei siis selvästikään ollut sisäisesti motivoituneita ohjelmoinnin oppimiseen.
(Curzon ja Rix, 1998)
Kolmannessa tutkimuksessa ainoastaan 22% valitsi ohjelmointikurssin, koska olivat
kiinnostuneet itse ohjelmoinnista, ja loput vastanneista valitsivat kurssin jostain muusta
syystä. Muita syitä olivat halu saada tai vaihtaa työpaikkaa (40%) ja kurssin pakollisuus
(35%). (Mamone, 1992) Näiden kolmen tutkimuksen perusteella opiskelijoiden motivaatio
saattaa olla alhainen jo kurssille tultaessa, eikä ohjelmoinnin oppimisen vaikeus ainakaan
helpota tilannetta.
Yllä mainittujen tutkimusten perusteella osalla korkeakouluopiskelijoista on heikko
sisäinen motivaatio ohjelmointiin. Tässä luvussa esitellään nykypäivän motivaatioteorioita
ja keinoja siihen, kuinka opettaja voisi lisätä opiskelijoiden motivaatiota.
4.1 Motivaatioteoriaa
4.1.1
Sisäinen ja ulkoinen motivaatio
Motivaatio voidaan jakaa sisäiseen ja ulkoiseen motivaation. Sisäiseen motivaatioon
kuuluu uteliaisuutta, spontaaniutta ja kiinnostusta ilman ulkoisia palkkioita. Ulkoisesti
motivoituneelle ihmiselle sen sijaan tärkeitä ovat palkkiot, suosio, hyväksyntä ja
rangaistuksen välttäminen. (Malmberg ja Little, 2002, s. 129)
Linus Torvalds kertoo kirjassa ”Just for fun” Torvalds omaa suhtautumistaan
ohjelmointiin:
”En tiedä miten voisin selittää, miten jännittävää koodin kirjoittaminen on, mutta
yritän kuitenkin. Henkilölle, joka harrastaa ohjelmointia, se on jännempää kuin
mikään muu maailmassa. Se on shakkia monimutkaisempi peli. Siinä ikään kuin
15
itse laatii pelin säännöt, ja lopputulos on se minkä pystyt siitä luomaan.”
(Torvalds ja Diamond, 2001, s. 89)
On helppo tunnistaa, että Torvaldsilla on sisäinen motivaatio ohjelmointiin. Kuvauksen
perusteella häntä ei motivoi ulkoiset palkkiot kuten raha, menestys tai kunnoitus, vaan
ainoastaan kiinnostus itse ohjelmontia kohtaan.
Bergin ja Reilly (2005) havaitsivat tutkimuksessaan, että sisäisellä motivaatiolla on suuri
positiivinen vaikutus ohjelmointikurssilla menestymiseen. Ihanteellista olisikin jos
opiskelijoissa saisi sytytettyä sisäisen motivaation ohjelmointia kohtaan. On kuitenkin
myönnettävä, että ohjelmointi ei voi herättää sisäistä motivaatiota kaikissa opiskelijoissa,
joten myös ulkoiselle motivaatiolle on paikkansa.
4.1.2
Itsemääräytymisteoria
Ryanin ja Decin (viitattu Malmberg ja Little, 2002) itsemääräytymisteorian mukaan
ihmisellä on kolme universaalia psykologista perustarvetta: autonomia, kompentessi ja
yhteenkuuluvuus, jotka vaikuttavat ihmisen ulkoiseen ja sisäiseen motivaation.
Kompetenssilla tarkoitetaan yksilön tarvettta ”tuntea itsensä tehokaaksi sosiaalisessa
ympäristössään ja kokemusta mahdollisuuksista harjoittaa ja näyttää omia kykyjään”.
(Deci ja Ryan, 2002) Ohjelmoinnin opetuksen näkökulmasta kompetenssi nousee
erityisesti esiin. Ohjelmointi on vaikea taito, kuten luvussa 2 todettiin. Niinpä ohjelmoinnin
opiskelu ei välttämättä ainakaan aluksi anna opiskelijalle kompetenssin eli pätevyyden
tuntua,
joka
itsemääräytymisteorian
mukaan
laskee
opiskelijoiden
motivaatiota.
Itsemääräytymisteorian perusteella voikin olla, että ohjelmoinnin vaikeudella ja
motivaatiolla on yhteys, joka perustuu opiskelijoiden kokemaan kompetenssiin. Jos tämä
pitäisi paikkaansa, voitaisiin opiskelijoiden motivaatiota siis parantaa myös helpottamalla
ohjelmoinnin oppimista ja lisäämällä opiskelijoiden onnistumisen kokemuksia.
16
Parhaimillaan kompetenssin kokeminen saattaa aiheuttaa kierteen, joka lisää motivaatiota
ja oppimista entisestään. Jos opiskelija kokee ohjelmoinnissa onnistumisen tunteita
(kompetenssi) hänen motivaationsa kasvaa ja hän opiskelee yhä enemmän, jolloin hän
todennäköisesti osaa yhä paremmin ja tuntee yhä enemmän kompentessia. Sama saattaa
valitettavasti
toimia
myös
käänteisesti.
Jos
opiskelija
kokee
olevansa
huono
ohjelmoinnissa, hänen motivaationsa laskee, jolloin hän jaksaa harjoitella ja opiskella yhä
vähemmän ja tuskin oppiikaan kovin hyväksi ohjelmoijaksi.
Kompetenssin kokemisen, motivaation ja ohjelmoinnin oppimisen yhteyttä pitäisi tutkia
lisää. Uskallan kuitenkin väittää, että opettaja voi lisätä oppilaiden motivaatiota tuottamalla
heille onnistumisen kokemuksia. Yksi keino tähän voisi olla tehdä eri tasoisia
harjoitustehtäviä, jotta kaikki voisivat saada onnistumisen elämyksen. Jos kurssilla on
esimerkiksi käytännönharjoituksia, voisi ensimmäinen tehtävä olla aina sellainen, että
jokainen osaa varmasti sen ratkaista.
Kompetenssin
motivaatiota
kokemisen
voidaan
lisäksi
lisätä
itsemääräytymisteorian
autonomialla
ja
mukaan
opiskeljoiden
yhteenkuuluvuuden
tunteella.
Ohjelmointikursseilla autonomiaa voitaisiin lisätä esimerkiksi tarjoamalla opiskelijoille
valinnanvapautta harjoitustehtäviin. Yhteenkuuluvuutta sen sijaan voitaisiin lisätä
järjestämällä esimerkiksi tilaisuuksia, joissa harjoitustehtäviä voisi pohtia ja ratkoa
yhdessä.
4.2 Motivoiva opettaja
”Yksi tärkeimmistä asioista, jonka opettaja voi tehdä, on välittää oma
intohimonsa asiaan. Tällä tavoin opettaja voi tehdä kiehtovan myös asiasta, jota
opiskelija ei ehkä etukäteen pitänyt kiinnostavana”. (Himanen, 2010, s.130)
17
Himasen (2010) mukaan opittavan asian tekeminen merkitykselliseksi on opettajan
tärkeimpiä
tehtäviä.
Nimittäin
jos
opiskelija
ei
koe
asiaa
kiinnostavaksi
ja
merkitykselliseksi, hän saattaa opetella asian kokeeseen, mutta unohtaa sen välittömästi
kokeen jälkeen. Jos sen sijaan opiskelija kokisi opiskeltavan asian kiinnostavaksi ja
merkitykselliseksi niin hieman kärjistettynä oppiminen seuraisi tämän jälkeen kuin
itsestään. Kun nykypäivänä tietoa on helposti saatavilla esimerkiksi Internetin välityksellä,
voisi pelkkä innostaminen johtaa huikeisiin oppimistuloksiin. Himasen ajatusten taustalla
on sokraattinen idea luovan intohimon ”paarmaan pistosta”.
Lindblom-Ylänne ym. (2009, s. 88) ovat listanneet yliopisto-opettajan työkaluja
motivaation ja kiinnostuksen rakentamiseksi.
•
Julkista oppimistavoitteet ja pane opiskelijat miettimään henkilökohtaisia
tavoitteitaan kurssillasi
•
Vaihtele
aktiivisesti
työskentelytapoja:
pane
opiskelijat
itsenäisesti, ryhmässä, pareittain ja verkossa.
•
Rakenna turvallista oppimisympäristöä.
•
Kannusta kysymään ja kysy itsekin.
•
Tarjoa vaihtoehtoisia suoritustapoja ja valinnan mahdollisuuksia
•
Kytke opetus ajankohtaisiin ja opiskelijoiden omiin kysymyksiin.
•
Anna palautetta ja pane opiskelijat antamaan palautetta toisilleen.
•
Kerro, mistä olet itse kiinnostunut ja anna innostuksesi näkyä.
18
työskentelemään
4.3 Kohti motivoivaa ohjelmoinnin opetusta
Perinteisesti ohjelmoinnin opetus on alkanut konsoliohjelmien tekemisellä. Ensimmäinen
ohjelma tulostaa usein konsoliin tekstin ”Hello World”. Myöhemmin siirrytään tehtäviin,
joissa käyttäjältä kysytään syötteitä konsolissa, joiden perusteella ohjelman toiminta sitten
muuttuu. Feldgen ja Clua (2003) ovat huomanneet, että opiskelijoita motivoi
konsoliohjelmien sijaan pelien ja web-sovellusten tekeminen eli sovellukset, joihin he
törmäävät myös vapaa-ajallaan.
”We begin our course with game programs using only integer variables and
logical conditions modeling the rules. Class after class we introduce algorithms
and control structures, to work out the games. After midterm we introduce
complex algorithms and complex data structures to build card and board games,
and game competitions with ranking and awards. We use CGI Web programming
to let students play with fancy user interfaces.” (Feldgen ja Clua, 2003, s. T3C24)
Ennen uuden pelien tekemiseen perustava lähestymistavan aloittamista 25% opiskelijoista
jätti kurssin kesken ja 10% jätti koko oppilaitoksen. Opetuksen muuttamisen jälkeen
kurssin jätti kesken enää 10%, eikä yksikään opiskelija jättänyt koko oppilaitosta.
4.4 Pelit ohjelmoinnin opetuksessa
Yulia ja Adipranata (2010) tutkivat muutosta opiskelijoiden menestyksessä, kun
perinteinen olio-ohjelmoinnin opetus korvataan pelisuunnittelun kautta tapahtuvalla
yhteistoiminnallisella
opetuksella
(Cooperative
Learning).
Yhteistoiminnallisessa
oppimisessa oppilaat ratkaisevat tehtäviä ryhmässä ja jokainen on vastuussa oman
oppimisensa lisäksi myös muiden oppimisesta. Olio-ohjelmointi kurssi ei ollut Petran
19
kristillisessä yliopistossa ensimmäinen ohjelmoinnin kurssi vaan peruskurssin
jälkeen
pidettävä jatkokurssi.
Aluksi oppilaat tekivät yksinkertaisen pelin käyttämällä GameMaker-sovellusta joka ei
vaadi vielä ohjelmointiosaamista ja jossa opiskelijat oppivatkin enemmän pelisuunnittelua.
Tämän aikana opiskelijoille opetetaan kuitenkin olio-ohjelmoinnin ideaa. GameMakerillä
tehdyn pelin jälkeen oppilaat alkavat ohjelmoimaan käyttämällä C++-kieltä. Olioiden
suunnittelun apuna käytettiin minimUML-ohjelmistoa, joka näyttää oliot visuaalisesti
luokkakaavioina. Olioiden opetuksessa käytettiin esimerkkinä oikeaa World of Warcraft
-peliä. Muutosten tuloksena kuuden edellisen kurssin keskimääräinen läpipääsyprosentti
59.27 nousi 80.64 prosenttiin.
Myös Jyväskylän Yliopistossa on otettu peliohjelmointi ohjelmoinnin alkeiskurssin
lähtökohdaksi. Kurssilla käytettiin yliopistossa kehitettyä Jypeli-kirjastoa, joka perustuu
Microsoftin XNA-pelikehitysympäristöön, ja jossa ohjelmontikielenä on C#. Isomöttösen
ja Lappalaisen (2012) tutkimuksesta selviää, että opiskelijat kokivat peliteeman muun
muassa ajankohtaiseksi, mukavaksi, inspiroivaksi, motivoivaksi, tehokkaaksi ja helposti
lähestyttäväksi. Kun opiskeljoilta kysyttiin, kävisivätkö he kurssin mielummin perinteisesti
Java-kielellä, suurin osa vastaajista (35%) oli täysin eri mieltä asteikolla yhdestä viiteen.
(1= täysin eri mieltä ja 5 = täysin samaa mieltä.). Toiseksi eniten vastauksia sai vaihtoehto
3 (32%), joka voineen tulkita niin, että suuri osa vastaajista ei myöskään osannut oikein
sanoa, oliko peliteema heidän mielestään hyvä vai ei. Huomattavaa kuitenkin on, että
vaihtoehdot 4 ja 5, eli perinteinen Java-kurssi, olisi ollut ainoastaan 11% vastaajan
mieleen. Kysymys on kieltämättä hankala aloitteleville ohjelmoijille, koska heillä ei
välttämättä ole kokemusta Java-kielestä, joten voi olla vaikea sanoa, kummalla tapaa
kurssin kävisi mieluiten. Opiskelijoiden pysymistä mukana kursilla mitattiin viikottaisten
kurssiehtävien palauttaneiden opiskelijoiden määrällä. Opiskelijat pysyivätkin selvästi
paremmin mukana kurssilla verrattuna aiempiin vuosiin. (kts. Kuvio 3).
20
Kuvio 3: Opiskelijoiden kurssitehtävien palauttaminen vuosina 20082011, ennen ja jälkeen peliohjelmointikurssiin siirtymisen.
(Lappalainen ja Isomöttönen, 2012)
Isomöttönen ja Lappalainen (2012) kuitenkin havaitsivat, että pelikirjaston käyttäminen
saattaa myös vaikeuttaa joidenkin ohjelmoinnin perusteiden ymmärtämistä, sillä voimakas
kirjasto peittää alleen paljon ohjelman toimintaa.
4.5 Robotit ohjelmoinnin opetuksessa: Robocode ja Lego Mindstorms
Toinen idea motivoida opiskelijoita ohjelmointiin on käyttää opetuksessa jollain tapaa
robotteja. Tätä on kokeiltu ainakin kahdella eri tavalla. Ensimmäiseksi voidaan käyttää
opetuksessa ohjelmointiympäristöä, joka mahdollistaa virtuaalisen robotin ohjelmoinnin.
Tällaisessa ympäristössä robotin toimintaa simuloidaan graafisella simulaattorilla. Yksi
tällainen ympäristö on Robocode. Toinen tapa on ohjelmoida oikeaa fyysistä robottia.
21
Ohjelmointikursseilla tätä on kokeiltu muun muassa Lego Mindstorm -robotteja
ohjelmoimalla. Tässä luvussa esitellään lyhyesti kokemuksia molemmista näistä tavoista.
Robocoden idea on ohjelmoida tekoäly panssarivaunurobottiin, jonka tarkoitus on tuhota
toiset panssarivaunut. Robocode toimii sekä Java että .NET ympäristössä. Robocodeympäristö sisältää kirjaston robottien ohjelmoimiseen sekä sovelluksen, jossa robotteja voi
laittaa taistelemaan toisiaan vastaan simulaattorissa. Taistelua voi seurata 2-ulotteisena
visualisaationa (ks. Kuvio 4). Robocodea voidaan käyttää sekä ohjelmoinnin perusteiden
opetukseen, että tekoälyn opiskeluun. (Robocode, 2012)
Kuvio 4: Robocode-ympäristön "taisteluareena"
O'Kelly ja Gibson (2006) ovat käyttäneet Robocode-ohjelmointipeliä yliopiston
ensimmäisellä
ohjelmointikurssilla.
Oppilaat
ohjelmoivat
oman
taistelurobotin
maksimississaan kolmen hengen ryhmissä. Kurssin lopuksi ryhmät robotteineen kisaavat
toisiaan vastaan turnauksessa, jonka voittaja pääsee edustamaan yliopistoa kansalliseen
22
Robocode-kilpailuun. O'Kelly ja Gibson toteavat, että Robocodea yhdistelee hauskalla
tavalla ohjelmointia, pelejä ja tekoälyä. Valitettavasti O'Kellyn ja Gibsonin paperista ei
selviä edes opettajien tuntemuksia siitä, että kuinka hyvin oppilaat lopulta oppivat
ohjelminnin perusrakenteet. Kurssin voittajajoukkue sijoittui kuitenkin ensimmäisenä
kokeiluvuonna kansallisessa Robocode-kilpailussa kolmanneksi ja seuraavana vuonna
toiseksi. Tämä ei toki kerro yhtään mitään siitä, kuinka hyvin keskimäärin kurssilla
opittiin.
Robotteja opetuksessa käytetään myös Yhdysvaltojen sotilasakatemia West Pointissa, jossa
ohjelmoinnin perusteita on opetettu kadeteille Lego Mindstorm –robottien avulla.
Schumacher ym. (2001) kirjoittaa, että robottien käyttäminen helpottaa algoritmien
oppimista sillä robotin liikkumisen avulla algoritmin toiminta on helpompi ymmärtää.
Harjoitustyönä oppilaat toteuttivat robotin, jonka piti löytää tie ulos labyrintista. Oppilaita
oli motivoitu pukemalla tehtävä tosielämän muotoon:
”Embedded computer systems are pervasive in Army weapons systems. These
systems will be a part of your daily life in the Army. Understanding how they
operate (or fail to) is important in order to take advantage of the system's full
potential. The Army
is looking at robotic systems for a number of force
multiplying systems. Your commander has provided you with a prototype
robotic system that can maneuver across terrain with obstacles. Your task is to
evaluate the system, write an algorithm to negotiate two types of obstacles, and
successfully maneuver through a testtrack. If your algorithm works correctly, and
within a specified time limit, the manufacturer will build the fielded system with
an embedded version of your code. Good luck and make sure you test your
program to ensure it works as advertised. You would not want the Army to buy a
system that has a defect.” (Schumacher ym. 2001, s. F1B-3)
23
Oppilaat
eivät
Schumacherin
mukaan
ainoastaan
täyttäneet
vaatimuksia, vaan jopa ylittävät ne. (Schumacher ym. 2001)
24
robotille
asetettuja
5 Yhteenveto ja pohdinta
Opettajat ja tutkijat ovat havainneet korkeakoulujen ohjelmointikurssien haasteiksi
opiskeljoiden heikon motivaation, opiskelijoiden henkilökohtaiset syyt kuten ajanpuutteen
sekä ohjelmoinnin haastavan luonteen. Ohjelmointi on vaikea taito joka vaatii monien – jo
yksistään haastavien – eri osa-aluiden yhtäaikaista hallintaa. Ohjelmointi vaatii myös
uudenlaista ajattelua, jota ei välttämättä ole opittu koulussa aikaisemmin sekä uudenlaisia
mentaalisia ja kognitiivisia malleja.
Opettaja voi helpottaa ohjelmoinnin oppimista muuan muassa kiinnittämällä erityistä
huomoita opiskelijoille vaikeutta tuottaviin ohjelmoinnin osa-alueisiin ja rakenteisiin sekä
käyttämällä tehokkaita ja toimivia opetusmenetelmiä ja oppimateriaaleja. Opiskelijoille
vaikeita ohjelmoinnin osa-alueita on mm. sen ymmärtäminen, kuinka ohjelma suorittaa
tietyn
tehtävän,
ohjelman
toiminnan
jakaminen
osiin
ja
ohjelmointivirheiden
paikantaminen ohjelmasta. Vaikeimpia ohjelmointikielen rakenteita ovat muun muassa
rekursio ja osoittimet. Parhaaksi oppimateriaaliksi sekä oppilaat että opettajat kokevat
esimerkkiohjelmat. Tutkimusten mukaan ohjelmointia opitaan parhaiten käytännön
harjoittelulla joko yksin tai ohjatusti, ja vähiten luennoilla istumalla.
Ohjelmoinnin haastavuus saattaa olla myös yksi syy opiskeljoiden heikkoon motivaatioon.
Itsemääräytymisteorian
mukaan
yksi
ihmisen
psykologisista
perustarpeista
on
kompentessin eli pätevyyden kokeminen. Kun opiskelijaa kokee ohjelmoinnin vaikeaksi
eikä suoriudu harjoitustehtävistään, hän ei koe kompetenssin tunnetta, jolloin hänen
motivaationsa laskee. Toisaalta itsemäärytymisteorian mukaan onnistumisen kokemukset
lisäävät motivaatiota. Opettaja voisikin lisätä opiskelijoiden motivaatiota esimerkiksi
suunnittelemalla käytännönharjoitukset niin, että ne sisältävät eri tasoisia tehtäviä, jotta
mahdollisimman moni voisi saada tehtäviä tehdessään onnistumisen elämyksiä.
25
Toinen motivaatioon liittyvä haaste on, että osaa opiskelijoita on sisäisen motivaation
sijaan lähinnä ulkoisesti motivoituneita ohjelmoinnin oppimiseen. Opiskeljoita saattaa itse
ohjelmoinnin oppimisen sijaan motivoida työ, ura tai kurssin pakollisuus. Tutkimusten
mukaan kuitenkin yksilöt, joilla on sisäinen motivaatio ohjelmointia kohtaan, pärjäävät
ohjelmoitikursseilla parhaiten. Tutkimuksissa on havaittu myös opiskelijoiden motivaation
ja oppimistulosten paranevan, jos ohjelmointia opetetaan tekemällä sovelluksia, jotka ovat
opiskelijoille tuttuja myös vapaa-ajalta. Tällaisia voivat olla esimerkiksi pelien tai
nettisivujen tekeminen. Syynä saattaa olla, että näiden sovellusten tekeminen lisää
opiskeljoiden sisäistä motivaatiota. Myös kursseista joilla ohjelmoinnin opetukseen
käytetään tavalla tai toisella robotteja, on ollut positiivisia kokemuksia.
26
Lähteet
Beaubouef, T. ja Mason, J. 2005. Why the High Attrition Rate for Computer Science
Students: Some Thoughts and Observations. ACM SIGCSE Bulletin Volume 37 Issue 2,
June 2005
Bergin, S. ja Reilly, R. 2005. The influence of motivation and comfort-level on learning to
program. 17th Workshop of the Psychology of Programming Interest Group, Sussex
University, June 2005
Byrne, P. ja Lyons, G. 2001. The Effect of Student Attributes on Success in Programming.
ITiCSE 2001 61/01 . Canterbury, UK
BlueJ. 2012. BlueJ – About [online] Saatavilla <http://www.bluej.org/about/about.html>
[Viitattu 7.9.2012]
Deci, E.L. Ja Ryan R.M. 2002. Handbook of Self-Determination Research.
Evans, G. E. ja Simkin M. G. 1989. What Best Predicts Computer Proficiency?
Communications of the ACM. November 1989 Volume 32 Number 11
Gomes, A. Mendes, A. J. 2010. Studies and Proposals about Initial Programming
Learning. 40th ASEE/IEEE Frontiers in Education Conference. Washinton DC.
Gomes, A. ja Mendes, A. J. 2007. Learning to program - difficulties and solutions.
International Conference on Engineering Education – ICEE 2007.
Himanen, P. 2010. Kukoistuksen käsikirjotus. WSOY.
Isomöttönen, V. ja Lappalainen V. 2012. CS1 with games and an emphasis on TDD and
unit testing: Piling a trend upon a trend.
27
Jenkins, T. 2001. The Motivation of Students of Programming. ITJCSE 2001
6/01
Canterbury, United Kingdom.
Jenkins, T. 2002. On The Difficulty of Learning To Program. 3rd Annual LTSN-ICS
Conference, Loughborough University.
Kinnunen,
P. ja Malmi,
L. 2006.
Why
Students
Drop Out CS1 Course?
ICER’06,September 9–10, 2006, Canterbury, United Kingdom.
Lahtinen, E. Ala-Mutka, K. ja Järvinen, H-M. 2005. A Study of the Difficulties of Novice
Programmers. ITiCSE’05, June 27–29, 2005
Lindblom-Ylänne, S. Mikkonen, J. Heikkilä, A. Parpala, A. ja Pyhältö, K. 2009. Luku 4.
Oppiminen yliopistossa teoksessa Lindblom-Ylänne, S. ja Nevgi, A. (toim.) Yliopistoopettajan käsikirja. WSOYpro Oy. Helsinki.
Logo. 2012. [online] Saatavilla <http://el.media.mit.edu/logo-foundation/logo/index.html>
[Viitattu 7.10.2012]
Malmberg, L-E. ja Little T. D. 2002. Nuorten koulumotivaatio. Teoksessa Salmela-Aro, K.
ja Nurmi J-E (toim.). 2002. Mikä meitä liikuttaa – Modernin motivaatiopsykologian
perusteet. PS-Kustannus. Keuruu.
Mamone, S. 1992. Emiprical Study of Motivation in a Entry Level Programming Course.
ACM SIGPLAN Notices, Volume 27, No. 3, March 1992 .
O'Kelly, J. ja Gibson, J. 2006. P. RoboCode & Problem-Based Learning: A nonprescriptive approach to teaching programming. ITiCSE’06, Univ. of Bologna, Italy, 26 28 June 2006.
28
Robins, A. Rountree, J. ja Rountree, N. Learning and Teaching Programming: A Review
and Discussion, Computer Science Education 2003 Vol. 13, No. 2, s. 137–172
Robocode.
2012.
Robocde
–
Read
Me.
[online]
Saatavilla
<http://robocode.sourceforge.net/docs/ReadMe.html > [Viitattu 7.10.2012]
Robomind.
2012.
Robomind
–
Introcduction.
[online]
Saatavilla
<http://www.robomind.net/en/introduction.htm> [Viitattu 7.9.2012]
Smith, P. A ja Webb, G.I. 1999. Evaluation of Low-Level Program Visualisation for
Teaching Novice C Programmers. Computers in Education (ICCE’99) Vol. 2 pp 385-392
IOS Press.
Schumacher, J. 2001. Teaching Introductory Programming, Problem Solving And
Information Technology With Robots at West Point. 31st
ASEE/IEEE Frontiers
in
Education Conference.
Torvalds, L. ja Diamond, D. 2001. Just for fun. Otavan Kirjapaino. Keuruu.
Yulia ja Adipranata, R. 2010. Teaching Object Oriented Programming Course Using
Cooperative Learning Method Based On Game Design and Visual Object Oriented
Environment. 2010 2nd international Conference on Education Technology and Computer
(ICETC).
Vujosevic-Janicic, M. Ja Tosic, D. 2008. The Role of Programming Paradigms in the
First Programming Courses. The Teaching Mathematics 2008, Vol. XI, 2, pp. 63–83
29