Lokakuun lopulla pidettiin Helsingin Yliopistossa Tietojenkäsittelytieteiden opetuksen seminaari 2009. Sen tarkoituksena oli löytää uusia vinkkejä opetukseen. Alla kutsu:
En ole yliopisto-opettaja, mutta opetus kiinnosti minua, sillä symbolinen analyysi on varsin yleinen teoria ja sen avulla opetusta on mahdollista myös edistää, mutta kaikki tietysti pitäisi valmistella kunnolla, kuten jokainen uusi asia.Seminaarikutsu
Ohjelmoinnin perusopetuksen verkoston tavoitteena on edistää ohjelmoinnin perusopetuksessa käytettyjen erikoistuneiden välineiden ja materiaalien leviämistä suomalaisissa yliopistoissa sekä edesauttaa tämän alueen opettajien verkostoitumista. Verkosto sai alkunsa Suomen Virtuaaliyliopiston (SVY) verkostohankkeena. Hanke päättyi vuonna 2008, mutta verkosto jatkaa toimintaansa Tietojenkäsittelytieteen seuran teemaryhmän järjestämien seminaarien muodossa, joissa tietojenkäsittelytieteiden opettajat voivat vaihtaa kokemuksia hyväksi havaituista käytänteistä, sekä levittää kehitettyjä välineitä ja materiaaleja muihin yliopistoihin. Seminaarin järjestää tänä vuonna Helsingin yliopisto. Seminaariin ovat tervetulleita osallistumaan kaikki suomalaisten yliopistojen tietojenkäsittelytieteiden opetuksesta kiinnostuneet henkilöt.
Muut esitykset eivät mielestäni mennyt ytimeen asti kuten omani, sillä ne esittivät apumenetelmiä tai varsin kaukaisia ajatusrakennelmia kuten etiikan opettaminen, kansainvälistymisen haasteita, robottiohjelmointi, peliohjelmointi, yleiskäyttöinen opetuksen tukiohjelma (Moodle) ja kännykkätekniikan käyttö opetuksessa tai opintotietojärjestelmä Korppi. Oma esitykseni oli ainoa tieteen eturintamassa menevä, todella sisältöön kajoava: kuinka ohjelmoinnin opiskelijat voisivat nykyistä paremmin hahmottaa alansa ja koko tietojenkäsittelytieteen.
Palautetta esityksestä
Tilaisuus oli kaikkien aikojen ensimmäinen minkä pääsin pitämään suomalaisessa yliopistossa symbolisesta analyysistä. Olen ihmetellyt, että mikä tässä näin maksaa. Konferenssiesityksiä ja muita demoja olen sen sijaan pitänyt kymmeniä muualla Meksikosta ja Kanadasta lähtien isoissa auditorioissa, mutta tämä oli ensimmäinen tavallisessa yliopistoluokassa tapahtunut esitys.
Kun luin tänään miten BBC on kohdellut viisikkojen kirjailijaa Enid Blytonia aikanaan, koin heti sympatiaa häntä kohtaan. Toivottavasti armollinen yliopistojärjestelmä on minua kohtaan jalomielisempi kuin BBC Blytonia kohtaan:
Viisikon äiti oli vuosikymmeniä pannassa BBC:ssä
YLE: julkaistu 17.11.2009 klo 13:38
Britannian yleisradioyhtiö BBC piti Viisikko-lapsisalapoliiseista tunnetun Enid Blytonin tuotoksia kirjallisesti niin arvottomina, ettei niillä ollut asiaa BBC:n kanaville 30 vuoteen, kertovat juuri julkisuuteen tulleet asiakirjat.
BBC teki tänä vuonna hyvityksenä jopa elokuvan Blytonin elämästä, joten virhe on näin jälkeenpäin hyvitetty ruhtinaallisesti.
On haasteellista esittää ohjelmistoalan koulutuksen traditioihin sisällepäässeillle opettajille uutta tapaa hahmottaa koko tietojenkäsittelytiede uudella tavalla! Esitin tässä niin, symboli pitäisi asettaa koko core computer sciencen perustaksi, sillä ilman symbolia emme voi kirjoittaa riviäkään koodia, mallin kaikki näkyvät osat ovat symboleita tai ikoneita (lähes sama) ja tietokone muuntaa lähdekielen symbolit kääntäessään numeerisiksi ja binäärisiksi rakenteiksi, mutta ohjelmoijankaan ei tarvitse kovin usein miettiä mitä binääritasolla tapahtuu. Sen sijaan on tärkeämpää miettiä kuinka tietokone hoitaa kunkin symbolin. Tämähän tapahtuu automaattien teorian pohjalta: jokaisella symbolilla on tavallaan sisässään tilakone. Näin tietokoneelle saadaan rakennettua formaali malli myös ohjelmistotasolla, lähdekoodille, lause lauseelta. Se olisi tumpelonkin opiskelijan hyvin helppo oppia, eikä tarvitsisi kahlata paksuja manuaaleja.
Joku silti kommentoi, ettei hän haluaisi, että symboli olisi opetuksen tärkein asia vaan kieli. Ihmettelen vaan, että minkä kielen hän siihen haluaisi? Niitähän on yli 500 sataa.
Kieli ei ole siksikään hyvä opetuksen pohja, sillä kielet ovat holistisia tapauskohtaisia kokonaisuuksia, joita on hankala hahmottaa, opettelematta koko kieltä. Kielet eivät varsinaisesti perustu mihinkään, joku alan harrastaja on alkanut kutakin kehittää subjektiivisista näkökulmista, otetaanpa esimerkiksi vaikka Java tai Ruby. Kuvassa alla Matsumoto.
Symboleita sen sijaan voi opetella yhden päivässä tai yhden viikossa. Se on helppoa. Saman tiedon voi käyttää kaikille muille kielille, joilla on vastaava komento. Näin pääsee tietojenkäsittelytieteen teoriaan sisälle erittäin jouhevasti.
Pari henkilöä yritti esityksen jälkeen väittää, että symbolinen analyysi on staattisen analyysin joku osa. Vastaan tähän niin, että akseli staattinen/dynaaminen ei ole edes kovin relevantti kysymys. Eri paradigmat toimivat eri tavoin. Sellaiselle ohjelmalle tai ohjelman pätkälle, mille kaikki koodi on ladattu kirjastoineen mukaan, symbolinen analyysi toimii täysin dynaamisesti. Muuten se toimii staattisemmin. Usein täydellinen evaluointi ei ole edes tarkoituksena, mikäli halutaan tutkia muita ohjelman piirteitä. Symbolinen analyysi on ainoa kognitiivinen ja tieteelliseen läpinäkyvään teoriaan ylhäältä alas pohjautuva analysointitapa näistä kolmesta, sillä staattinen analyysi on joukko erillisiä menetelmiä, joille on vaikea löytää yhteistä linjaa. Dynaaminen analyysi on taas suorittamisen sivutuloksena tullut menetelmä, jossa koneen sisälle on mahdotonta nähdä. Kone tekee siinä sen minkä suvaitsee tehdä, mutta debuggauksessa tietysti käyttäjä voi muutella monia asioita. En pidä debuggausta varsinaisena analyysinä, sillä se on eräänlainen testi- ja kokeilujärjestelmä, jossa käytetään kyseisen työkalun rajoitettua komentovalikoimaa.
Kognitiivinen analysointimenetelmä eroaa ei-kognitiivisista menetelmistä siinä, että edellämainitussa on mahdollista tukea käyttäjän kysymyksiä menetelmän tarjoamilla palveluilla niin, että saadaan vastauksia tai ainakin dataa, joka toimii vastausten osina. Tässä lähestytään siis Turingin testin asetelmaa.
Demoa minulla ei ollut tuolla näyttää ja sitä kaivattiinkin. Symbolisesta analyysistä on mahdollista saada tarkkaa animaatiota ja koodin simulointia, jos vain malttaa käyttää aikaa miettimiseen ja ohjelmointiin. Siinähän kaikki symbolit ovat koneen mallissa, ja kaikki symbolien väliset yhteydet tiedetään. Ohjelman suorituksessa syntyy uusia symboleita (sivuvaikutukset), jotka voidaan piirtää samaan graafiin, tavalla tai toisella. JavaMaster-työkalussa on siitä selviä merkkejä, mutta kannattaisi kehittää oma työkaluversio opetuksentukikäyttöön ja eri versio koodinymmärtämisen tueksi.

