Visuaalinen ohjelmointi tietotekniikan perusopetuksessa

Samankaltaiset tiedostot
Yleisiä ohjeita visualisointien käyttöönotosta ohjelmointikurssilla

C++ Ohjelmoijan käsikirja. Johdanto

1. Mitä tehdään ensiksi?

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

4. Lausekielinen ohjelmointi 4.1

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

ELM GROUP 04. Teemu Laakso Henrik Talarmo

11/20: Konepelti auki

- Kuvan osoittamalla tavalla klikkaa kohtaa Tallenna Tiedosto. - Esimerkissämme Firefox selaimessa latauspalkki näyttää tältä

Maha Eurosystem jarrulaskentaohjelman asennusohje versio

811120P Diskreetit rakenteet

Koodaamme uutta todellisuutta FM Maarit Savolainen

Naps ja Bloom teollisuusrobotiikan Peda-Forum,

1. Olio-ohjelmointi 1.1

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

KTKO104. Luento

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Visual Basic -sovelluskehitin Juha Vitikka

811120P Diskreetit rakenteet

Kieliteknologian ATK-ympäristö Kolmas luento

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Trakla2-opetusympäristö

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg

5. HelloWorld-ohjelma 5.1

MITÄ JAVASCRIPT ON?...3

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Ohjelmointi 1. Kumppanit

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Osa 7: Hahmojen ohjelmointi ja hienosäätö

Ohjelmointikoulutuksen tehostaminen kognitiivisilla menetelmillä

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Tähtitieteen käytännön menetelmiä Kevät 2009

11. Javan toistorakenteet 11.1

Tutkittua tietoa. Tutkittua tietoa 1

Lokalisointitestaus. Matti Vuori, 1(17)

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

Pariohjelmoinnilla lisää mielekkyyttä ohjelmoinnin opetukseen? Annika Alakastari

Ohjelmointi 1 / syksy /20: IDE

IR-lämpömittarityypit

Ohjelmoinnin perusteet Y Python

Lisää pysähtymisaiheisia ongelmia

ASIO-OHJE HENKILÖSTÖLLE.

5. HelloWorld-ohjelma 5.1

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Ohjelmoinnin perusteet Y Python

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Raspin Geany-IDE:n etäkäyttö

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Asennuksessa kannattaa käyttää asennusohjelman tarjoamia oletusarvoja.

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pedacode Pikaopas. Web Service asiakasohjelman luominen

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana



Perusohje vi-editorin käyttöön

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Taulukot. Jukka Harju, Jukka Juslin

12. Javan toistorakenteet 12.1

17/20: Keittokirja IV

Aalto University School of Engineering Ongelmaperusteisen oppimisen innovatiivinen soveltaminen yliopisto-opetuksessa

58160 Ohjelmoinnin harjoitustyö

Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

ITKP102 Ohjelmointi 1 (6 op)

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Uutta Remote Support Platform 3.0 -versiossa

12. Javan toistorakenteet 12.1

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Java-kielen perusteet

Ensin klikkaa käynnistä-valikkoa ja sieltä Kaikki ohjelmat valikosta kaikki ohjelmat

etunimi, sukunimi ja opiskelijanumero ja näillä

Jype visualisointi ja automaattinen arviointi ohjelmoinnin opetuksessa

Teollisuusautomaation standardit Osio 9

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

KOODAUSPLÄJÄYS. Ohjelmoinnin perusteet

Määrittelydokumentti

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

S11-09 Control System for an. Autonomous Household Robot Platform

Näkökulmia tietoyhteiskuntavalmiuksiin

Selainpelien pelimoottorit

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

IR-lämpömittarityypit

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Testaaminen ohjelmiston kehitysprosessin aikana

Ohjelmoinnin perusteet Y Python

Tekstinkäsittelyn jatko KSAO Liiketalous 1

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

Sisältö. 22. Taulukot. Yleistä. Yleistä

1 Tivax siirto uuteen koneeseen

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Transkriptio:

Visuaalinen ohjelmointi tietotekniikan perusopetuksessa 11. huhtikuuta 2006 Jussi Nikander 49537E jtn@cs.hut.fi 1 Johdanto Monilla opiskelijoilla on vaikeuksia oppia ohjelmoinnin perusteita ensimmäisellä yliopiston ohjelmointikurssilla. Erityisesti opiskelijat, joilla ei ole aikaisempaa ohjelmointikokemusta, tai joiden matemaattiset taidot ovat puutteellisia, ovat vaarassa pärjätä huonosti [7, 8]. Ongelmia aiheuttavat muun muassa ohjelmointikielten syntaksin opettamiseen tarvittava aika [1], opittavien konseptien, teorioiden ja käytäntöjen suuri lukumäärä [3], sekä ohjelmavirheiden aiheuttama epävarmuus ja tästä johtuva motivaation katoaminen [6]. Huonosti menestyvien opiskelijoiden tukemiseen on esitetty useita erilaisia ratkaisuja. Yksi tapa on järjestää ennen ensimmäistä ohjelmointikurssia esikurssi, jossa opetellaan ohjelmoinnin perusteita. Tällaisella kurssilla voidaan käyttää esimerkiksi ohjelmointikieltä muistuttavaa pseudokieltä [9] tai aloittelijalle helpommin lähestyttävää ohjelmointiympäristöä [8]. Joidenkin tutkimusten mukaan pseudokielen käyttö ei välttämättä helpota asioiden oppimista, vaan voi jopa lisätä aloittelijoiden vaikeuksia [4]. Ohjelmointiympäristöjen käytöstä on sen sijaan saatu paljon positiivisia kokemuksia. Aloittelijoille suunnatuissa ohjelmointiympäristöissä käytetään usein hyväksi visualisaatioita, joiden avulla joko kuvataan ohjelman rakennetta, tai havainnollistetaan sen toimintaa ajonaikaisesti. Monissa järjestelmissä on myös mahdollista tuottaa ohjelmakoodia manipuloimalla visualisaatioita; joissain järjestelmissä tämä on ainoa ohjelmakoodin tuottamistapa toisissa koodia on mahdollista myös kirjoittaa [2, 4]. Osa järjestelmistä käyttää visuaalisia ohjelmointikieliä termin varsinaisessa merkityksessä (ohjelmointikieli, jossa kontrollivuo määritellään vähintään kahdessa ulottuvuudessa) ja osa käyttää muita ohjelmistovisualisoinnin keinoja [1]. Tässä työssä käsitellään järjestelmiä, joissa ohjelmointia voidaan suorittaa visualisaatioita manipuloimalla, eikä pelkästään visuaalisia ohjelmointikieliä käyttäviä järjestelmiä. Työssä tarkastellaan kolmea ohjelmoinnin perusopetukseen suunniteltua järjestelmää, joissa käytetään visualisaatiota ohjelman rakenteen, ajonaikaisen toiminnan, tai koodin tuottamisen apuvälineinä. Tutkittavat järjestelmät ovat Alice [2], RAPTOR [1] ja ALVIS Live! [4]. Luvussa 2 esitellään järjestelmien analysoinnissa käytettävät mittarit ja luvussa 3 esitellään järjestelmät tarkemmin. Luvussa 4 verrataan järjestelmiä käytettävien mittarien avulla ja luku 5 sisältää loppukommentit. 2 Käytettävät mittarit Järjestelmiä voidaan vertailla lukuisten mittarien avulla. Tässä työssä käytetään kolmea mittaria: kirjallisuudesta löytyviä kriteerejä, järjestelmien testausta ja muiden saamia tutkimustuloksia. Mittareita ei käytetä asettamaan järjestelmiä paremmuusjärjestykseen, vaan niillä mitataan järjestelmien soveltuvuutta perusopetukseen. Kirjallisuudesta löytyi seuraavat kriteerit. 1

Helppojen virheiden välitön huomionti tai estäminen [1, 2, 4] Yksinkertainen, vasta-alkajalle ymmärrettävä syntaksi [2, 4] Välitön palaute koodin kirjoittamisen aikana [1, 4] Järjestelmien testauksen tarkoitus on evaluoida kuinka hyvin järjestelmää voidaan käyttää perusopetuksessa. Evaluaatiossa kiinnitetään huomiota seuraaviin ominaisuuksiin: helppo asennus, helposti opittava käyttöliittymä, dokumentaatio ja erityisesti järjestelmän tutoriaalit, käytetyn kielen ilmaisuvoima ja järjestelmän kattama aihealue. Ilmaisuvoimaa lukuunottamatta kriteerit on soveltuvin osin muokattu Korhosen ja muiden esittämästä vaivattoman algoritmanimaation taksonomiasta [5]. Valitut kriteerit ovat aivan yhtä relevantteja ohjelmoinnin perusopetuksessa käytettävissä järjestelmissä kuin algoritmivisualisaatiojärjestelmissäkin. Muiden tutkimustulokset etsitään kirjallisuudesta. Näitä tuloksia tutkitaan objektiivisesti, ja pyritään päättelemään mitä tuloksia oikein on saatu, ja ovatko nämä tulokset päteviä. 3 Tutkitut järjestelmät Työhön mukaan valittiin kolme järjestelmää, Alice, RAPTOR ja ALVIS Live!. Järjestelmät valittiin, koska ne ovat tarkoitettu nimenomaan ohjelmoinnin perusopetukseen, niitä on onnistuneesti käytetty tässä tarkoituksessa ainakin yhdessä yliopistotason oppilaitoksessa, käytöstä saatuja tuloksia on julkaistu, ja järjestelmät ovat vapaasti saatavilla. 3.1 Alice Alice [2] on aloittelijoille suunnattu kolmiulotteisen maailman mallinnusjärjestelmä, jossa käyttäjä manipuloi virtuaalimaailmassa olevia olioita visuaalisesti. Jokaisella oliolla on joukko metodeja, joiden avulla sitä voi käskyttää, ja siten luoda maailmaan animaatioita ja muuta toiminnallisuutta. Olioita käskytetään järjestelmän ohjelmaeditorissa, jossa koodia tuotetaan raahamalla varattuja sanoja, metodeja ja muita ohjelman osia koodi-ikkunaan. Kaikki koodin muuntelu tapahtuu hiiren avulla. Koodi muistuttaa tyypillistä oliokielen koodia, ja sisältää yleisimmät ohjelmarakenteet, kuten muuttujat, taulukot, silmukat ja ehtolauseet. Alice on suunnattu käyttäjille, joilla ei ole laisinkaan aikaisempaa ohjelmointikokemusta, eikä kovinkaan suurta kiinnostusta ohjelmoinnin oppimiseen. Alicen maailman käsittely ja siinä olevat oliot on pyritty tekemään mahdollisimman intuitiivisiksi käyttäjille, jotka eivät ole aikaisemmin ohjelmoineet. Esimerkiksi olioita käsketään suhteessa niiden sen hetkiseen sijaintiin ja suuntaan, eikä suinkaan mihinkään absoluuttiseen koordinaatistoon. Lähes kaikki maailmaan tehtävät käskyt animoidaan, ja järjestelmässä on kattavat aputoiminnot. Järjestelmän käyttöliittymä näkyy kuvassa 1. Tekijät uskovat, että Alicen kolmiulotteinen maailma, animaatioiden antama välitön palaute sekä helpot ohjelmointivirheet estävä graafinen ohjelmointiympäristö motivoivat huonosti pärjääviä opiskelijoita. Järjestelmää kehitettäessä on erityisesti otettu huomioon tyttöjen motivaation herättäminen 1. Järjestelmää on käytetty useissa yliopistoissa osana ohjelmoinnin opetusta, tyypillisesti joko ensimmäisen ohjelmointikurssin alussa tai erillisellä esikurssilla, jossa riskiopiskelijoille esitellään ohjelmoinnin perusteet [3, 8]. Raportoidut tulokset ovat olleet lupaavia, ja periteisillä ohjelmointikursseilla huonosti pärjäävät riskiryhmät ovat pärjänneet Alice-kursseilla, sekä Alicea käytettyään tavallisessa ohjelmoinnin opetuksessa. 1 http://www.alice.org/whatisalice.htm 2

Kuva 1: Kuvakaappaus Alice-järjestelmästä 3.2 RAPTOR RAPTOR [1] on ohjelmoinnin perusopetukseen kehitetty visuaalinen ohjelmointikieli, jossa ohjelman toiminta esitetään vuokaaviomaisesti. Kaavio muodostuu sijoituksista, metodikutsuista, syöttö- ja tulostuskäskyistä, ehtolauseista ja silmukoista. Jokainen RAPTOR-kaavion symboli sisältää yhden komennon. Käyttäjä voi ajaa valmista ohjelmaa jatkuvana animaationa, tai askel kerrallaan, jolloin järjestelmä näyttää jokaisella askeleella suoritettavan komennon sekä muuttujien tilan. Järjestelmä on kehitetty Yhdysvaltain ilmavoimien akatemiassa ohjelmoinnin perusopetukseen, ja se korvasi akatemian ensimmäisellä ohjelmointikurssilla Adan ja Matlabin. Järjestelmän tarkoitus on helpottaa ohjelmoinnin harjoittelua estämällä helppojen syntaksivirheiden teko sekä näyttämällä ohjelman kontrollivuo visuaalisemmin kuin tavanomaisissa kielissä. Järjestelmä näkyy kuvassa 2. Ohjelmointi RAPTORilla on yhdistelmä ohjelman graafista manipulaatiota ja parametrien kirjoittamista. Itse symboli ja sen paikka koodissa määritellään hiiren avulla, ja tarkka käsky, sen parametrit, yms., kirjoittamalla. Ohjelmasymboleissa käytetty syntaksi on yhdistelmä C-kielen ja Pascalin elementtejä, ja elementeillä voi olla useita synonyymejä. Esimerkiksi ehtolauseissa sekä C-tyylinen &&, että Pascal-tyylinen and merkkaa loogista jaoperaatiota. RAPTORin käyttöä on tutkittu yhdessä oppilaitoksessa, ja siitä on saatu hyvältä vaikuttavia tuloksia. Mitään tietoja järjestelmän käytöstä Yhdysvaltain ilmavoimien akatemian ulkopuolella ei ole. 3.3 ALVIS Live! ALVIS Live! [4] on visualisointijärjestelmä, jossa käyttäjä voi generoida ohjelmakoodia joko manipuloimalla objekteja graafisesti, tai normaalisti kirjoittamalla. Järjestelmän ohjelmointikieli on pseudokoodia suuresti muistut- 3

Kuva 2: Kuvakaappaus Raptor-järjestelmästä tava, algoritmien perusopetukseen kehitetty SALSA-kieli. ALVIS Live! on ensisijaisesti perusalgoritmien opetukseen tarkoitettu järjestelmä, mutta sitä voidaan käyttää myös ohjelmoinnin perusteiden opiskeluun. Kuvassa 3 näkyy järjestelmän käyttöliittymä. ALVIS Live! perustuu radikaalin dynaamiseen algoritmivisualisaatioon. Periaatteena on, että järjestelmä tuottaa algoritmianimaatiota sitä mukaa, kun ohjelmakoodia syötetään, ja pyrkii jatkuvasti pitämään animaation kursorin osoittamalla ohjelmakoodin rivillä. Täten, jos käyttäjä muuttaa kursorin paikkaa esimerkiksi nuolinäppäimien avulla, ajaa ALVIS Live! algoritmianimaatiota joko eteen tai taaksepäin. Järjestelmä tarkistaa koodin syntaksin jokaisen näppäimen painalluksen jälkeen, ja korostaa väärää syntaksia sisältävät rivit. Syntaksivirheiset rivit jätetään animaatiota tuotettaessa huomiotta. Järjestelmän visualisaatio tunnistaa kolme entiteettiä, joille on mahdollista suorittaa operaatioita. Entiteetit ovat muuttuja, taulukko ja indeksi. Muuttuja sisältää yhden lukuarvon, taulukko useita, ja indeksi on lukuarvo joka viittaa taulukon indeksiin. Entiteettejä on mahdollista luoda, muokata, verrata, vaihtaa päittäin ja niille on mahdollista tehdä matemaattisia perusoperaatioita. Tavallisten ohjelmointikäskyjen lisäksi järjestelmässä on myös animaatioon liittyviä operaatioita, kuten arvojen korostaminen, niiden sijainnin siirtäminen visualisaatiossa, ja niin edelleen. 4

Kuva 3: Kuvakaappaus ALVIS Live!-järjestelmästä ALVIS Livea on käytetty yhdessä yhdysvaltalaisessa yliopistossa ja järjestelmän käytöstä on saatu vasta alustavia tuloksia. Vaikuttaa kuitenkin siltä, että järjestelmästä on apua ohjelmoinnin perusopetuksessa, ja opiskelijoiden suhtautuminen siihen on ollut positiivinen. Laajempia, perusteellisia käyttäjätutkimuksia ei kuitenkaan ole vielä julkaistu. 4 Järjestelmien vertailua Kaikki kolme työhön valittua järjestelmää ovat selkeästi suunnattu tietotekniikan perusopetukseen. Niissä on kuitenkin suuria eroja, alkaen jo siitä, että ALVIS Live! vie levytilaa hiukan yli 6 megatavua ja Alice reilusti yli sata megatavua. Myös järjestelmien fokusalueissa, lähestymistavoissa ja yleisessä filosofiassa on valtavia eroja. Siten tässä tehtävä vertailu ei voi kertoa onko jokin tietty järjestelmä parempi kuin toinen. 4.1 Alice Alicessa kaikki koodimanipulaatio tehdään graafisesti ja järjestelmä ei hyväksy operaatioita, jotka tuottavat syntaktisesti rikkinäistä koodia. Alicen syntaksi on kohtuullisen yksinkertainen ja vasta-alkajakin voi oppia ymmärtämään sitä hyvin nopeasti. Esimerkiksi toiminnot saa suoritettua rinnakkain käskyllä DoTogether, ehtolause on nimeltään If/Else, ja niin edelleen. Järjestelmä antaa välitöntä palautetta koodin syntaktisesta oikeellisuudesta koodin tuottamisen aikana. Koodin semanttinen oikeellisuus on tarkistettava ajamalla koodi. Koodia voi ajaa samassa ympäristössä missä sitä muokataan. Alice toimii vain Windows -ympäristössä, mutta on äärimmäisen helppo asentaa. Järjestelmä on välittömästi käyttövalmis, kun jakelupaketin (zip-paketti) on purkanut, eikä mitään erillisiä asennusohjelmia tarvitse ajaa. Järjestel- 5

män käyttöliittymä on monipuolinen ja samalla monimutkainen. Siinä on suuri määrä erilaisia toimintoja ja käyttötiloja, joten aloittelijan saattaa olla vaikeaa päästä ohjelmaan sisään ilman apua. Dokumentaatio koostuu lähinnä tutoriaaleista, jotka opettavat järjestelmän käyttöä kädestä pitäen. Muu dokumentaatio on hyvin vähäistä, eikä auta järjestelmän opettelussa. Opettajan läsnäolo olisi suotavaa, kun aloittelija rupeaa järjestelmää ensimmäisen kerran käyttämään. Alice on suunnattu selkeästi olioohjelmoinnin opiskeluun. Kaikki Alice-maailmassa olevat asiat ovat olioita, joita voi käsitellä, joiden metodeja voi kutsua, ja joille voi ohjelmoida lisätoiminnallisuutta. Maailmaan tuotuja olioita voi Alicessa manipuloida hyvin monipuolisesti. Järjestelmän ilmaisuvoima kuitenkin rajoittuu vain sen sisältämään 3-ulotteiseen maailmaan ja tähän maailmaan tehtyihin olioihin. Mihinkään maailman ulkopuoliseen järjestelmä ei voi vaikuttaa. Alicessa on vielä bugeja, joista osaa voi pitää hyvinkin vakavina. Järjestelmä esimerkiksi tukee taulukoita ja niiden käyttöä, mutta tuki ei toimi kunnolla. Taulukot toimivat hyvin niin kauan, kuin niistä luetaan arvoja, ja niihin tallennetaan suoria olioviittauksia tai arvoja. Muuttujan arvon tallentaminen taulukkoon aiheuttaa kuitenkin ajonaikaisen virheen, ja kaataa maailmasimulaation. Alicen hyödystä ohjelmoinnin perusopetuksessa on julkaistu useita tutkimuksia [2, 3, 6, 8]. Tyypillisesti tulokset tuntuvat olevan positiivisia. Useimmissa tutkimuksissa kuitenkin keskitytään antamaan riskiryhmässä oleville opiskelijoille ylimääräisiä ohjelmointiharjoituksia Alicen avulla, joten tutkimuksista ei voi selvittää johtuvatko paremmat tulokset Alicen käytöstä vaiko ylimääräisestä harjoittelusta. 4.2 RAPTOR Toistuvista yrityksistä huolimatta RAPTOR-järjestelmää ei saatu asennettua. Ilmeisestikin jakelupaketin mukaan liitetty Microsoftin.NET -sovelluskehys oli rikki, koska järjestelmän asennus keskeytyi aina.net:n asennukseen. Täten RAPTORin evaluaatio on tehty puhtaasti järjestelmästä julkaistun raportin perusteella. RAPTOR-koodia tuotetaan lisäämällä vuokaaviomaiseen visualisaatioon uusia käskyjä hiirellä ja antamalla näiden tarkat parametrit näppäimistön kautta. Järjestelmä tarkastaa jokaisen käskyn syntaktisen oikeellisuuden ja siten estää käyttäjää tekemästä syntaksivirheitä. Järjestelmän tekijöiden mukaan käytetty kieli muistuttaa käskyiltään jonkin verran C-kieltä ja Pascalia, ja useille käskyille on olemassa monia synonyymejä. Järjestelmää testaamatta on kuitenkin mahdotonta sanoa mitään siitä, kuinka yksinkertainen tai intuitiivinen käytetty kieli on. Syntaktinen oikeellisuus tarkastetaan koodin muokkaamisen aikana, ja semanttisen oikeellisuuden voi tarkastaa ajamalla koodi. Koodia voi ajaa muokkausympäristössä. Julkaisuista voidaan päätellä, että RAPTOR on ainakin tarkoitus olla yleiskäyttöinen ohjelmointikieli, joten sen ilmaisuvoima on luultavasti suuri. Saattaa olla, että RAPTORilla on mahdollista tuottaa RAPTOR-tulkki. RAPTORin käytöstä opetuksessa on julkaistu yksi tutkimus. Tutkimuksessa verrattiin kahden eri vuosikurssin tuloksia ensimmäisellä ohjelmointikurssilla: toisena vuonna käytettiin perinteisiä ohjelmointityökaluja ja toisena RAPTORia. RAPTORin avulla saatiin hiukan parempia tuloksia, mutta mitään tilastollisia laskelmia ei tuloksista tehty. Tulosten perusteella ei myöskään voi päätellä onko RAPTOR parempi kuin perinteiset menetelmät, vai johtuiko arvosanojen lievä nousu jostain muista syistä. 4.3 ALVIS Live! ALVIS Live! esittää kaikki ohjelmakoodin rivit, joissa on syntaksivirheitä, punaisella. Syntaksivirheitä sisältäviä rivejä ei huomioida algoritmia animoitaessa, joten huolimaton ohjelmoija voi järjestelmällä tehdä yksinkertaisiakin virheitä. Järjestelmä kuitenkin varoittaa näistä selkeästi. Järjestelmän käyttämä SALSA-kieli on hyvin yksinkertainen ja muistuttaa rakenteeltaan suuresti englantia. Kielessä on eri komentoja alle 20, joten koko kielen voi opetella hyvin helposti. Järjestelmässä on myös mahdollista 6

tehdä yksinkertaista ohjelmointia pelkän hiiren avulla, joten ALVIS Live! on mitä luultavimmin helppo noviisinkin oppia. Järjestelmä evaluoi koodia sitä mukaan kun sitä tuotetaan, ja pyrkii aina pitämään tuotettavan algoritmianimaation ohjelmakoodin kursorin osoittamalla rivillä, joten käyttäjä saa järjestelmältä jatkuvasti välitöntä palautetta. ALVIS Live! toimii vain Windows-ympäristössä ja on helppo asentaa. Jakelupakettiin kuuluu asennusohjelma, jonka käyttö on hyvin yksinkertaista. Asennusohjelma lisää järjestelmän kuvakkeen työpöydälle ja käynnistysvalikkoon. Käyttöliittymä on yksinkertainen, ja jokaisesta sen ominaisuudesta on hiiren vieressä leijuva infolaatikko. Dokumentaatio on riittävä, ja siihen kuuluu tutoriaali, joka opettaa järjestelmän perusteet. Käytetyn SALSA-kielen ilmaisuvoima on kuitenkin hyvin rajoittunut. Kieli ei sisällä ollenkaan funktiokutsuja, joten sillä ei voi tehdä kuin hyvin yksinkertaisia operaatioita. Myös käytetty visualisaatio on yksinkertainen, ja käytännössä järjestelmällä voi tehdä vain iteratiivisia taulukkoalgoritmeja. Taulukkoalgoritmien perusteiden opetukseen järjestelmä voi olla riittävä, mutta muuhun sitä ei kannata käyttää. Järjestelmä on vielä selvästikin keskeneräinen, ja siinä on useita virheitä. Esimerkiksi visualisaatioiden ominaisuuksien muuttamiseen tarkoitetun ikkunan sulkeminen cancel-käskyllä voi joskus kaataa koko järjestelmän. Pahimmassa tapauksessa järjestelmä kaatuu niin vakavasti, että se on poistettava koneelta ja asennettava uudestaan. ALVIS Liven käytöstä opetuksessa on julkaistu yksi alustavia tuloksia sisältävä paperi. Artikkelin mukaan järjestelmä on auttanut opettamaan ohjelmoinnin perusteita. Tulokset ovat kuitenkin vasta pienestä pilottiprojektista saatuja alustavia tuloksia, joten niistä ei voi sanoa mitään lopullista. 5 Lopuksi Tässä paperissa evaluoitiin kolme ohjelmoinnin perusopetukseen tarkoitettua järjestelmää: Alice, RAPTOR ja AL- VIS Live!. Näistä järjestelmistä Alice on laajasti käytetty, ja sen hyöty perusopetuksessa on ainakin jossain määrin onnistuttu todistamaan. Alice on kohtuullisen vakaa ja monipuolinen RAPTORia ei toistuvista yrityksista huolimatta saatu asennettua, joten sitä ei voitu testata. Dokumentaation perusteella RAPTOR kuitenkin saattaa vastata ilmaisuvoimaltaan perinteisiä ohjelmointikieliä, joten sillä saattaisi olla käyttöä ohjelmoinnin opetuksessa laajemminkin. ALVIS Live! vaikuttaa lupaavalta, mutta on ainakin toistaiseksi hyvin rajoittunut. Viitteet [1] M. C. Carlisle, T. A. Wilson, J. W. Humphries, and S. M. Hadfield. Raptor: a visual programming environment for teaching algorithmic problem solving. In SIGCSE 05: Proceedings of the 36th SIGCSE technical symposium on Computer science education, pages 176 180, New York, NY, USA, 2005. ACM Press. [2] M. Conway, S. Audia, T. Burnette, D. Cosgrove, and K. Christiansen. Alice: lessons learned from building a 3d system for novices. In CHI, pages 486 493, 2000. [3] S. Cooper, W. Dann, and R. Pausch. Teaching objects-first in introductory computer science. In SIGCSE 03: Proceedings of the 34th SIGCSE technical symposium on Computer science education, pages 191 195, New York, NY, USA, 2003. ACM Press. [4] C. Hundhausen and J. L. Brown. What you see is what you code: a radically dynamic algorithm visualization development model for novice learners. In 2005 IEEE Symposium on Visual Languages and Human-Centric Computing, pages 163 170, September 2005. [5] P. Ihantola, V. Karavirta, A. Korhonen, and J. Nikander. Taxonomy of effortless creation of algorithm visualizations. In ICER 05: Proceedings of the 2005 international workshop on Computing education research, pages 123 133, New York, NY, USA, 2005. ACM Press. [6] A. J. Ko. Preserving non-programmers motivation with error-prevention and debugging support tools. In HCC, pages 271 272, 2003. 7

[7] M. Morrison and T. S. Newman. A study of the impact of student background and preparedness on outcomes in cs i. In SIGCSE 01: Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education, pages 179 183, New York, NY, USA, 2001. ACM Press. [8] B. Moskal, D. Lurie, and S. Cooper. Evaluating the effectiveness of a new instructional approach. SIGCSE Bull., 36(1):75 79, 2004. [9] R. L. Shackelford and R. J. L. Jr. Introducing computer science fundamentals before programming. In Frontiers in Education Conference, 1997. 27th Annual Conference, volume 1, pages 285 289, November 1997. 8