ArticlePDF Available

Visuaalinen ohjelmointi tietotekniikan perusopetuksessa

Authors:
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 puut-
teellisia, 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ä ohjel-
mavirheiden aiheuttama epävarmuus ja tästä johtuva motivaation katoaminen [6].
Huonosti menestyvien opiskelijoiden tukemiseen on esitetty useita erilaisia ratkaisuja. Yksi tapa on järjestää en-
nen ensimmäistä ohjelmointikurssia esikurssi, jossa opetellaan ohjelmoinnin perusteita. Tällaisella kurssilla voi-
daan 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 op-
pimista, 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 ohjelma-
koodin 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är-
jestelmiä, joissa ohjelmointia voidaan suorittaa visualisaatioita manipuloimalla, eikä pelkästään visuaalisia ohjel-
mointikieliä käyttäviä järjestelmiä.
Työssä tarkastellaan kolmea ohjelmoinnin perusopetukseen suunniteltua järjestelmää, joissa käytetään visualisaa-
tiota 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 mit-
tarit 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: kirjallisuudes-
ta 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. Kirjalli-
suudesta 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. Eva-
luaatiossa kiinnitetään huomiota seuraaviin ominaisuuksiin: helppo asennus, helposti opittava käyttöliittymä, do-
kumentaatio 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 vir-
tuaalimaailmassa 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 ohjelmaedito-
rissa, 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 oh-
jelmarakenteet, 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 mah-
dollisimman intuitiivisiksi käyttäjille, jotka eivät ole aikaisemmin ohjelmoineet. Esimerkiksi olioita käsketään suh-
teessa 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öliit-
tymä näkyy kuvassa 1.
Tekijät uskovat, että Alicen kolmiulotteinen maailma, animaatioiden antama välitön palaute sekä helpot ohjelmoin-
tivirheet estävä graafinen ohjelmointiympäristö motivoivat huonosti pärjääviä opiskelijoita. Järjestelmää kehitet-
tä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 ohjel-
mointikurssin 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.
1http://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ä, ehto-
lauseista 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 aka-
temian 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 sym-
boli ja sen paikka koodissa määritellään hiiren avulla, ja tarkka käsky, sen parametrit, yms., kirjoittamalla. Oh-
jelmasymboleissa 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 ja-
operaatiota.
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 ob-
jekteja 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 ope-
tukseen 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 kurso-
rin 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 jo-
kaisen 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 viit-
taa taulukon indeksiin. Entiteettejä on mahdollistaluoda, muokata, verrata, vaihtaapä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 kui-
tenkin 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 syn-
taktisesti rikkinäistä koodia. Alicen syntaksi on kohtuullisen yksinkertainen ja vasta-alkajakin voi oppia ymmär-
tä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 oikeellisuudes-
ta 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äyt-
tö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äyt-
tö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ää hyvinkinvakavina. Järjestelmä esimerkiksitukee taulukoita ja niiden
käyttöä, mutta tuki ei toimi kunnolla. Taulukot toimivat hyvin niin kauan, kuin niistä luetaan arvoja, ja niihin tallen-
netaan 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 tulok-
set 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 lie 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. Kie-
lessä 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 noviisin-
kin oppia. Järjestelmä evaluoi koodia sitä mukaan kun sitä tuotetaan, ja pyrkii aina pitämään tuotettavan algo-
ritmianimaation 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äynnistysva-
likkoon. 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 riit-
tävä, mutta muuhun sitä ei kannata käyttää.
Järjestelmä on vielä selvästikin keskeneräinen, ja siinä on useita virheitä. Esimerkiksi visualisaatioiden ominai-
suuksien muuttamiseen tarkoitetun ikkunan sulkeminen cancel-käskyllä voi joskus kaataa koko järjestelmän. Pa-
himmassa 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är-
jestelmä 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 huoli-
matta saatu asennettua, joten sitä ei voitu testata. Dokumentaation perusteella RAPTOR kuitenkin saattaa vastata
ilmaisuvoimaltaan perinteisiä ohjelmointikieliä, joten sillä saattaisi olla käyttöä ohjelmoinnin opetuksessa laajem-
minkin. 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 environ-
ment 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 visua-
lizations. 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
ResearchGate has not been able to resolve any citations for this publication.
Article
Full-text available
The idea of using visualization technology to enhance the understanding of abstract concepts, like data structures and algorithms, has become widely accepted. Several attempts have been made to introduce a system that levels out the burden of creating new visualizations. However, one of the main obstacles to fully taking advantage of algorithm visu-alization seems to be the time and effort required to design, integrate and maintain the visualizations. Effortlessness in the context of algorithm visualization is a highly subjective matter including many factors. Thus, we first introduce a taxonomy to characterize effortlessness in algorithm visualization systems. We have identified three main categories based on a survey conducted among CS ed-ucators: i) scope, i.e. how wide is the context one can apply the system to ii) integrability, i.e., how easy it is to take in use by a third party, and iii) interaction techniques, i.e., how well does the system support different use cases regu-larly applied by educators. We will conclude that generic and effortless visualization systems are needed. Such a sys-tem, however, needs to combine a range of characteristics implemented in many current AV systems.
Conference Paper
Full-text available
This paper describes the evaluation of an NSF-sponsored educational research project. The primary focus of this project was to develop and evaluate a course curriculum designed to improve retention and performance for "at risk" introductory computer science majors. The results of this research suggest that the newly developed course and curriculum materials did improve students' performance and retention in computer science and their attitudes towards computer science.
Conference Paper
Full-text available
A study that assesses the significance of student background characteristics on outcomes in a depth-first CS I course is presented. The study was conducted over a two-year period and involved more than 400 students in fourteen different course sections taught by eight different instructors in a CSAC-accredited program. In this paper, focus is on the impact of prior programming courses on CS I outcomes. In particular, the impact of the prior course's programming language and provider is reported.
Conference Paper
Full-text available
When students are learning to develop algorithms, they very often spend more time dealing with issues of syntax rather than solving the problem. Additionally, the textual nature of most programming environments works against the learning style of the majority of students. RAPTOR is a visual programming environment, designed specifically to help students envision their algorithms and avoid syntactic baggage. RAPTOR programs are created visually and can be executed visually by tracing the execution through the program. Required syntax is kept to a minimum. Students preferred expressing their algorithms visually, and were more successful creating algorithms using RAPTOR than using a traditional language or writing flowcharts.
Article
Full-text available
An objects-first strategy for teaching introductory computer science courses is receiving increased attention from CS educators. In this paper, we discuss the challenge of the objectsfirst strategy and present a new approach that attempts to meet this challenge. The new approach is centered on the visualization of objects and their behaviors using a 3D animation environment. Statistical data as well as informal observations are summarized to show evidence of student performance as a result of this approach. A comparison is made of the pedagogical aspects of this new approach with that of other relevant work.
Article
Full-text available
The traditional approach to introducing students to Computer Science has been through a course built around the development of programming skills. While many textbooks intended for such courses include the words "Problem Solving" in their titles, the primary focus of most such courses is the skill of programming in a particular programming language. Computer scientists will quickly proclaim that the discipline is more than just programming, but our typical introductory courses fail to provide students with any conceptual foundation of computer science as a domain of study. In addition, the "programming-first" approach ignores the practical reality that increasing powerful application-oriented software packages have become the tools of choice for solving many computation problems. In this paper, we describe a two course sequence that has been taught to majors in computer science and a variety of other disciplines for the last four years. The first course is called "Introduction to Com...
Conference Paper
A significant challenge in teaching programming to disadvantaged populations is preserving learners' motivation and confidence. Because programming requires such a diverse set of skills and knowledge, the first steps in learning to program can be highly error-prone, and can quickly exhaust whatever attention learners are willing to give to a programming task. Our approach to preserving learners' motivation is to design highly integrated support tools to prevent the errors they would otherwise make. In this paper, the results of a recent study on programming errors are summarized, and many novel error-preventing tools are proposed.
Conference Paper
We present lessons learned from developing Alice, a D graphics programming environment designed for undergraduates with no D graphics or programming experience. Alice is a Windows 95/NT tool for describing the time-based and interactive behavior of 3D objects, not a CAD tool for creating object geometry. Our observations and conclusions come from formal and informal observations of hundreds of users. Primary results include the use of LOGO-style egocentric coordinate systems, the use of arbitrary objects as lightweight coordinate systems, the launching of implicit threads of execution, extensive function overloading for a small set of commands, the careful choice of command names, and the ubiquitous use of animation and undo.
Conference Paper
Pedagogical algorithm visualization systems produce graphical representations that aim to assist learners in understanding the dynamic behavior of computer algorithms. In order to foster active learning, educators have explored algorithm visualization systems that empower learners to construct their own visualizations of algorithms under study. Notably, these systems support a similar development model in which coding the algorithm is temporally distinct from viewing and interacting with the resulting visualization. To explore the benefits of narrowing the gap between coding an algorithm and viewing its visualization, we have implemented "What You See Is What You Code", a novel, "radically dynamic" development model to facilitate learner-constructed algorithm visualizations. In this model, the line of algorithm code currently being edited is reevaluated on every edit, leading to the dynamic update of an accompanying visualization of the algorithm. Analysis of usability studies involving introductory computer science students suggests that the immediacy of the model's feedback can help novices to quickly identify and correct programming errors, and ultimately to understand their code's execution.
Conference Paper
In this paper, we describe a two course sequence that has been taught to majors in computer science and a variety of other disciplines. The first course is called “Introduction to Computing”; the second course is “Introduction to Programming”. The “Computing” course is a ten-week course that includes material on the following: the “computing perspective” (the algorithmic model as a way of thinking); foundational concepts underlying program design and implementation, including: algorithmic methods, static and dynamic data structures, and design using abstraction; fundamental notions of algorithm analysis and computability; and use of application tools such as e-mail, Web browsers, word processors, spreadsheets, databases, and equation solvers. Building on this foundational pre-programming material, students in the “Programming” course are able to learn rapidly the skills in program design, implementation, and debugging necessary to solve computational problems in a high-level programming language. We emphasize effective use of abstraction and the acquisition of software development skills that are language independent. Our experience with these courses has convinced us that it is possible to introduce the conceptual foundations of computer science to beginning students in a way that both engages them and gives them a basis for learning advanced ways to solve problems using computing, either via programming or through use of modern, highly-programmable commercial applications