Yleisiä ohjeita visualisointien käyttöönotosta ohjelmointikurssilla

Samankaltaiset tiedostot
Naps ja Bloom teollisuusrobotiikan Peda-Forum,

Ohjelmointi 1 / syksy /20: IDE

11/20: Konepelti auki

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

Koulussamme opetetaan näppäilytaitoa seuraavan oppiaineen yhteydessä:

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

KTKO104. Luento

Sähköinen matematiikan ja ohjelmoinnin opintopolku alakoulusta yliopistoon. Mikko Lujasmaa, Salon lukio Mikko-Jussi Laakso, Turun yliopisto

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Pitkän matematiikan kertauskurssi *STACKjärjestelmän

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

Alkukartoitus Opiskeluvalmiudet

Wikit + opetuskäyttö - mahdoton yhtälö?

Mitä on kontaktiopetus?

T harjoitustehtävät, syksy 2011

T Ohjelmistotekniikan seminaari

Savonlinnan ammatti- ja aikuisopiston vieraiden kielten opetusta verkossa ja integroituna ammattiaineisiin. Johanna Venäläinen

Opetuksen ja opiskelun tehokas ja laadukas havainnointi verkkooppimisympäristössä

Flipped classroom (2op) Käänteinen opetus/luokkahuone Lähipäivä

LAS- ja ilmakuva-aineistojen käsittely ArcGIS:ssä

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmoinnin peruskurssien laaja oppimäärä

13/20: Kierrätys kannattaa koodaamisessakin

C-ohjelmointikielen perusteet, osa 1

Googlen pilvipalvelut tutuksi / Google Drive

Aktivoivat opetusmenetelmät opiskelijoiden kokemana

Edtech kestää aikaa!

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

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

Opiskelun aloitusvuosi:

Kaikki koulutus verkossa - tekniikka ja pedagogiikka kouluttajan apuna. Case MKFC

Myös opettajaksi aikova voi suorittaa LuK-tutkinnon, mutta sillä ei saa opettajan kelpoisuutta.

Ohjelmointi 1. Kumppanit

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Tietoyhteiskunnan perustaidot. Kesäkuu 2014

ES01-KA

Suvi Junes/Pauliina Munter Tampereen yliopisto / tietohallinto 2014

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

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

How to Support Decision Analysis with Software Case Förbifart Stockholm

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

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

Jype visualisointi ja automaattinen arviointi ohjelmoinnin opetuksessa

17/20: Keittokirja IV

Tärkeää huomioitavaa:

Näkökulmia tietoyhteiskuntavalmiuksiin

8/20: Luokat, oliot ja APIt

NPH ja NPJ kurssien tiedonhaun koulutukset informaatikkonäkökulmasta

Ohjelmoinnin perusteet Y Python

5. HelloWorld-ohjelma 5.1

enorssi Annele Laaksonen, KT TY/ TNK

Laske Laudatur ClassPadilla

Trakla2-opetusympäristö

TVT- OPETUSHARJOITTELUSSA Markku Lang

WebALT Matematiikan harjoitustehtävät

Teknologiset valinnat

A11-02 Infrapunasuodinautomatiikka kameralle

KTKO104 Tieto- ja viestintätekniikka. 2. Luento - Opetussuunnitelma 2014 Tiistai

Laske Laudatur ClassPadilla

T harjoitustyö, kevät 2012

OpasOodi Opintokohteiden muokkaus

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Rouhia Oy:n nopea kokeilu Babel Fish Helsingin kouluissa Helsingin koulujen nopeiden kokeilujen ohjelma II, kevätlukukausi 2019

Käyttöliittymän suunnittelu tilastotieteen verkko-opetukseen. Jouni Nevalainen

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Osallistuin luennoille, n=16

KTKO104 Tieto- ja viestintätekniikka. 2. Luento - Opetussuunnitelma ja TVT Tiistai

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Hyvä 3D-tuotekuva ja video ilmentävät tuotteen tarkoituksen ja antavat oikeutta sen muotoilulle.

ARVO - verkkomateriaalien arviointiin

emenetelmäopinnot Sessio Metodifestivaalit 2015 Tampere

1. Olio-ohjelmointi 1.1

4. Lausekielinen ohjelmointi 4.1

ITKP102 Ohjelmointi 1 (6 op)

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Aineenopettajien erikoistyö Sisällönsuunnittelu, kevät 2010

Pauliina Munter / Suvi Junes Tampereen yliopisto/tietohallinto 2013

Kotitalon kotisivut Taloyhtiosivut.fi palveluna omalle taloyhtiölle

Ohjelmoinnin peruskurssi Y1

OHJ-7400 Graafisen käyttöliittymän ohjelmointi 4/6op

Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla Petri Salmela & Petri Sallasmaa

SUOMI L3-KIELEN OSAAMISTASON KUVAUKSET yläkoulu ja lukio

järjestelmän hankintaan

KOULUTUSJÄRJESTELMÄN TULEVAISUUDEN KEHITTÄMISTARPEET

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

KOULUTTAJAKOULUTUS (20 op)

OHJELMA Styling & unstyling with Tim Clinch La 6.- Su , Helsinki ja Kirkkonummi

OPPIKIRJATON OPETUS! Kari Nieminen!! Tampereen yliopiston normaalikoulu!! ITK 2015!

Trialogisen oppimisen suunnitteluperiaatteet

Opetuksen suunnittelun lähtökohdat. Keväällä 2018 Johanna Kainulainen

Työkalut ohjelmistokehityksen tukena

Transkriptio:

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 visualisointeja ja niiden tekemiseen käytettäviä työkaluja. Tarkoituksena on tuoda ilmi seikkoja, jotka tulisi ottaa huomioon otettaessa käyttöön kurssimateriaalin oheen visualisointityökalu tai kokonaan uutta työkalua suunniteltaessa. Tämä on tärkeää, jotta visualisointiesimerkkien käyttö kurssilla ei jää vain mielenkiintoiseksi kokeiluksi vaan, että opiskelijat kokevat voivansa käyttää visualisointeja tukimateriaalina pitkin kurssia. Teksti on tehty muutaman kirjallisuuslähteen pohjalta sovellettuna TTY:llä saatuun kokemukseen VIP työkalun (http://www.cs.tut.fi/~vip) käyttöönotosta saatuihin kokemuksiin ohjelmoinnin peruskursseilla. Tarkoituksena on siis helpottaa niitä ongelma, jotka ovat liittyneet jo olemassa olevien visualisointien käyttöönottoon. Näitä ovat [1]: Hyvien esimerkkien hakemiseen kuluva aika Uuden työkalun opetteluun kuluva aika Visualisoinnin tekemiseen kuluva aika Kunnollisten kehitystyökalujen puute Aika, joka opettajalta kuluu visualisointien liittämiseksi omaan opetuslähestymistapaan ja/tai kurssimateriaaliin.

Suositeltavia ominaisuuksia Alustariippumattomuus Mahdollisimman suuren yleisön tavoittamiseksi ohjelman pitäisi toimia erilaisissa työympäristöissä samalla tavoin. Hyvä vaihtoehto sille, että erikseen ylläpidetään eri versioita eri käyttöjärjestelmillä, on työkalun jakelu JavaApplettina, tai ohjelmana. Virtuaalikoneella vältetään eri alustojen ongelmat. Näistä kahdesta verkossa kotisivuilla pyörivä JavaAppletti on käyttäjän kannalta helppokäyttöisempi ja vaivattomampi, mutta ongelmana on estetty pääsy paikallisiin tiedostoihin kuten mahdollisiin aputeksteihin. JavaAppletin ympärille on kuitenkin rakennettava riittävän kattavat WWW sivut, joista kaikki tarvittava opastus on löydettävissä. [1] [2] Hyvä käytettävyys Sekä opiskelijan että opettajan kynnys käyttää visualisointityökalua joko itseopiskeluun tai oman opetuksensa tukena voi olla korkea. Jos työkalu vaikuttaa epäselvältä ja sen opettelemiseen kuluu aikaa, voi moni opiskelija turhautua ennen kuin saa mitään hyötyä koko työkalusta. Turhautumista aiheuttaa eritoten myös käyttöönottoon kuluva aika, joka koostuu työkalun löytämisestä, lataamisesta, asennuksesta ja opettelusta. Opettajan tapauksessa aikaa kuluu lisäksi visualisointiesimerkkien suunnitteluun ja sovittamiseen omaan opetusmateriaaliin, työkalun opettamiseeen opiskelijoille sekä ylläpitoon. [1] Käyttöönottoon kuluvaa aikaa voidaan opiskelijan osalta helpottaa JavaAppletin avulla, joka ei vaadi latausta tai asennusta. Helposti ja nopeasti tehtävät esimerkit Opettajan ajankäytön minimoimisessa esimerkkien toteutukseen kuluvalla ajalla on valtava merkitys. Opetuksen kannalta esimerkkien määrällä on iso merkitys, joten niiden toteuttamisen on oltava yksinkertaista ja nopeaa. Paras ratkaisu tähän on visualisointityökalun rakentaminen tulkin päälle, jolloin itse esimerkkikoodin voi kirjoittaa sellaisenaan ohjelmointikielellä. Koodirivejä ennen lisätään erityisiä tulkin ymmärtämiä ohjetekstejä, jotka sitten näytetään opiskelijalle samaista koodiriviä ajettaessa. Näin esimerkin voi kirjoittaa samaan tapaan kuin kyseisen koodinpätkän esittelisi opiskelijoille: koodia pala kerrallaan ja samalla siihen liittyvä selitys. Käyttäjän mahdollisuus vaikuttaa esimerkkeihin Sen sijaan, että visualisoitaisiin aina samaa esimerkkiä samoilla syötteillä, tulisi

käyttäjän pystyä käyttäjän antamaan myös omia syötteitä esimerkkeihin. Tämänkin voi toteuttaa kahdella tasolla: Käyttäjän tulisi vähintään pystyä antamaan johonkin yksittäiseen esimerkkiin esim. omia lukuja syötteenä, jotka vaikuttavat esimerkin lopputulokseen. Asian ymmärtäminen helpottuu, kun samaa esimerkkiä voi ajaa useaan kertaan ja eri syötteillä. Laajemmin käyttäjän syötteiden sallimisen voi toteuttaa antamalla käyttäjän syöttää omaa koodia koodieditorin avulla. Koodin lisäämiseksi työkalun pitää olla tulkkipohjainen. Tämänkin voi toteuttaa kahdella tavalla: Käyttäjä voi muokata olemassaolevaa koodia kokonaisuudessaan, vaikka kokonaan omaksi koodikseen ja katsoa ohjelman animoivan sitä. Toinen vaihtoehto on antaa käyttäjän muokata tiettyä osaa koodista tehtävämuotoisesti, esim. Muuta silmukan sisältöä siten, että se lopettaa, kun taulukko on järjestyksessä. Tehtävämuotoisista esimerkeistä opiskelijalle on annettava palautetta sekä onnistumisesta että eritoten epäonnistuttaessa siihen johtaneet syyt ja vinkkejä korjaamiseen olisi syytä antaa. Useat samanaikaiset näkymät Esimerkkiä tulisi voida katsoa samanaikaisesti useasta eri näkymästä [3]: koodin kulku, muistin tila, suorituskohtaan liittyvät ohjeet, tulosteikkuna, lausekkeiden evaluointi ikkuna yms. Useat näkymät tukevat kokonaisvaltaista ymmärtämistä ja ottavat huomioon eri tavoin oppivat ihmiset. Esimerkiksi ohjelman muistissa tapahtuvat animaatiot tukevat visualisesti oppivia, kun toisaalla suorituskohtaan liittyvät selitykset tukevat niitä ihmisiä, joiden on helpompi oppia tekstistä lukemalla. Yhtenevyys muuhun materiaaliin Valmiiden esimerkkien liittäminen omaan opetusmateriaaliin voi olla vaikeaa erilaisista lähestymistavoista johtuen. Opettaja joutuu siis mitä todennäköisimmän tukeutumaan itse tehtyihin esimerkkeihin, jolloin edelleen korostuu esimerkkien teon helppous ja nopeus. Itse esimerkkien lisäksi tärkeä osa omaan materiaaliin liittämisessä on myös itse animoinneilla. Monet ohjelmointia opettavat luennoidessaan edesauttavat ymmärtämistä visualisoimalla opetettavaa asiaa piirtämällä kuvia tietorakenteista käsin. Mitään yhtenevää kuvauskieltä tähän ei kuitenkaan, ainakaan yleisesti, ole käytössä, ja eri opettajat yleensä animoivat tietorakenteita nimenomaan aiempia, esim. kirjallisuudessa esiintyneitä, tapoja parhaaksi katsomallaan tavalla soveltaen. Esimerkkinä kuvassa 1 muutamia eri tapoja kuvata nollaosoitinta.

Kuva 1 Erilaisia tapoja esittää nollaosoitin graafisesti Jos kurssilla on tarkoitus käyttää opetuksen apuna jotain visualisointityökalua, on kuitenkin tärkeää, että samat piirrosnotaatiot ovat käytössä sekä opetuksessa käsin piirrettynä, että visualisointityökalussa. Siten visualisointityökalun käyttämä piirrosnotaatio on syytä dokumentoida hyvin. Toinen yhtenevyysseikka muun materiaalin kanssa on ohjelmointityyli. Erityisesti ensimmäisellä ohjelmointikurssilla opiskelijoilla on tapana sovelletusti matkia oppimateriaalia syvemmän ymmärtämisen sijasta. Jos visualisointiesimerkkien tyyliseikat eriävät muusta materiaalista, on hämmennyksen vaara ilmeinen. Pientenkin yksityiskohtien, kuten palautetaanko pääohjelmasta arvo 0 vai EXIT_SUCCESS tulisi olla yhteneviä. Selkeät esimerkit Yksittäisen esimerkin tulisi keskittyä demonstroimaan yksittäistä asiaa. Jos esimerkki on liian monimutkainen ja pitkä, voi opiskelija kyllästyä esimerkin läpikäyntiin tai olla huomaamatta osaa tärkeistä asioista. Esimerkin yhteydessä on myös selvästi kerrottava, mitä esimerkin on tarkoitus demonstroida ja mihin sitä läpikäydessä kannattaa kiinnittää huomiota. Esimerkkikoodien, joiden tarkoituksena on demonstroida esimerkiksi vain jotakin tiettyä rakennetta tai kielen erikoistapausta, ei tarvitse olla sellaisia, että aina ratkaisisivat jonkun hyödyllisen ongelman. On tietenkin hyvä, että koodi on hyödyllistä (kuten karkausvuoden tarkastelu), mutta tällaisen kytköksen vaatiessa esimerkin pituuden reilua kasvattamista on syytä kyseenalaistaa, saavutetaanko tällä mitään erityistä hyötyä mielekkyydessä suhteessa siihen, että esimerkin varsinainen opetuksellinen tavoite voi jäädä jopa saavuttamatta. Saman asian eri oppimisvaiheiden tukeminen Perusohjelmointikursseilla visualisointeja käytetään yleensä vain esittelemään uusia asioita perusteellisesti, jolloin niiden käyttötarkoitus on lähinnä luentojen syvällisempi, opiskelijan omaan tahtiin tapahtuva kertaaminen. Koko kurssin kannalta tämä jättää kuitenkin mahdolliset visualisointien käyttötilanteet kuitenkin kohtalaisen vähäiseksi. Ymmärrettyään tietyn asian, ei opiskelijalle enää ole mielekästä käyttää

visualisointeja koskien kyseistä asiaa. Näiden esittelevien esimerkkien lisäksi tarjoamalla opiskelijalle myös visualisointeja, jotka vaativat paljon enemmän osallistumista, tuetaan myös ymmärtämisen jälkeistä oppimista. [4] Enemmän oppimista vaativat visualisoinnit voivat olla esim. tehtäviä, missä opiskelijan täytyy muuttaa valmiiksi visualisoitua koodia tai analysoida, mitä joku monimutkaisempi koodinpätkä tekee. Tällaiset tehtävät on myös mahdollista integroida osaksi kurssin viikottaisia viikkoharjoituksia. Lähteet [1] iticse 2003 working group reports: Evaluating the Educational Impact of Visualization, T. Naps et al., SIGCSE Bulletin, June 2003 [2] A Testbed for Pedagogical Requirements in Algorithm Visualizations, G. Rössling, and T. Naps, ITiCSE '02, June 2002 [3] ITiCSE 2002 working group report: Exploring the Role of Visualization and Engagement in Computer Science Education, Naps et al. SIGCSE Bulletin, June 2002 [4] Visualizations to Support Programming on Different Levels of Cognitive Development, E.Lahtinen, and T. Ahoniemi. Proceedings of the Fifth Finnish/Baltic Sea Conference on Computer Science Education, November 2005.