Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Ohjelmointikoulutuksentehostaminen kognitiivisilla
menetelmilläProf. Jorma Sajaniemi
Joensuun yliopisto, Tietojenkä[email protected]
www.cs.joensuu.fi/~saja
11.4.2007
Sisältö• Taustaa
– kognitiivinen psykologia ja ohjelmointi• Eksperttiys ja skeemat
– muuttujien roolit• Ohjelmoinnin oppimisesta
– oliometaforat• Yhteenveto
Taustaa
Ohjelmoinnin osapuolet ja niidenrajoitukset
Ohjelmoija
Työväline Tuote
Kognitio
Nykytekniikka Edelliset
Kognition rajoituksia
• Muisti: työmuistin koko, muistijäljenvahvuus (tunnistus, palautus, häirintä)
• Prosessointi: tarkkaavaisuuden määrä• Tiedon oppiminen: mielekkyysvaatimus• Taidon oppiminen: automatisoitumisen
hitaus, siirto-efektit• Eksperttiys: skeemat ja strategiat
SelityskehyksiäAistit
Muistin koko
Muistin sisältö
Tunteet
Persoonallisuus
Ryhmäsuhteet(Saariluoma, 2004)
Ohjelmoinnin psykologian tavoitteita• Ohjelmistotyön tehostaminen
– nykyisten kielten tehokkaampi hyväksikäyttö– kielten parantaminen ja uusien laatiminen– apuvälineiden hyväksikäyttö ja kehittäminen– menetelmien hyväksikäyttö ja kehittäminen
• Ohjelmoinnin oppimisen tehostaminen
• Ihmisen kognition ymmärtäminen
Eksperttiys ja skeemat
Skeemat
• Skeema: ihmisen muistissa olevatietokokonaisuus, joka koodaa jonkinstereotypian/ilmentymän (käsite,toimintasarja, OO-suunnittelumalli, ...)
• Muodostuvat attribuuteista ja niidenarvoista; muodostavat hierarkian (vrt.luokkakäsite ja luokkahierarkia)
Skeemat ohjelmoinnissa• Skeeman puuttuminen johtaa
epäoptimaaliseen toimintaan ja virheisiin• Esim: Aloittelijalla ei ole kokonaissumman
laskennalle skeemaa:
(Rist, 1989)
+rain
rainfall=
sum
rainsum = rainsum + rain;
rainsum = 0;
int rainsum;
int rainsum;
...
rainsum = 0;
...
rainsum = rainsum + rain;
Muuttujien roolit• Laskuri yleistyy askeltajaksi• Kokonaissumma yleistyy kokoojaksi• Muita: kiintoarvo, seuraaja, sopivimman
säilyttäjä, ...• Noviisitason ohjelmissa riittää 11 roolia• Soveltuu hyvin myös olio-ohjelmointiin• Tehostaa ohjelmoinnin opettamista• Automatisoituna auttaa ohjelmien ylläpidossa
(Sajaniemi, 2002; Sajaniemi & al., 2006)
Opetuskokeilun tuloksia
(Byckling & Sajaniemi, 2006)
Tarvittavat roolit
currKulkijapointListSäiliösortArrayJärjestelijätmpTilapäissäilöerrorsFoundYksisuuntainen lippuprevSeuraajasumKokoojalargestSopivimman säilyttäjädataTuoreimman säilyttäjäiAskeltajamaxLengthKiintoarvo
Rooli skeemana• Rooli on muuttujan stereotyyppinen käyttötapa;
esim. kokooja:– kerää kokonaistuloksen jostain sarjasta– koodi: esittely, alustus, päivitys, käyttö– esimerkkejä: kokonaissumma, pankkitilin saldo,
lukuarvon kokoaminen yksittäisistä numeroista• Rooli kokoaa syntaktisen tiedon muruista
(millainen on sijoituslause) mielekkäänkokonaisuuden ohjelmointitietoa
• Ekspertin hiljaista tietämystä, joka voidaan opettaa• Käytön onnistumiseen vaikuttavat myös työmuistin
kokorajoitukset
Roolit UML-kaavioissa
(Byckling & al., 2006)
Ohjelmoinnin oppimisesta
Oppimisen edellytyksiä
• Uuden tiedon kohtuullinen määrä• Uuden tiedon mielekkyys• Uuden tiedon liittyminen olemassaolevaan• Uuden tiedon mielekäs syventäminen• Taidon automatisoituminen (deklaratiivinen
tietoà proseduraalinen tieto)• Aiemmin opitun aiheuttama häirinnän
välttäminen
Ohjelmoinnin alkeiden oppiminen
• Syntaksi on melko helppoa oppia• Kaikki muu on vaikeaa
– muuttujan käsite– kontrollirakenteiden yhdistely– parametrien välitys– ...
(Robins & al., 2003)
read(A);
read(A);
read(B);
print(A,A,B);
Oliot ensin ja JavaMinimaalinen Java-ohjelma:
(Radenski, 2006)
määrä? mielekkyys? liittyminen olemassaolevaan?
Mitä tehdä ?
• Aloita yksinkertaisemmilla asioilla
• Sido oliokäsitteet tuttuihin asioihin– UML, kutsupinot yms. eivät ole tuttuja– Metaforat ovat tuttuja
• yhteneväisyydet ja eroavuudet edistävät aktiivistaoppimista
(Carroll & Mack, 1999)
Oliometaforat
• Olio: valvomo• Attribuutti: monitori• Metodin kutsu: työpaja• Luokka: piirustuslehtiön sivu• ...
• Demo(Sajaniemi & al., 2006)
Yhteenveto
Kognitio ja ohjelmointi
• Ihmisen ajattelun rajoitukset vaikeuttavatsuunnittelua, ohjelmointia, testaamista, oppimista, ...
• Ajattelun rajoitusten vaikutuksia voidaan vähentääsopivilla menetelmillä ja apuvälineillä
• Menetelmien ja apuvälineiden suunnittelu vaatiiajattelun rajoitusten ja mentaalisten representaatioidensisällön tutkimista
• Joitakin apuvälineitä on jo tehty tällä tavalla
Lähteitä• Byckling P., Gerdt P., Kuzniarz L., Sajaniemi J. (2006) Increasing Comprehensibility of Object
Models: Making the Roles of Attributes Explicit in UML Diagrams. Nordic Journal of Computing13(3), 149-161.
• Byckling P., Sajaniemi J. (2006) Roles of Variables and Programming Skills Improvement. Proc. ofthe 37th SIGCSE Technical Symp. on Computer Science Education (SIGCSE 2006), ACM, 413-417.
• Carroll J. R., Mack M. L. (1999) Metaphor, Computing Systems, and Active Learning. Int. J.Human-Computer Studies 51, 385-403.
• Radenski A. (2006) ”Python First”: A Lab-based Digital Introduction to Computer Science. Proc.11th Ann. SIGCSE Conf. on Innovation and Technology in Computer Science Education, Assoc. forComputing Machinery, 197-201.
• Rist R.S. (1989) Schema Creation in Programming. Cognitive Science 13, 389-414.• Robins A., Rountree J., Rountree N. (2003) Learning and Teaching Programming: A Review and
Discussion. Computer Science Education 13, 137-172.• Saariluoma P. (2004): Käyttäjäpsykologia. WSOY.• Sajaniemi J. (2002) An Empirical Analysis of Roles of Variables in Novice-Level Procedural
Programs. Proc. of IEEE 2002 Symposia on Human Centric Computing Languages andEnvironments (HCC'02). IEEE, 37-39.
• Sajaniemi J., Ben-Ari M., Byckling P., Gerdt P., Kulikova Y. (2006) Roles of Variables in ThreeProgramming Paradigms. Computer Science Education 16(4), 261-279.
• Sajaniemi J., Byckling P., Gerdt P. (2006) Metaphpor-Based Animation of OO Programs. Proc.SOFTVIS 06 ACM Symp. on Software Visualization, ACM, 173-174.
• Ohjelmoinnin psykologia: www.cs.joensuu.fi/pages/saja/ohj_emp.html• Muuttujien roolit: www.cs.joensuu.fi/~saja/var_roles