Muuttujien roolitutkimus
|
|
- Sari Aaltonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Tietojenkäsittelytiede 22 Joulukuu 2004 sivut Toimittaja: Antti Valmari c kirjoittaja(t) Muuttujien roolitutkimus Pauli Byckling & Petri Gerdt & Seppo Nevalainen Joensuun yliopisto Tietojenkäsittelytieteen laitos {Pauli.Byckling, Petri.Gerdt, Seppo.Nevalainen}@cs.joensuu.fi Tiivistelmä Muuttujien roolit on uusi käsite, jota voidaan hyödyntää mm. ohjelmoinnin alkeisopetuksessa. Tässä tekstissä esittelemme muuttujien roolikäsitteen perusajatuksen, roolipohjaisen ohjelmakoodianimaattorin PlanAnin sekä kolme muuttujien roolitutkimuksen osa-aluetta. 1 Johdanto Muuttujien tyypillinen käyttö ohjelmoinnissa on ohjelmoijasta tai ohjelmointikielestä riippumatta varsin yleislaatuista. Muuttujien käyttötavat eivät ole satunnaisia tai tilapäisratkaisuja, vaan tunnusomaisia kaavoja ja menetelmiä, planeja, jotka esiintyvät ohjelmissa yhä uudelleen. Käytännössä vain muutama kaava riittää kuvaamaan lähes kaikkien ohjelmissa esiintyvien muuttujien käyttöä. Ohjelmissa toistuvat menetelmät ovat tavallisesti asiantuntijoiden omaamaa nk. hiljaista tietoa, jota kokeneet ohjelmoijat käyttävät ohjelmoidessaan [14]. Tavallisesti tämä tietämys kehittyy ohjelmoijalle ajan ja kokemuksen myötä varsinaisen opiskeluvaiheen jälkeen tai sen myöhäisissä vaiheissa. Ohjelmoinnin opetus painottuu pitkälti ohjelmontikielten rakenteisiin ja opiskelijat joutuvat opiskeluvaiheessa omaksumaan korkeamman tason rakenteita lähinnä esimerkkiohjelmista. Sajaniemen esittelemä muuttujien roolit on uusi käsite, jolla asiantuntijoiden muuttujien käyttöön liittyvää hiljaista tietämystä voidaan esittää muodossa, jota voidaan hyödyntää mm. ohjelmoinnin alkeisopetuksessa [16]. Muuttujien roolitutkimuksen lähtöajatuksena on ollut kehittää pieni, mutta silti kattava joukko rooleja, jolla voidaan konkreettisesti kuvata kaikki alkeistasolla tavattavat muuttujat ja jota olisi mahdollista käyttää ohjelmoinnin opetuksessa [14]. Alunperin roolit löydettiin proseduraalisia ohjelmia tarkastellen, mutta havaintojemme mukaan samaa roolikäsitettä voidaan lähes sellaisenaan soveltaa myös funktionaalisiin ohjelmiin sekä olioohjelmiin. Samat roolit esiintyvät eri paradigmoissa, mutta esimerkiksi funktionaalisessa ohjelmoinnissa ne ovat parametrien (eivätkä muuttujien) ominaisuuksia. Roolit ovatkin ohjelmointikielestä ja jopa ohjelmointiparadigmasta riippumaton käsite. Muuttujien roolitutkimus keskittyi alkuvaiheissaan ohjelmoinnin alkeisopetuksen ympärille, mutta on kehittynyt kattamaan myös osa-alueita, jotka ajavat muita tarkoitusperiä. Roolikäsitettä voi- OHJE KIRJAPAINOLLE: B5-arkin vasen- ja yläreuna kohdistetaan A4-arkin vasempaan ja yläreunaan. Näin pitäisi marginaaliksi tulla taitteen puolella noin 33 mm ja muualla noin 22 mm.
2 22 Muuttujien roolitutkimus daan soveltaa mm. alkeistason ohjelmissa esiintyvien virheiden selittämiseen, ohjelmien visualisointiin ja suurten ohjelmien ymmärtämiseen. Seuraavassa esittelemme kolme toisistaan riippumatonta roolitutkimuksen osa-aluetta, jotka ovat: roolit ja strateginen ohjelmointitietämys, attentio ja ohjelmatietämys sekä automaattinen muuttujien roolien tunnistaminen. Esittelemämme osa-alueet ovat samalla kirjoittajien väitöstyöaiheita. Ennen roolitutkimuksen käsittelyä esittelemme lyhyesti seuraavissa kohdissa roolikäsitteen perusajatuksen sekä tutkimusmenetelmiä, joita sovellamme roolitutkimuksessa. 2 Muuttujien roolit Tässä luvussa esittelemme lyhyesti roolikäsitteen perusajatuksen sekä yksittäiset roolit ja niiden väliset suhteet. Lisäksi käsittelemme ohjelmointiin liittyvän tietämyksen lajeja ja esittelemme roolipohjaisen ohjelma-animaattorin, PlanAnin. 2.1 Roolikäsite Ohjelman tietovirtaa käsitellään muuttujien avulla. Yksittäisen muuttujan tarkoitus on toimia ohjelmassa dynaamisena tietoalkiona, jolle on luonteenomaista saada uusia arvoja muiden muuttujien ja ulkoisten tapahtumien seurauksena. Muuttujan rooli kuvaa muuttujan luonnetta ja käyttäytymistä sen elinkaaren aikana. Jokainen rooli kuvaa yhtä stereotyyppistä muuttujan käyttöä. Seuraavat esimerkit havainnollistavat muuttujien roolien perusajatusta: Taulukon tulostus: for i := 1 to 12 do write(taulukko[i]); Muuttujan i rooli on askeltaja. Kokonaismäärän kerääminen: sadesumma:=0... sadesumma:=sadesumma+sade Muuttujan sadesumma rooli on kokooja. Taulukon tulostusesimerkissä muuttuja i saa arvoikseen ennalta tiedetyt arvot 1:stä 12:een, kun muuttujan arvoa kasvatetaan for-silmukassa yhdellä. Muuttuja käy läpi, eli askeltaa, ennalta tiedossa olevan jonon. Muuttujalla on siis ohjelmassa rooli, jota kutsumme askeltajaksi. Toisen esimerkin muuttuja, sadesumma, saa uuden arvon kun sen omaan entiseen arvoon lisätään toisen muuttujan arvo. Muuttuja siis kerää kokonaismäärää useiden yksittäisten arvojen summana. Tällaista muuttujaa kutsumme rooliltaan kokoojaksi. Seuraavat kymmenen roolia riittävät kattamaan 99 prosenttia kaikista aloittelijatason imperatiivisissa ohjelmissa esiintyvistä muuttujista [16]: Kiintoarvo Muuttujan rooli on kiintoarvo, jos sen arvoa ei muuteta sen jälkeen kun siihen on ensimmäisen kerran luettu tai sijoitettu arvo. Askeltaja Askeltaja käy läpi arvoja jollain ennustettavalla tavalla. Tuoreimman säilyttäjä Muuttuja on tuoreimman säilyttäjä, jos sen arvo on viimeisin jostakin tietystä joukosta läpikäyty arvo tai yksinkertaisesti vain arvo, joka on syötetty viimeksi. Sopivimman säilyttäjä Sopivimman säilyttäjän arvo on paras tai jollain muulla tavoin halutuin siihen asti läpikäydyistä arvoista, esimerkiksi suurin taulukosta löydetty luku.
3 Byckling, Gerdt, Nevalainen 23 Kokooja Kokoojan arvo kerääntyy kaikista siihen mennessä läpikäydyistä arvoista. Kokooja on esimerkiksi läpikäydyn kokonaislukutaulukon alkioiden sisältämistä arvoista yhteenlaskettu summa. Muuntaja Muuntaja saa jokaisen uuden arvonsa aina samasta muilla muuttujilla suoritetusta laskutoimituksesta. Muuntaja siis tallettaa itseensä esimerkiksi laskutoimituksen välituloksen, jolloin sitä voidaan käyttää toisessa laskutoimituksessa tai tulostuksessa. Yksisuuntainen lippu Yksisuuntainen lippu on Boolen muuttuja, joka ei saa enää alkuperäistä arvoaan sen jälkeen, kun se on kerran muuttunut. Yksisuuntaisella lipulla ohjataan esimerkiksi kontrollivuota tai tulostusta (kuten: if (ok) then begin...). Seuraaja Seuraaja saa aina arvokseen jonkin tietyn toisen muuttujan vanhan arvon esimerkiksi taulukon tai listan läpikäynnissä (kuten: edellinen=nykyinen; nykyinen=nykyinen->seuraava; Muuttuja edellinen on rooliltaan seuraaja). Tilapäissäilö Muuttuja on tilapäissäilö, jos sen arvoa tarvitaan aina vain hyvin lyhyen ajan. Tilapäissäilöä käytetään esimerkiksi lajittelujen vaihto-operaatioissa tallettamaan toinen vaihdettavista arvoista tilapäisesti. Järjestelijä Järjestelijä on taulukko, jota käytetään siinä olevien tietojen uudelleen järjestämiseen sen jälkeen, kun taulukko on ensin alustettu joillakin arvoilla. Järjestelijä esiintyy tyypillisesti lajittelun yhteydessä. Ylläolevat määritelmät ovat epätarkkoja ja kuvaavat ainoastaan kunkin roolin luonteen. Tarkat määritelmät samoin kuin ohjelmakoodiesimerkit kaikista rooleista löytyvät muuttujien roolien kotisivulta [15]. Kuvassa 1 on havainnollistettu muuttujien roolien keskinäisiä suhteita [6]. Literaali ja vakio ovat ohjelmointikielen rakenteita, muut kuvan solmut ovat rooleja. Roolien opettamisessa voidaan soveltaa kuvan järjestyksen mukaista konstruktiivista lähestymistapaa, jossa uutta tietoa rakennetaan aikaisemman, jo opitun tiedon päälle. Kuvan mukaan esimerkiksi tuoreimman säilyttäjä voidaan kuvata kiintoarvona, jonka arvon asetusta toistetaan silmukassa. Edelleen, mikäli silmukassa asetetut arvot muodostavat ennalta ennustettavan jonon, kuten esimerkiksi lukumäärän laskeminen tekee, on kyseessä askeltaja. 2.2 Ohjelmointitietämys Ohjelmointiin liittyvä tietämys kattaa seuraavat kolme lajia: Ohjelmointikieleen liittyvä tietämys Jonkin tietyn ohjelmointikielen syntaksi ja semantiikka (esimerkiksi kuinka sijoituslause kirjoitetaan ja mitä vaikutuksia sillä on). Ohjelmatietämys Tietämys yksittäisestä ohjelmasta. Ohjelmointitietämys Kuinka rakentaa ohjelmia käyttäen kyseiseen ohjelmointiparadigmaan liittyviä abstrakteja käsitteitä (kuten proseduraalisessa ohjelmoinnissa muuttujat, toisto jne.). Tärkein tietämyksen laji.
4 24 Muuttujien roolitutkimus Askeltaja Kokooja nimeäminen ajon aikainen asettaminen lukumäärän laskeminen kokoaminen valitseminen Literaali Vakio Kiintoarvo toisto Tuoreimman säilyttäjä kerääminen laskenta tarkastaminen Sopivimman Yksisuuntainen säilyttäjä lippu Järjestelijä viivyttäminen Seuraaja Muuntaja vaatii Tilapäissäilö Kuva 1: Roolien välisiä suhteita [6]. Ohjelmoinnin alkeisopiskeluvaiheessa opiskelija joutuu kartuttamaan usean tason tietämystä. Ohjelmoinnin alkeisopetus keskittyy tavallisimmin ohjelmointikielen syntaksin ja semantiikan käsittelyyn, joka on matalimman tason tietoa. Korkeamman tason tietämys on usein opiskelijan oman mielenkiinnon ja itsenäisen opiskelun varassa, koska semanttista tietoa korkeampaa tietämystä ei yleensä eksplisiittisesti opeteta. Muuttujien roolit edustavat tätä korkeamman tason ohjelmointitietämystä. Roolikäsite on lisäksi yksinkertainen, tiivis ja intuitiivinen, joten se soveltuu hyvin opetusmetodiksi ohjelmoinnin alkeisopetukseen. 2.3 PlanAni Muuttujien rooleja voidaan visualisoida Joensuun yliopistossa kehitetyn PlanAnianimaattorin [17] avulla. PlanAni on roolipohjainen ohjelma-animaattori, jossa jokaiselle roolille on oma visualisointinsa, roolikuvansa, jota käytetään kaikille tietyn roolin omaaville muuttujille. Muuttujien roolit ja muuttujiin kohdistuvat operaatiot esitetään animaattorin käyttäjälle kuvasymbolien avulla varsinaisen ohjelmakoodin rinnalla. Muuttujien lisäksi myös muuttujiin kohdistuvien operaatioiden animoinnissa hyödynnetään rooliriippuvaista esitystapaa. Animoinnin tavoitteena on tuoda ohjelmaan liitettävissä oleva asiantuntijatason hiljainen tieto vastaalkajien ulottuville. Kuvassa 2 on PlanAni-animaattorin käyttöliittymän ruudunkaappaus. Käyttöliittymän vasemmassa puoliskossa näkyy animoitava ohjelmakoodi, jossa käsittelykohta on korostettu. Oikean puoliskon ylemmässä osassa sijaitsevat muuttujien roolikuvat. Vasemmalla sijaitsevan ohjelmakoodin käsittelykohta on yhdistetty nuolella tapahtumaan liittyvään muuttujaan. Oikeassa alakulmassa on tulostus- ja syöttöalueet, joita kuvaavat paperi ja lautanen. PlanAnin toimintaa hallitaan käyttöliittymän oikeassa alareunassa sijaitsevilla painikkeilla, joilla käyttäjä voi muun muassa käynnistää animaation ja säätää sen nopeutta. PlanAni soveltuu hyvin ohjelmoinnin alkeisopetukseen ja sitä on käytetty ensimmäisen kerran vuonna 2002 järjestetyn opetuskokeilun yhteydessä. Kurssin harjoituksissa esimerkkiohjelmia visualisoitiin PlanAnin avulla. [16] PlanAni on toteutettu Tcl/Tk:lla ja se on testattu Linux/Unix ja Windows NT
5 Byckling, Gerdt, Nevalainen 25 Kuva 2: PlanAni-animaattorin käyttöliittymän ruudunkaappaus. -ympäristöissä. (PlanAni toiminee myös Mac-ympäristössä, testejä ei ole suoritettu tässä ympäristössä). Lisätietoa muuttujien rooleista (mm. täydellinen roolien luettelo ohjelmakoodiesimerkkeineen) löytyy muuttujien roolien kotisivulta [15]. Myös PlanAni on vapaasti saatavilla samassa osoitteessa. 3 Tutkimusmenetelmistä Tyypillisiä ohjelmoinnin psykologian tutkimuksissa käytettyjä menetelmiä ovat erilaiset kontrolloidut protokollakokeet, joita käytämme myös roolitutkimuksessa. Protokollakokeella tarkoitamme esimerkiksi koetta, jossa koehenkilön toiminta nauhoitetaan hänen suorittaessaan annetun tehtävän. Keskeisiä kysymyksiä ovat mm. oppimisen laadun ja ohjelmontikäsitteiden ymmärtämisen mittaaminen. Ymmärryksen mittaamiseen ei ole yleispäteviä menetelmiä, mutta ohjelmoinnin tapauksessa menetelminä on käytetty esimerkiksi ongelmanratkaisutehtäviä (ts. ohjelmointitehtäviä), sekä vapaamuotoisia ohjelmakuvauksia [2]. Roolitutkimuksessa olemme käyttäneet molempia edellä maini-
6 26 Muuttujien roolitutkimus tuista menetelmistä. Ohjelmointitehtävistä olemme varsinaisten valmiiden ohjelmien lisäksi keränneet nk. kirjoitusprotokollan, eli videoineet ohjelmakoodin kirjoitusprosessin tietokoneen ruudulta. Lisäksi olemme kehitelleet silmänliikekameran käyttöä ohjelmoinnin psykologian tutkimusmenetelmänä. Yleispätevien menetelmien puuttumisen vuoksi kontrolloiduissa kokeissa saatujen tulosten analysointimenetelmien valinta ja kehittely vaatii harkintaa. Ohjelmointitehtävien kirjoitusprotokollan analysointiin käytämme Ristin fokaalisen laajennuksen mallia [13]. Ristin mukaan ohjelmoija, joka ei omaa valmiita menetelmiä (plan) etenee ohjelman kirjoittamisessaan laajentaen yksittäisestä (tavoitteen kannalta olennaisimmasta) koodinpalasesta yksittäiseksi riviksi ja edelleen ohjelmointimenetelmäksi. Ohjelma siis syntyy nk. peruuttavan kehittämisen mukaisesti (backward development). Vastaavasti ohjelmoija, joka omaa tarvittavat menetelmät, pystyy palauttamaan menetelmän osat muististaan ohjelman ulkoasun mukaisessa järjestyksessä. Tällaista etenevää kehittämistä (forward development) kutsutaan skeeman laajennukseksi. Ohjelmakuvausten analysoinnissa mielenkiinto ei kohdistu kuvausten oikeellisuuteen. Kuvauksen abstraktiotaso sekä tapa, jolla informaatio esitetään, ovat parempia mittareita kuvaamaan ihmisen mentaalimalleja, joten analysointiin tarvitaan erityisiä analysointimenetelmiä [2]. Useat aiemmat tutkimukset ovat soveltaneet ohjelmakuvausten analysointiin Penningtonin menetelmää [10], josta on muodostunut eräänlainen perusta ohjelmatietämyksen tutkimukselle. Roolitutkimuksen tarpeisiin olemme testanneet Goodin ohjelmakuvausten analysointimenetelmää (program summary analysis scheme) [3], joka pohjautuu Penningtonin menetelmään, mutta on hienojakoisempi ja tarkemmin määritelty. Menetelmä jakaantuu kahteen toisistaan riippumattomaan osaan: informaatiotyyppianalyysiin, jossa tarkastellaan mitä informaatiota ohjelmasta esitetään ja objektikuvausanalyysiin, jossa tarkastellaan miten yksittäisiin objekteihin kuvauksessa viitataan. Molemmissa analyyseissa luonnollisella kielellä annettu ohjelmakuvaus jaetaan pieniin osiin, jotka luokitellaan sisältönsä mukaan informaatiotyyppianalyysissa yhteentoista luokkaan ja objektikuvausanalyysissa seitsemään luokkaan. Varsinaisessa analyysivaiheessa ohjelmakuvauksen olemusta tutkitaan tarkastelemalla kuhunkin luokkaan sijoitettujen osien lukumääriä. Olemme testanneet menetelmää luotettavuustestillä (inter-rater reliability test), jossa verrattiin kolmen toisistaan riippumattoman tutkijan samasta suomenkielisestä aineistosta suorittamien analyysien eroja ja yhtäläisyyksiä [2]. Tällä luotettavuustestillä pyrittiin testaamaan kyseisen analysointimenetelmän yleistettävyys sekä kartoittamaan jatkoa varten yhden analysoijan suorittaman analyysin luotettavuustaso. Luotettavuutta mitattiin laskemalla analysoijien välisten luokittelujen vastaavuuksia. Informaatiotyyppiluokittelussa päästiin 65,5 prosentin tarkkuustasoon vertailtaessa kaikkien kolmen luokittelijan luokituksia. Tapauksia, joissa vähintään kaksi luokittelijaa olivat valinneet samoin, oli 94 prosenttia kaikista tapauksista. Objektikuvausluokittelussa samat luvut olivat 73,2 ja 99,3. Luotettavuustesti osoitti, ettei Goodin menetelmä ole täysin yksikäsitteinen, vaan vaatii lisää kehitystyötä. Luotettavuustestin yhteydessä pohdimme myös menetelmän pahimpia ongelmia. On huomattava, että luonnollisen kielen analy-
7 Byckling, Gerdt, Nevalainen 27 sointi on vaikeaa sen moniselitteisyyden, kontekstiriippuvuuden ja vivahde-erojen vuoksi. Lisäksi Goodin menetelmä on luotu englannin kieltä varten, joten menetelmän tarkkuus kärsii kielieroista. Nämä tosiseikat huomioiden totesimme Goodin menetelmän kuitenkin olevan tarkin olemassa oleva ohjelmakuvausten analysointimenetelmä ja näin olevan sopiva omiin tarkoitusperiimme. Olemme sittemmin soveltaneet Goodin menetelmää protokollakokeiden ohjelmakuvausten analysointiin. Silmänliikekameroiden avulla voidaan rekisteröidä ihmisen katseen kohteita esimerkiksi tietokoneen näytöllä. Katseen kohteiden avulla voidaan arvioida ihmisen visuaalisen attention kohdistumista, vaikkakaan katseen kohde ja attention kohde eivät ole aina samoja. Attentiolla tarkoitamme tässä yhteydessä tarkkaavaisuutta tai huomiota, jota ihminen kohdistaa välittömiin aistien kautta saatuihin tai muistissa oleviin tietoihin. Ihmisen attention kohdistuminen tarjoaa informaatiota ihmisen kognitiivisista prosesseista, jotka ovat ohjelmoinnin psykologian tutkimuskohteita. Silmänliikekameroita on aikaisemmin hyödynnetty erityisesti käytettävyystutkimuksissa sekä ihmisten haku- ja lukustrategioihin liittyvissä kognitiivisen psykologian tutkimuksissa. Ohjelmoinnin psykologian alaan liittyvissä tutkimuksissa silmänliikekameroita on hyödynnetty varsin rajallisesti. Tästä syystä suoritimme kontrolloidun kokeen [8], jonka avulla varmistuimme silmänliikekameroiden käyttökelpoisuudesta roolitutkimuksen yhtenä tutkimusmenetelmänä. Tutkimuksessamme tulemme käyttämään silmänliikekameroiden keräämää dataa tarkastellessamme ihmisten visuaalisen attention jakautumista näytöllä sijaitsevien merkityksellisten alueiden välillä. 4 Roolit ja strateginen ohjelmointitietämys 4.1 Tutkimuksen lähtökohta Ohjelmointistrategiat ovat menettelytapoja, joita ohjelmoijat käyttävät lähestyessään ohjelmointiongelmaa. Strategiat voivat olla tiedostettuja, mutta yleisesti etenkin aloittelevilla ohjelmoijilla ne ovat alitajuisia toimintamalleja ongelmanratkaisuun käytetään tavallisimmin sitä strategiaa, joka tuntuu hyvältä tavalta lähestyä lähimpänä näköpiirissä olevaa osaongelmaa. Vasta-alkajien yleisin lähestymistapa onkin keskittyä kokonaisen ohjelmointiongelman sijaan sarjaan pienempiä osaongelmia aloittaen niistä yksittäisistä ohjelmariveistä, joita ensimmäiseksi havaitaan tarvittavan ongelman ratkaisussa. Strategiat ovat usein myös opportunistisia. Tyypillisesti ongelmasta riippumatta pyritään käyttämään sitä strategiaa, jolla käsillä olevasta ongelmasta uskotaan päästävän yli mahdollisimman pienellä vaivalla. Aloittelevilla ohjelmoijilla kehittyneitä ohjelmointistrategioita on vielä vähän ja niiden soveltaminen on vaikeaa. Toiminnassa esiintyy usein jopa summittaista kokeilua strategioiden pettäessä kokeillaan päästä nykytilasta lähemmäksi tavoitetilaa kirjoittamalla kokeilunomaisesti erilaisia ohjelmakoodirivejä, jotka eivät liity ongelman todelliseen ratkaisuun. Ohjelmointistrategiat kehittyvät järjestelmällisemmiksi ohjelmointitietämyksen ja -menetelmien karttuessa. Ne ovat eri tason asioita kuin yksittäiset menetelmät eli nk. planit. Strategialla kuvataan sitä, kuinka ohjelmoija soveltaa omaamiaan yksittäisiä planeja tai yleistä ohjelmointija menetelmätietämystään. Mikäli menetelmiä ei ole, ovat myös strategiat epämääräisiä.
8 28 Muuttujien roolitutkimus Roolien avulla asiantuntijoiden menetelmätietämystä voidaan opettaa vastaalkajille ja näin kartuttaa menetelmävarastoa entistä aiemmassa opiskelun vaiheessa. Lisäksi roolien opetuskäytöstä saadut ensimmäiset tulokset osoittavat, että roolitietämys auttaa varsinkin ohjelmien syvärakenteen ymmärtämisessä [16]. Syvärakenteen ymmärryksen katsotaan liittyvän asiantuntijuuteen analysoidessaan ohjelmaa asiantuntijat pystyvät ymmärtämään ohjelman syvärakenteen vasta-alkajien keskittyessä lähinnä pintarakenteen tarkasteluun. Roolitietämys tuo siis vasta-alkajien ohjelmointitietämykseen suoraan sellaisia menetelmiä, jotka tavallisesti muodostuvat alitajuisesti vasta myöhemmässä vaiheessa kokemuksen ja harjaantumisen myötä. Roolitietämyksen voidaan siis olettaa edistävän myös ohjelmointistrategioiden kehittymistä. 4.2 Tutkimuksen tavoitteet Tutkimusta muuttujien roolien vaikutuksesta ohjelmointistrategioihin voidaan hyödyntää eri tavoin. Yksi tärkeimmistä kiinnostuksen kohteistamme on tutkia, millä tavoin käytettynä roolit soveltuvat parhaiten ohjelmoinnin alkeisopetukseen. Tähän päämäärään päästäksemme joudumme aluksi selvittämään roolikäsitteen todelliset käytännön vaikutukset opetusmetodina. Jotta voisimme tutkia, millaisia vaikutuksia roolikäsitteellä on strategisen ohjelmointitietämyksen kehittymisessä alkeistasolla, joudumme ensiksi tutkimaan asiantuntijoiden omaamia strategioita. Tarkoituksenamme on siis selvittää millaisia muuttujien rooleihin liittyviä strategioita ohjelmoinnin asiantuntijoilla on ja voidaanko niitä opettaa. Edelleen mielenkiintomme kohdistuu siihen, onko olemassa joitain erityisesti vasta-alkajille soveltuvia strategioita roolien käyttöön liittyen, mitä nämä strategiat mahdollisesti ovat, miten ne löydetään ja kuinka niitä voidaan parhaiten käyttää opetuksessa. 4.3 Tutkimustyö ja eteneminen Muuttujien rooleja käytettiin ensimmäisen kerran opetuksen apuna syksyllä 2002 järjestetyssä opetuskokeilussa [16]. Kokeilussa yliopistotasoisen ohjelmoinnin alkeiskurssin osallistujat jaettiin kolmeen ryhmään: perinteinen, rooli- ja animointiryhmä. Perinteiselle ryhmälle annettiin perinteistä luennoista ja harjoituksista muodostuvaa opetusta. Toisin sanoen perinteisen ryhmän opiskelijoita opetettiin tavalla, jolla koko kurssin opetus olisi järjestetty ilman kyseistä opetuskokeilua. Rooli- ja animointiryhmien opiskelijat osallistuivat yhdessä erillisille luennoille, joilla muuttujien roolit esiteltiin systemaattisesti kurssin edetessä. Rooleja käytettiin opetuksen apuna luennoilla esimerkkiohjelmissa sekä kurssiin liittyvissä pakollisissa harjoituksissa. Animointiryhmän harjoituksissa esimerkkiohjelmia havainnollistettiin lisäksi PlanAnianimaattorilla [18]. Rooliryhmän ja perinteisen ryhmän harjoituksissa esitettiin samat esimerkkiohjelmat käyttäen Turbo Pascal -ohjelmointiympäristön virheenjäljitintä. Kurssin edetessä yhteensä 39 kurssille osallistunutta opiskelijaa osallistui protokollakokeisiin, joita järjestettiin kurssin puolessavälissä sekä kurssin lopussa. Protokollakokeet koostuivat kahdenlaisista tehtävistä: yksin suoritetuista ohjelman ymmärrystehtävistä sekä pariohjelmointitehtävistä [5]. Ohjelmointitehtävistä kerättiin varsinaisten pariohjelmoinnin tuloksena syntyneiden ohjelmien lisäksi tehtävän suorituksen aikainen kirjoitusprotokolla sekä puheprotokolla (oh-
9 Byckling, Gerdt, Nevalainen 29 jelman kirjoittaminen videoitiin ja pareja kehotettiin keskustelemaan ohjelmoinnin aikana ohjelmaan ja ohjelmointiin liittyvistä asioista). Ohjelmien ymmärrystehtävässä taas henkilöitä pyydettiin valmiiseen ohjelmaan perehdyttyään antamaan vapaa sanallinen ohjelmakuvaus ohjelman toiminnasta ja tarkoituksesta. Strategiseen ohjelmointitietämykseen liittyvä tutkimustyö keskittyy tässä vaiheessa pitkälti juuri edellä kuvatun protokolladatan analysointiin. Koska roolikäsite on uusi ja ainutlaatuinen tapa jäsentää ohjelmointitietämystä, olemme tutkimuksen alkuvaiheessa keskittyneet lähinnä tulosten analysointiin soveltuvien menetelmien etsimiseen, testaamiseen ja kehittämiseen (katso luku 3). Olemme soveltaneet Goodin menetelmää protokollakokeiden ohjelmakuvausten analysointiin tarkoituksenamme löytää mahdollisia eroavaisuuksia ryhmien välillä. Goodin menetelmän myötä suoritettu tilastollinen analyysi ei kuitenkaan ole tuottanut merkittäviä tuloksia ryhmien välisistä eroista, joten kyseisen aineiston analysointi jatkuu edelleen. Seuraavaksi sovellamme ohjelmakuvauksiin kvalitatiivisempaa analyysia. Edellä kuvatun analyysin ohella olemme analysointityössä keskittyneet myös pariohjelmointitehtäviin, joihin olemme tähän mennessä soveltaneet kvalitatiivisia analysointikeinoja pyrkien etsimään niitä ilmiöitä, joihin jatkossa kannattaa keskittyä. Olemme lähinnä tarkastelleet valmiissa ohjelmissa esiintyneitä virheitä sekä tarvittaessa puheprotokollaa päätelmien tukena. Analyysi on jo tuottanut mielenkiintoisia havaintoja, joihin keskitymme tutkimuksen jatkovaiheissa pyrkien vahvistamaan havaintoja myös tilastomenetelmin. Näistä havainnoista tulemme raportoimaan lisää lähitulevaisuudessa. Pariohjelmointitehtävien kvantitatiiviseen analyysiin käytämme mukautettua versiota Ristin fokaalisen laajennuksen mallista. Roolikäsitteen tuntevat henkilöt omaavat valmiita muuttujien käyttöön liittyviä planeja, joiden kautta ohjelmointiongelman ratkaisua voidaan lähestyä. Roolituntemuksen omaavilla protokollahenkilöillä tulisi siis oletettavasti esiintyä enemmän etenevää kehittämistä kuin perinteistä opetusta saaneilla protokollahenkilöillä. Analyysissa Ristin menetelmää käytetään mukaillen. Siinä missä Rist tarkastelee ohjelmointia kokonaisuudessaan analysoiden ohjelmia sellaisenaan, tarkastelemme roolitutkimuksessa ohjelmointimenetelmiä yksittäisten muuttujien näkökulmasta. Näin ollen tämän tutkimuksen kannalta mielenkiinnoton aineisto on tarkoitus jättää analyysin ulkopuolelle ja keskittyä tarkastelemaan sitä, kuinka protokollahenkilöt käyttävät muuttujiin liittyviä ratkaisuplaneja. Pariohjelmointitehtävistä kerätyn ohjelmoinnin aikaisen puheprotokollan analysointiin emme vielä ole löytäneet soveliasta analysointimenetelmää. Vaikka puheprotokollan analysointiin on sinänsä olemassa runsaasti menetelmiä, on ohjelmoinnin aikaisen puheprotokollan kerääminen vielä harvinaista ja tarkoituksenmukaisten analysointimenetelmien kehittely vielä alkutekijöissään. Goodin menetelmä ei ainakaan sellaisenaan sovellu tällaisen puheprotokollan analysointiin. Puheprotokollaa onkin tähän mennessä käytetty ainoastaan kvalitatiivisen analyysin tukena. Tässä tarkoituksessa puheprotokolla toimii erinomaisena lisäinformaation lähteenä protokollahenkilöiden toiminnan tulkitsemisessa. Edellä kuvattujen tutkimusmenetelmien avulla uskomme voivamme selvittää eroja vasta-alkajien ohjelmointitietämyksessä ja ohjelmointistrategioissa, mutta
10 30 Muuttujien roolitutkimus olemme edelleen epävarmoja siitä, kuinka tarkasti näillä metodeilla voidaan mitata juuri niitä asioita, joihin kiinnostuksemme kohdistuu. Analysointimenetelmien sekä uusien koejärjestelyjen kartoittaminen ja kehitys jatkuu siis edelleen. 5 Attentio ja ohjelmatietämys 5.1 Tutkimuksen tavoitteet Opetettaessa ohjelmointia vasta-alkajille voidaan hyödyntää erilaisia visualisointitekniikoita. Visualisointitekniikoiden avulla sekä ohjelmointikielen rakenteet että ohjelmarakenteet voidaan tehdä helpommin ymmärrettäviksi [4, 7]. Kolme ohjelmointiin liittyvän tietämyksen lajia on esitelty kohdassa 2.2. Ohjelmien visualisointia voidaan lähestyä minkä tahansa tietämyksen lajin kautta. Petre ja Blackwell [11] esittävät, että visualisoinnin ei tulisi tapahtua ohjelmointikielen tasolla, koska yksittäisen ohjelmointiparadigman piirissä tapahtuva visualisointi, joka keskittyy ohjelmointikielen rakenteisiin, ei ole informatiivista. Tästä syystä tulisi suosia korkeamman tason ohjelmarakenteiden visualisointia [17]. Hyödynnettäessä visualisointitekniikoita täytyy ohjelmista valita ne piirteet tai ominaisuudet, joita tuodaan esille. Näillä visualisoinnin kohdistamiseen liittyvillä valinnoilla on vaikutusta visualisoinnin informatiivisuuteen. Visualisoinnit voivat erota toisistaan kohteiden valinnan lisäksi myös käytettävien symbolien ja erilaisten ulkoasuun liittyvien tekijöiden osalta. Esimerkiksi PlanAnissa roolia kiintoarvo havainnollistetaan hautakivisymbolilla. Ulkoasuun liittyviä tekijöitä ovat esimerkiksi käytettävien symbolien keskinäinen sijoittelu ja sijoittelu tietokoneruudulla. Tutkimuksessamme tarkastelemme edellä esiteltyjä visualisointeihin liittyviä tekijöitä visuaalisen attention kohdistumisen kautta. Pyrimme etsimään vastauksia erityisesti seuraaviin keskeisiin kysymyksiin: Missä määrin ja millä tavoin visualisoinnissa käytettävät erilaiset symbolit ja erilaiset ulkoasut vaikuttavat attention kohdistumiseen? Millainen vaikutus attention kohdistumisella on puolestaan muodostuvaan ohjelmatietämykseen? Tutkimuksemme tavoitteena on kerätä yksityiskohtaista tietoa erilaisten roolikuvien, erilaisten roolikuvien sijoittelutapojen ja erilaisten roolikuviin kohdistuvien animaatioiden vaikutuksesta attention kohdistumiseen aloittelevien ohjelmoijien osalta. Tutkimme myös, kuinka nämä mahdolliset erot attention kohdistumisessa vaikuttavat ohjelmatietämyksen muodostumiseen. 5.2 Tutkimustyö ja eteneminen Tutkimuksessamme käytämme PlanAnianimaattoria, jonka visuaalista ulkoasua vaihtelemme eri koetilanteissa. Koehenkilöiden katseen kohteet ruudulla mitataan silmänliikekameran avulla. Tällä tavalla keräämme tietoa koehenkilön visuaalisen attention kohdistumisesta. Koehenkilöiltä kerätään myös heidän käsityksiään tutkittavasta ohjelmasta. Tämä tapahtuu pääsääntöisesti ohjelmakuvausten avulla. Tarkastelemme ohjelmakuvauksia Goodin analysointimenetelmän avulla [3] ja pyrimme tällä tavalla tutkimaan ohjelmatietämyksen muodostumista. Goodin analysointimenetelmä on esitelty lyhyesti kohdassa 3. Tammikuussa 2004 suoritimme kokeen [8], jossa vertailimme kolmen erilaisen silmänliikekameran soveltumista
11 Byckling, Gerdt, Nevalainen 31 ohjelmoinnin psykologian tutkimukseen. Kokeen tarkoituksena oli kerätä yleistä kokemusta silmänliikekameroiden käytöstä sekä analysoida, kuinka silmänliikkeiden tutkiminen soveltuu osaksi ohjelmoinnin psykologian tutkimuksen metodologiaa. Kokeesta saadut tulokset vahvistivat käsityksemme siitä, että silmänliikekameroiden avulla voidaan kerätä käyttökelpoista silmänliikedataa ohjelmoinnin psykologian tutkimusta varten. Ensimmäinen visualisointeihin ja ohjelmatietämyksen muodostumiseen keskittyvä koe suoritetaan syksyllä Kokeessamme tulee olemaan koehenkilöinä kaksi aloittelevien ohjelmoijien ryhmää, joista toinen ryhmä tutkii ohjelmia Turbo Pascalin virheenjäljittimen avulla ja toinen ryhmä PlanAni-animaattorin avulla. Tarkastelemme koehenkilöiden visuaalisen attention kohdistumista ohjelmien tutkimisen aikana sekä niitä mentaalisia malleja, joita koehenkilöille syntyy tutkittavista ohjelmista. Tavoitteenamme on kokeen avulla selvittää, onko attention kohdistumisessa eroja eri työkaluja käyttäneiden ryhmien välillä. 6 Automaattinen roolien tunnistaminen 6.1 Tutkimuksen tavoitteet Ihmisen kognitio ei ole eksaktia ja kognitiiviset rakenteet ovat epämääräisiä. Muuttujien roolit ovat ohjelmoijien käyttämiä kognitiivisia rakenteita, joilla ei ole tarkkaan määriteltyjä ominaisuuksia. Roolit ovat väljiä kuvauksia muuttujien käyttäytymisestä ja ne voivat poiketa toisistaan eri henkilöillä. Esimerkiksi matemaatikko osaa ennustaa Fibonaccin lukujonon tuottamat luvut ja mieltää lukujonon läpikäyvän muuttujan askeltajaksi. Fibonaccin lukujen määritelmää tuntematon vasta-alkaja ei välttämättä näe lukujen välistä yhteyttä ja voi antaa lukuja tallettavalle muuttujalle roolin kokooja, koska muuttuja näyttää kokoavan aikaisemman laskennan tuloksia. Ohjelmointikielet puolestaan ovat eksakteja. Ne perustuvat tarkkaan määriteltyihin kielioppeihin, jotta niitä on mahdollista tulkita tietokoneen avulla. Roolikäsite luo mielenkiintoisen mahdollisuuden tarkastella ihmisen kognitiota, koska eksaktilla ohjelmointikielellä tuotettuja ohjelmia on mahdollista analysoida automaattisesti. Automaattinen roolianalyysi on luonteeltaan epäeksaktia, koska kognitio ei ole täsmällistä. Automaattinen roolianalyysi tutkii ohjelmia ja yrittää määrittää ohjelmakoodissa esiintyvien muuttujien roolit. Analyysin tavoitteena on löytää yhteys ohjelmakoodin ja ohjelmoijan kognitiivisten rakenteiden välille. Aiomme hyödyntää automaattista roolitunnistusta PlanAniohjelma-animaattorissa mahdollistaaksemme automaattisen ohjelmien animoinnin. Muita sovelluskohteitamme ovat laajojen ohjelmien ylläpitosovellukset ja roolitutkimuksen aputyökalut. Uskomme, että automaattista roolien tunnistamista voidaan hyödyntää myös erilaisissa virheenjäljitysympäristöissä ja ohjelmakoodin kirjoittamiseen käytettävissä sovelluksissa. 6.2 Tutkimustyö ja eteneminen Kehitämme menetelmää löytää automaattisesti ohjelmakoodissa esiintyvien muuttujien roolit. Automaattinen roolianalyysi jakautuu kahteen vaiheeseen, jotka ovat oppimisvaihe ja tunnistusvaihe. Oppimisvaiheessa roolianalyysiä pohjustetaan luomalla rooli-informaatiolla varustettujen ohjelmien avulla tietokanta, jota käytetään automaattisessa tunnistamisessa. Tunnis-
12 32 Muuttujien roolitutkimus tamisvaiheessa analyysisovellus saa syötteeksi ohjelmia, joiden muuttujille se etsii tietokannan avulla parhaiten sopivat roolit. Kuvailemamme automaattinen roolien tunnistus on luonteeltaan koneoppimistehtävä. Ohjelmien tietovirta-analyysi on eräs keino analysoida ohjelmia [9]. Siinä ohjelma kuvataan tietovirtakaavion avulla: ohjelma jaetaan itsenäisiin osiin, joiden välillä kontrolli siirtyy ohjelman suorituksen aikana. Tutkimuskohteena ei ole suorituskelpoinen ohjelma, vaan ohjelmakoodi. Ohjelman käännösaikainen optimointi on tyypillinen tietovirta-analyysin sovelluskohde. Automaattisen roolianalysaattorin teknisen toteutuksen ytimenä on kääntäjän [1] ja tietovirta-analyysisovelluksen yhdistelmä. Analysaattori käsittelee syötettään kuten kääntäjä jäsentäen ohjelmakoodin syntaksipuuksi ja muodostaen tietovirtakaavion. Tämän jälkeen se käyttää erilaisia tietovirta-analyysimenetelmiä tutkiakseen kuinka muuttujat syöteohjelmassa käyttäytyvät. Sovellus kerää jäsentämisen ja tietovirta-analyysin aikana tietämystä muuttujista. Kutsumme muuttujista kerättyä tietoa muuttujien tietovirtaominaisuuksiksi. Tietovirtaominaisuudet kuvaavat, mitä muuttujalle tapahtuu sen elinkaaren aikana, esimerkiksi kuinka usein muuttujan arvo muuttuu, kuinka muuttujan elinkaarensa aikana saamat arvot eroavat toisistaan ja riippuuko muuttujan arvo joidenkin muiden muuttujien arvoista. Oppimisvaiheessa analysaattori saa syötteekseen ohjelmia, joissa muuttujien roolit on merkitty koodiin kommenttien sisään. Aluksi analysaattori kartoittaa ohjelman muuttujien tietovirtaominaisuudet. Sitten se poimii muuttujien roolit syöteohjelmasta ja yhdistää jokaisen muuttujan roolin sitä vastaaviin tietovirtaominaisuuksiin. Oppimisvaiheen lopuksi sovellus yleistää usean saman roolin omaavan muuttujan tietovirtaominaisuudet tietokantaan. Tietokantaan kootaan roolien kuvaukset tietovirtaominaisuuksien kautta ilmaistuna. Tunnistamisvaihe muistuttaa oppimisvaihetta. Analysaattori saa syötteekseen ohjelman, jossa ei ole rooli-informaatiota. Sovellus kartoittaa syöteohjelman muuttujien tietovirtaominaisuudet samalla tavoin kuin oppimisvaiheessakin. Sen jälkeen analysaattori vertailee muuttujien tietovirtaominaisuuksia tietokantaan talletettuihin roolien tietovirtaominaisuuksiin ja etsii kullekin muuttujalle parhaiten sopivan roolin. Oppimisvaiheessa käytetty aineisto vaikuttaa analysoijan tietokantaan talletettaviin roolimääritelmiin. Eri ohjelmoijaryhmien tuottamien ohjelmien käyttäminen johtaa erilaisiin tietokantoihin. Toteutamme automaattista roolien tunnistusta osana PlanAnia. Toteutamme sovellusta Tcl/Tk:lla ja hyödynnämme Yeti-moduulia [12], joka on Yacc:in kaltainen jäsentäjägeneraattori. 7 Yhteenveto Tässä tekstissä olemme esitelleet muuttujien roolit -käsitteen. Muuttujien roolit on uusi käsite, joka kuvaa muuttujien stereotyyppistä käyttöä ja edustaa asiantuntijoiden omaamaa ohjelmointiin liittyvää hiljaista tietoa. Muuttujien rooleja voidaan hyödyntää ohjelmoinnin alkeisopetuksessa tuomalla asiantuntijoiden hiljaista tietoa vasta-alkajien ulottuville. Vain kymmenen roolia riittää kattamaan 99 prosenttia kaikista aloittelijatason imperatiivisissa ohjelmissa esiintyvistä muuttujista. Muuttujien rooleja visualisoidaan Joensuun yliopistossa kehitetyn PlanAnianimaattorin avulla. PlanAnissa jokaiselle
13 Byckling, Gerdt, Nevalainen 33 roolille on olemassa oma visualisointinsa roolikuvansa jota käytetään kaikille tietyn roolin omaaville muuttujille. Olemme esitelleet kolme roolitutkimuksen osa-aluetta: roolit ja strateginen ohjelmointitietämys, attentio ja ohjelmatietämys, sekä automaattinen muuttujien roolien tunnistaminen. Rooleihin ja strategiseen ohjelmointitietämykseen liittyvä tutkimus tarkastelee muuttujien roolien vaikutusta strategisen ohjelmointitietämyksen muodostumiseen aloittelijaohjelmoijien kohdalla. Attention ja ohjelmatietämyksen tutkimuksessa selvitämme erilaisten roolikuvien ja niiden sijoittelun vaikutusta attention kohdistumiseen ja sitä kautta ohjelmatietämyksen muodostumiseen. Kolmas tutkimuksen osa-alue pyrkii kehittämään automaattisen roolien tunnistamisen menetelmiä. Tätä työtä tukee Suomen Akatemia määrärahalla nro: Viitteet [1] Aho A. V., Sethi R., Ullman J. D. (1988) Compilers. Principles, Techniques and Tools. Addison-Wesley, Reading, Massachusetts. [2] Byckling P., Kuittinen M., Nevalainen S., Sajaniemi J. (2004) An Inter-Rater Reliability Analysis of Good s Program Summary Analysis Scheme. Proceedings of the 16th Annual Workshop of the Psychology of Programming Interest Group (PPIG 2004). Institute of Technology Carlow, Ireland, [3] Good J. (1999) Programming Paradigms, Information Types and Graphical Representations: Empirical Investigations of Novice Program Comprehension. Ph.D. thesis, University of Edinburgh. [4] Hundhausen C. D., Douglas S. A., Stasko J. D. (2002) A Meta-study of Algorithm Visualization Effectiveness. Journal of Visual Languages and Computing 13, [5] Kuittinen M, Sajaniemi J. (2003) First Results of an Experiment on Using Roles of Variables in Teaching. EASE & PPIG 2003, Papers from the Joint Conference at Keele University 8th 10th April Keele, U.K., [6] Kuittinen M., Sajaniemi J. (2004) Teaching Roles of Variables in Elementary Programming Courses. ITiCSE 2004, Proceedings of the 9th Annual Conference on Innovation and Technology in Computer Science Education, Leeds, UK, June Association for Computing Machinery, [7] Mulholland P. (1998) A Principled Approach to the Evalution of SV: A Case Study in Prolog. Software Visualization Programming as a Multimedia Experience. The MIT Press, J. Stasko, J. Domingue, M. H. Brown, and B. A. Price, Eds., [8] Nevalainen S., Sajaniemi J. (2004) Comparison of Three Eye Tracking Devices in Psychology of Programming Research. Proceedings of the 16th Annual Workshop of the Psychology of Programming Interest Group (PPIG 2004). Institute of Technology Carlow, Ireland, [9] Nielson F., Nielson H. R., Hankin C. (1988) Principles of Program Analysis. Springer-Verlag, Heidelberg. [10] Pennington N. (1987) Comprehension Strategies in Programming. Olson G. M., Sheppard S., Soloway E. (toim.), Empirical Studies of Programmers: Second Workshop, Ablex Publ. Co.,
14 34 Muuttujien roolitutkimus [11] Petre M., Blackwell A. F. (1999) Mental Imaginery in Program Design and Visual Programming. International Journal of Human-Computer Studies 51, 1, [12] Pillhofer F. (2002) YETI Yet Another TCL Interpreter. Internet WWW-sivu, URL: Yeti/ (elokuu, 2004). [13] Rist R. S. (1989) Schema Creation in Programming. Cognitive Science 13, [14] Sajaniemi J. (2002) An Empirical Analysis of Roles of Variables in Novice- Level Procedural Programs. Proceedings of IEEE 2002 Symposia on Human Centric Computing Languages and Environments (HCC 02), Arlington, VA, September IEEE Computer Society, [15] Sajaniemi J., The Roles of Variables Home Page. Internet WWW-sivu, URL: saja/ var_roles/. (lokakuu, 2004). [16] Sajaniemi J., Kuittinen M. (painossa) An Experiment on Using Roles of Variables in Teaching Introductory Programming. Computer Science Education. [17] Sajaniemi J., Kuittinen M. (2003) Program Animation Based on the Roles of Variables. Proceedings of ACM 2003 Symposium on Software Visualization (SoftVis 2003), San Diego, CA, June Association for Computing Machinery, [18] Sajaniemi J., Kuittinen M. (2004) Visualizing Roles of Variables in Program Animation. Information Visualization 3(3),
Muuttujien roolit ohjelmoinnin opettamisessa. Jorma Sajaniemi
Muuttujien roolit ohjelmoinnin opettamisessa Jorma Sajaniemi Joensuun yliopisto Tietojenkäsittelytiede Jorma.Sajaniemi@Joensuu.Fi Johdanto Roolikäsite Roolit ja opiskelijat Roolit ja ammattilaisohjelmoijat
Ohjelmointikoulutuksen tehostaminen kognitiivisilla menetelmillä
11.4.2007 Ohjelmointikoulutuksen tehostaminen kognitiivisilla menetelmillä Prof. Jorma Sajaniemi Joensuun yliopisto, Tietojenkäsittelytiede Jorma.Sajaniemi@Joensuu.Fi www.cs.joensuu.fi/~saja Taustaa Sisältö
Muuttujien roolit Kiintoarvo cin >> r;
Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,
Tutkittua tietoa. Tutkittua tietoa 1
Tutkittua tietoa T. Dybå, T. Dingsøyr: Empirical Studies of Agile Software Development : A Systematic Review. Information and Software Technology 50, 2008, 833-859. J.E. Hannay, T. Dybå, E. Arisholm, D.I.K.
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Matematiikan ja tilastotieteen laitos Tietojenkäsittelytieteen laitos Kisällioppiminen = oppipoikamestari
Algoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
Johdatus Ohjelmointiin
Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin
Ohjelmointi 1 / syksy /20: IDE
Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Tietotekniikan valintakoe
Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan
Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.
Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,
11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto
811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien
SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus
SEPA päiväkirja BetaTeam Juho Mäkinen, 57796V, jvmakine@cc.hut.fi Jari Leppä, 42710V, jleppa@cc.hut.fi Versio Pvm Tekijä Kuvaus 0.1 10.11.2005 Juho Mäkinen Johdanto 1. 0.2 11.11.2005 J.Mäkinen, Käytäntöön
Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun
Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Sami Hokuni 12 Syyskuuta, 2012 1/ 54 Sami Hokuni Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Turun Yliopisto. Gradu tehty 2012 kevään
Trialogisen oppimisen suunnitteluperiaatteet
Trialogisen oppimisen suunnitteluperiaatteet Tekijät: Hanni Muukkonen, Minna Lakkala, Liisa Ilomäki ja Sami Paavola, Helsingin yliopisto 1 Suunnitteluperiaatteet trialogisen oppimisen pedagogiikalle 1.
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
Opetuksen ja opiskelun tehokas ja laadukas havainnointi verkkooppimisympäristössä
Opetuksen ja opiskelun tehokas ja laadukas havainnointi verkkooppimisympäristössä Jukka Paukkeri (projektitutkija) Tampereen Teknillinen Yliopisto Matematiikan laitos Intelligent Information Systems Laboratory
4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
Naps ja Bloom teollisuusrobotiikan Peda-Forum,
Naps ja Bloom teollisuusrobotiikan simulaatio-opetuksessa @sakarikoivunen Peda-Forum, 15.8.2018 Johdanto Tuotantoautomaation koulutus- ja tutkimusvastaava Oma opetus lähinnä Tuotantoautomaation perusteet
815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu
811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään
StatCrunch -laskentasovellus
StatCrunch -laskentasovellus Yleistä sovelluksesta StatCrunch on Integrated Analytics LLC:n valmistama sovellus tilastotieteellisten analyysien tuottamista varten. Se on verkon yli käytettävä analyysisovellus,
Harjoitustehtävät ja ratkaisut viikolle 48
Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin
Käytettävyyslaatumallin rakentaminen web-sivustolle. Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.
Käytettävyyslaatumallin rakentaminen web-sivustolle Tapaus kirjoittajan ABC-kortti Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.2005 Kirjoittajan ABC-kortti
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu
Sisällönanalyysi. Sisältö
Sisällönanalyysi Kirsi Silius 14.4.2005 Sisältö Sisällönanalyysin kohde Aineistolähtöinen sisällönanalyysi Teoriaohjaava ja teorialähtöinen sisällönanalyysi Sisällönanalyysi kirjallisuuskatsauksessa 1
A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/
Koodaamme uutta todellisuutta FM Maarit Savolainen 19.1.2017 https://blog.edu.turku.fi/matikkaajakoodausta/ Mitä on koodaaminen? Koodaus on puhetta tietokoneille. Koodaus on käskyjen antamista tietokoneelle.
SPSS-pikaohje. Jukka Jauhiainen OAMK / Tekniikan yksikkö
SPSS-pikaohje Jukka Jauhiainen OAMK / Tekniikan yksikkö SPSS on ohjelmisto tilastollisten aineistojen analysointiin. Hyvinvointiteknologian ATK-luokassa on asennettuna SPSS versio 13.. Huom! Ainakin joissakin
LUENTO 7 TAULUKKOLASKENTA I
LUENTO 7 TAULUKKOLASKENTA I TIEY4 TIETOTEKNIIKKATAIDOT KEVÄT 2017 JUHANI LINNA ANTTI SAND 24.10.2017 LUENTO 7 24.10.2017 Tällä luennolla 1. Teema 4 Taulukkolaskenta Miksi? Harjoitukset 2. Taustaa yksilöharjoitukseen
Tähtitieteen käytännön menetelmiä Kevät 2009
Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00
Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.
Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla
Ohjelmointi 1. Kumppanit
Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5
Projektisuunnitelma. Projektin tavoitteet
Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen
TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit
TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen
811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))
Määritelmä: on O(g(n)), jos on olemassa vakioarvot n 0 > 0 ja c > 0 siten, että c g(n) kun n > n 0 O eli iso-o tai ordo ilmaisee asymptoottisen ylärajan resurssivaatimusten kasvun suuruusluokalle Samankaltaisia
811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.
3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen
815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
Alkukartoitus Opiskeluvalmiudet
Alkukartoitus Opiskeluvalmiudet Päivämäärä.. Oppilaitos.. Nimi.. Tehtävä 1 Millainen kielenoppija sinä olet? Merkitse rastilla (x) lauseet, jotka kertovat sinun tyylistäsi oppia ja käyttää kieltä. 1. Muistan
Tutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
Joukot. Georg Cantor ( )
Joukot Matematiikassa on pyrkimys määritellä monimutkaiset asiat täsmällisesti yksinkertaisempien asioiden avulla. Tarvitaan jokin lähtökohta, muutama yleisesti hyväksytty ja ymmärretty käsite, joista
11.4. Context-free kielet 1 / 17
11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä
Yleistä OPE-linjan kanditutkielmista
Aineenopettajankoulutuksen opinnäytteet Leena Hiltunen 10.9.2009 Yleistä OPE-linjan kanditutkielmista Tyypillisesti teoreettisia kirjallisuusanalyysejä, joissa luodaan taustaa ja viitekehystä tietylle
IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti
T Luonnollisen kielen tilastollinen käsittely Vastaukset 3, ti , 8:30-10:00 Kollokaatiot, Versio 1.1
T-61.281 Luonnollisen kielen tilastollinen käsittely Vastaukset 3, ti 10.2.2004, 8:30-10:00 Kollokaatiot, Versio 1.1 1. Lasketaan ensin tulokset sanaparille valkoinen, talo käsin: Frekvenssimenetelmä:
Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).
Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia
Aalto University School of Engineering Ongelmaperusteisen oppimisen innovatiivinen soveltaminen yliopisto-opetuksessa
Aalto University School of Engineering Ongelmaperusteisen oppimisen innovatiivinen soveltaminen yliopisto-opetuksessa Cleantech gaalan iltapäiväseminaari 20.11.2013 Helena Mälkki & Petri Peltonen Aalto-yliopisto,
ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
Algoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
17/20: Keittokirja IV
Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10 Tavoitteita
Yleistä kanditutkielmista
Aineenopettajankoulutuksen opinnäytteet Leena Hiltunen 21.1.2009 Yleistä kanditutkielmista Tyypillisesti teoreettisia kirjallisuusanalyysejä, joissa luodaan taustaa ja viitekehystä tietylle aiheelle Pääsääntöisesti
Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.
2. Vuokaaviot 2.1 Sisällys Kaavioiden rakenne. Kaavioiden piirto symbolta yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla. Esimerkkejä: algoritmi oven avaamiseen vuokaaviona,
3. Muuttujat ja operaatiot 3.1
3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.
Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit
Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää
Verkko-oppiminen: Teoriasta malleihin ja hyviin käytäntöihin. Marleena Ahonen. TieVie-koulutus Jyväskylän lähiseminaari
Verkko-oppiminen: Teoriasta malleihin ja hyviin käytäntöihin Marleena Ahonen TieVie-koulutus Jyväskylän lähiseminaari Virtuaaliyliopistohankkeen taustaa: - Tavoitteena koota verkko-oppimisen alueen ajankohtaista
ARVO - verkkomateriaalien arviointiin
ARVO - verkkomateriaalien arviointiin Arvioitava kohde: Jenni Rikala: Aloittavan yrityksen suunnittelu, Arvioija: Heli Viinikainen, Arviointipäivämäärä: 12.3.2010 Osa-alue 1/8: Informaation esitystapa
NÄYTÖN ARVIOINTI: SYSTEMAATTINEN KIRJALLISUUSKATSAUS JA META-ANALYYSI. EHL Starck Susanna & EHL Palo Katri Vaasan kaupunki 22.9.
NÄYTÖN ARVIOINTI: SYSTEMAATTINEN KIRJALLISUUSKATSAUS JA META-ANALYYSI EHL Starck Susanna & EHL Palo Katri Vaasan kaupunki 22.9.2016 Näytön arvioinnista Monissa yksittäisissä tieteellisissä tutkimuksissa
Oppimistavoitematriisi
Oppimistavoitematriisi Lineaarialgebra ja matriisilaskenta I Esitiedot Arvosanaan 1 2 riittävät Arvosanaan 3 4 riittävät Arvosanaan 5 riittävät Yhtälöryhmät (YR) Osaan ratkaista ensimmäisen asteen yhtälöitä
Lapset luovina luonnontutkijoina tutkimusperustainen opiskelu esija alkuopetuksessa
Lapset luovina luonnontutkijoina tutkimusperustainen opiskelu esija alkuopetuksessa Sari Havu-Nuutinen Itä-Suomen yliopisto Esme Glauert Institute of Education, London, UK Fani Stylianidou, Ellinogermaniki
HAVAINTO LÄhde: Vilkka 2006, Tutki ja havainnoi. Helsinki: Tammi.
HAVAINTO LÄhde: Vilkka 2006, Tutki ja havainnoi. Helsinki: Tammi. 1 MIKÄ ON HAVAINTO? Merkki (sana, lause, ajatus, ominaisuus, toiminta, teko, suhde) + sen merkitys (huom. myös kvantitatiivisessa, vrt.
etunimi, sukunimi ja opiskelijanumero ja näillä
Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi
Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...
Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.
Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen
Algoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen
Yleisiä ohjeita visualisointien käyttöönotosta ohjelmointikurssilla
Yleisiä ohjeita visualisointien käyttöönotosta ohjelmointikurssilla Tuukka Ahoniemi Ohjelmistotekniikan laitos, TTY tuukka.ahoniemi@tut.fi Yleistä Tämä teksti käsittelee yleisellä tasolla ohjelmoinnin
arvioinnin kohde
KEMIA 8-lk Merkitys, arvot ja asenteet T2 Oppilas asettaa itselleen tavoitteita sekä työskentelee pitkäjänteisesti. Oppilas kuvaamaan omaa osaamistaan. T3 Oppilas ymmärtää alkuaineiden ja niistä muodostuvien
Zeon PDF Driver Trial
Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin
Ajalliset muunnokset eksploratiivisen paikkatietoanalyysin työkaluna. Salla Multimäki ProGIS Ry Paikkatietomarkkinat
Ajalliset muunnokset eksploratiivisen paikkatietoanalyysin työkaluna Salla Multimäki ProGIS Ry Paikkatietomarkkinat 7.11.2017 Informaatiokuorma kognitiivinen kuorma - ylikuormitus Information load muodostuu
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015
ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015 Sisällys ja NFA:ksi NFA:ksi Kohti säännöllisiä lausekkeita ja Nämä tiedetään:
Ohjelmoinnin perusteet, syksy 2006
Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen
Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.
Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen
1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi
useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero
Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op
Opetuksen tavoite: T1 tukea oppilaan innostusta ja kiinnostusta matematiikkaa kohtaan sekä myönteisen minäkuvan ja itseluottamuksen kehittymistä
MATEMATIIKKA JOENSUUN SEUDUN OPETUSSUUNNITELMASSA Merkitys, arvot ja asenteet Opetuksen tavoite: T1 tukea oppilaan innostusta ja kiinnostusta matematiikkaa kohtaan sekä myönteisen minäkuvan ja itseluottamuksen
Osoitin ja viittaus C++:ssa
Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja
Datatähti 2000: alkukilpailun ohjelmointitehtävä
Datatähti 2000: alkukilpailun ohjelmointitehtävä 1 Lyhyt tehtävän kuvaus Tehtävänä on etsiä puurakenteen esiintymiä kirjaintaulukosta. Ohjelmasi saa syötteenä kirjaintaulukon ja puun, jonka jokaisessa
Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio
Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia
Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.
Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta
Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?
Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? 2013-2014 Lasse Lensu 2 Algoritmit ovat deterministisiä toimintaohjeita
SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3
AgilElephant SEPA Diary Petri Kalsi 55347A Heikki Salminen 51137K Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: PK&HS Sivu 1 / 7 Dokumenttihistoria Revisiohistoria Revision päiväys: 29.11.2004 Seuraavan
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia
Oppimistavoitematriisi
Oppimistavoitematriisi Lineaarialgebra ja matriisilaskenta I Arvosanaan 1 2 riittävät Arvosanaan 5 riittävät Yhtälöryhmät (YR) Osaan ratkaista ensimmäisen asteen yhtälöitä ja yhtälöpareja Osaan muokata
Järvitesti Ympäristöteknologia T571SA 7.5.2013
Hans Laihia Mika Tuukkanen 1 LASKENNALLISET JA TILASTOLLISET MENETELMÄT Järvitesti Ympäristöteknologia T571SA 7.5.2013 Sarkola Eino JÄRVITESTI Johdanto Järvien kuntoa tutkitaan monenlaisilla eri menetelmillä.
PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki
PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet
Mitä on konvoluutio? Tutustu kuvankäsittelyyn
Mitä on konvoluutio? Tutustu kuvankäsittelyyn Tieteenpäivät 2015, Työohje Sami Varjo Johdanto Digitaalinen signaalienkäsittely on tullut osaksi arkipäiväämme niin, ettemme yleensä edes huomaa sen olemassa
Käyttötapausanalyysi ja testaus tsoft
Käyttötapausanalyysi ja testaus tsoft 15.09.2004 http://cs.joensuu.fi/tsoft/ Johdanto Use Case analyysi (käyttötapausanalyysi) on yleisesti käytetty järjestelmälle asetettujen toiminnallisten vaatimusten
Algoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla Petri Salmela & Petri Sallasmaa
Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla 21.04.2010 Petri Salmela & Petri Sallasmaa Tutkimusorganisaatio Åbo Akademin ja Turun yliopiston tutkimusryhmät Pitkä yhteistyötausta
Harjoitus 7: NCSS - Tilastollinen analyysi
Harjoitus 7: NCSS - Tilastollinen analyysi Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tilastollinen testaus Testaukseen
Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio
Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia
ITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat