Hajoilua ja uusia asioita

syyskuu 24, 2007

Takana on ensimmäiset viikot Studio 1 – kurssia ja kokemuksia on jo kertynyt jälkipolville kerrottavaksi. OLO-sessiot itsessään ovat olleet mielenkiintoisia, alkuun tosin taitaa kestää ennenkuin ihmetys vaihtuu ymmärrykseksi ja pääsemme todenteolla kiinni jutun juuresta. Lisäksi olemme kerääntyneet muutaman kerran innokkaina kuuntelemaan Java-ohjelmoinnin saloista, kun meidät on istutettu koulun penkkeihin luennoille. Ensimmäisen luennon jälkeen luokasta poistui ryhmä pöllämystyneitä phukseja, jotka hetken epäuskoisina päätään pyöriteltyään lähtivät syömään ja sulattelemaan asioita.

Innostavinta (ja haastavinta) alkukurssilla on kuitenkin ollut Java-ohjelmointi, joka on uutta lähes jokaiselle meistä. Voi sitä riemua, kun tietokone tulostaa näytölle myrkkytatti, paino 3! Päivä pelastettu. Ongelmiakin on tosin ilmennyt ja useamminkin on nähty epätoivoisen tuoreen infolaisen painavan luovuttaneena päänsä, kun osatehtävä 3 ei sujukaan toivotulla tavalla. Mutta onneksi terve athenelaissisu nostaa aina päätänsä ja kaikki palaavat ennemmin tai myöhemmin takaisin ohjelmoinnin jännittävään maailmaan.

Koodaus ei ole silti ainoa, joka on aiheuttanut viime aikoina päänvaivaa. Ensimmäisen esseen palautus oli nimittäin lauantaina ja haastava aihe luokat ja oliot Java-ohjelmoinnissa sai monet meistä epätoivon partaalle. Kun tyhjä ruutu vihdoin täyttyi esimerkeistä ja sujuvasta asiatekstistä seuraava yllätti meidät: essee oli kirjoitettava HTML-muodossa. Koko esseen saaminen kokoon aiheuttikin suurta keskustelua ja hajoilua phuksien omalla irkkikanavalla, mutta onneksi tästäkin haasteesta päästiin yli, ja kun siististi jar. tiedostoksi pakattu essee oli palautettu, palasimme helpotuksen huokauksen saattelemina takaisin ensimmäisen Java-tehtävän pariin.

Itse olen ainakin oppinut paljon uutta viimeisten viikkojen aikana. Kiehtova javamaailma on raottanut minulle oveaan ja tuntuu siltä, että kyllä siitä jopa jotain ymmärtää! Uusia asioita oppiessa tulee aina välillä seiniä eteen ja mutkia matkaan ja niin on käynyt nytkin. ja vaikka välillä on vähän heikko olo koodauksen tai esseen suhteen, on aina hienoa kun pääsee eteenpäin. Kyllä meistä vielä koodareita tulee!


Ensimmäinen essee

syyskuu 23, 2007

Huh huh, olipa taas työtä kerrakseen, mutta nyt se on sitten kirjoitettu, Java-kurssimme ensimmäinen essee! Tehtävästä ei todellakaan tullut mikään läpihuutojuttu. Sanoja tuli olla vähintään 800 kappaletta, joista suinkaan vähiten aikaa ei vienyt java-kielellä kirjoitetut koodausesimerkit. Kaiken kukkuraksi koko pläjäys piti kirjoittaa html-muodossa linkitettyine sisällysluetteloine kaikkineen, mielellään vielä kuvien kera. Kuvitelkaa kuinka meitä fukseja sorretaan! Aiheena oli suurimmalle osalle ihan upouutta juttua luokista, olioista ja niiden suhteista Java-ohjelmoinnissa ja jottei homma vaan vahingossakaan sujuisi liian helposti niin html-tiedostot ja liitteet piti vielä pakata jar-muotoon ja lähettää kirjaintarkalla koodilla kurssin sähköpostiin, joka ei ainakaan oman palautukseni yhteydessä vielä toiminut oikein.

Lopussa kuitenkin kiitos seisoo kuten sanotaan. Tunnelma oli mitä mahtavin kun lopulta sain kuittausviestin onnistuneesta sähköpostilähetyksestä. Pian pystyinkin jo kriittisesti arvioimaan oppimismetodin tehokkuutta: Olihan esseen kirjoittaminen loppupeleissä melko toimiva tapa oppia Java-koodauksesta jotain, vaikka välillä olikin turhautumisen hetkiä. Nyt piti yrittää kertoa aiheeseen kuuluvat asiat esseen kautta ulkopuoliselle lukijalle, joten oli välttämätöntä että minä, esseen kirjoittaja, olin sisäistänyt asiat, jotta saatoin kertoa niistä muille.

Eikä se kirjoittaminenkaan nyt ihan täyttä kuolemaa sentään ollut, ainakaan ihan koko ajan. Oli oikeastaan jopa ihan mukavaa vaihtelua kehitellä omaa kirjallista argumentointia vastapainona vaikkapa työläille matematiikan matriisilaskelmille:). Kaikki on suhteellista kuten hyvä ystävämme Einstein opetti. Odotan silti innolla seuraavaa teoriatehtäväämme, jossa oppimismetodina on esseen kirjoittamisen sijaan käsitekartan laatiminen. En usko, että siitä tulee näin hankalaa. Toisaalta se, mikä voi mennä pieleen, menee…


Avaussessio nro. 2: Tarkat ohjeet ja idiootti pikkuveli

syyskuu 19, 2007

“Voidaanko me olettaa, että se pikkuveli osaa hengittää?” Tavallisesti tuollainen kommentti aiheuttaisi suunnatonta ärtymystä, ei liene ikävämpää ihmislajia kuin ainaiset pilkunviilaajat. Nyt ei kuitenkaan oltu tavallisessa elämässä. Kyseessä oli ohjelmointi ja se jos mikä on pilkunviilaamista.

Tapaus 2:n virike käsitteli pikkuveljeä joka ei osaa ajatella, mutta kykenee noudattamaan hänelle annettuja ohjeita pilkuntarkasti. Työnimikkeeksi valittiinkin kuvaava “Käskytys”. Tavoitteena oli saada “robotti-veli” turvallisesti oikeaan bussiin. Yksinkertaiselta tuntuva tehtävä muuttuu mielenkiintoiseksi kun neuvottavana on kaikesta inhimillisyydestä riisuttu poika jonka kärsivällisyys on kuitenkin huikeaa luokkaa. Lähtökohtana tehtävään oli kaikkien mahdollisten (mahdottomat jätimme melko nopeasti pois huomattuamme, että Unskin pitkä jäisi nopeasti väliin pitkäksi venähtäneen OLO-session takia) epämääräisyyksien ja virheiden löytäminen ohjeista. Ongelmia oli lukuisia, alkaen kortinlukulaitteen riittävästä tuntemuksesta rahattomaan kotiin ja istumapaikan löytämiseen. Myös pientä halua optimoida pikkuveljen tehotonta toimintaa oli havaittavissa.

Todellinen koodaamiseen liittyvä aihe näkyi hyvin läpi tehtävästä. Tarkoituksena oli tutkia erilaisia ehto- ja toistolauseita. Näitä lauseita sitten yritettiin sovittaa pikkuveljen ohjeisiin. Tämä kaikki onnistuikin ihan mukavasti, mitä nyt kiinni ollut taulu esti nuolien piirtelyn lappujen välille. Oppimistavoitteiksi sovittiin edellämainittujen ehto- ja toistolauseiden lisäksi erilaiset muuttujatyypit ja näkyvyysmääreet.


Eka purkusessio

syyskuu 19, 2007

Purimme ekan olo-session oppimistavoitteet. Kaikki olivat ottaneet selvää sovituista asioista ja opimme (toivottavasti) uusia asioita.

Alustuksena aiheeseen toimi pieni katsaus ohjelmoinnin historiaan. Historiallinen kehitys alkoi konekielestä (011001110), ja on jatkunut ihmisille luettavampien versioiden kautta lausekieliin, kuten java. Kuulemma perinteisessä mallissa käskyt tietokoneelle on esitetty listana, jota kone lukee ylhäältä alaspäin. Olio-ohjelmoinnissa taas tehdään olioita, jotka ovat useassa eri paikassa. Samaa oliota voi käyttää monta kertaa, monesta paikasta ja muuttaa tiedot yhtellä kerralla moneen eri paikkaan. Kätevää, eikö totta!

Jos taas verrataan Javaa muihin kieliin, eduiksi nousevat käytön turvallisuus ja helppous. Haittapuolina taas ovat suuremmat muistivaatimukset kuin joissain toisissa kielissä ja hitaus. Kuitenkin java toimii hyvin ohjelmissa (siis sellaisissa joita näemme, kuten tämä. Tietokoneen syvyyksiin ei kuulemma kannata koodata javalla.)

Sessio jatkui mukavalla käsitteiden määrittelyllä. Niitä oli tosin jauhettu kohtalaisesti jo luennoilla ja harkoissa, joten ne tuntuivat olevan aika selvää kauraa. Tai sitten en tajunnut mitä en tajunnut, jotta olisin voinut kysyä.

Luokassa esitellään oliot. Olioiden ominaisuudet (attribuutit) ja taidot (metodit) määritellään. Luokkia voi olla ylempiä ja alempia. Alemmat luokat voivat periä ylemmiltään. (Hmm.. haluaisinko periä ominaisuuksia pomoltani? Olisin varmaan tosi hyvä työntekijä.) Pääsimme myös korkeammalle tasolle pohtimaan abstraktin luokan käsitettä. Siitä ei voi kuulemma tehdä olioita, mutta siltä voi periä metodin. (Kieltämättä hieman hämärältä kuulostaa, mutta abstraktit asiat eivät kai yleensä ole konkreettisia.)

Oliot kuvaavat reaalimaailman asioita ohjelmassa. Esimerkiksi voisin luoda vaikka leijonaa kuvaavan olion. Saman luokan olioilla on samat ominaisuudet, mutta ominaisuuksien arvot voivat vaihdella. Esimerkiksi voisin luoda luokan Leijona, ja siitä kaksi oliota: sinisen leijonan ja vihreän leijonan. Sininen leijona voisi saada toisen sinisen kaverin, vaikka kahdella oliolla olisikin samat ominaisuudet (sininen väri), ne eivät ole sama olio.

Metafysiikassa ilmentymä tarkoittaa yleiskäsitettä ilmentävää yksittäistä oliota. Samoin ohjelmoinnissa olio on luokan (eli yleiskäsitteen) ilmentymä. Sillä on siis luokassa määritellyt ominaisuudet. Voitaisiin jopa todeta, että “luokka määrittää oliota, olio ilmentää luokkaa”.

Oikeastaan kaikki käsitteet pyörivät saman asian ympärillä. Idean perusmalli voidaan ymmärtää Platonin luolavertauksena ideasta ja sen varjokuvasta. (Nyt pitäisi enää muistaa miten se luolavertaus menikään. Luntata voi wikipediasta hakusanoilla luolavertaus, ideaoppi ja Platon.) Toisin sanoen taas kerran luokka on se idea ja olio sen ilmentymä.

No, luulen ymmärtäväni, mitä luokka ja olio tarkoittavat. Se on varmaan ihan hyvä lähtökohta. Ongelmallisempaa on ehkä miljoonien samannimisten asioiden erottaminen. (Luokassa Hevonen on metodi Hevonen ja ehkä attribuutti hevonen ja hevosen nimi Hevonen. Jee!)


OLO-sessioiden lähtölaukaus

syyskuu 17, 2007

Studio 1 on informaatioverkostojen tutkinto-ohjelman ensimmäisen vuoden opiskelijoille suunnattu megalomaaninen ohjelmointikurssi, jossa poraudutaan syvälle Java-kielen kiehtovaan maailmaan. Kurssi sisältää vinot pinot ohjelmointitehtävien ratkomista, esseiden kirjoittamista ja käsitekarttojen laatimista. Erikoisuutena pinnalle kuitenkin ponnahtavat kovin houkuttelevan kuuloiset OLO-sessiot, joista ensimmäiset viitteet tuodaan esille kurssin avajaistilaisuudessa.

OLO:a, eli ongelmalähtöistä oppimista käytetään laajemmalti mm. lääketieteellisessä tiedekunnassa oppimismetodina, mistä se on löytänyt tiensä niinkin kummalliseen ympäristöön, kuin untuvikkojen ohjelmointikurssi. OLO-sessioiden tarkoituksena on pistää opiskelijat pohtimaan erinäisiä ongelmia pienen ryhmän kesken. Ongelma pyritään ensiksi tarkasti tiedostamaan ja rajaamaan, minkä jälkeen ideoita singotaan ilmoille mahdollisimman paljon aiheen tiimoilta. Mietteet kerätään yksinkertaisesti paperilapuille, jotka asetellaan taululle. Olennaiset ideat erotellaan joukosta, jonka jälkeen asiasta koetetaan muodostaa informatiivinen ja osapuolia miellyttävä käsitekartta. Tämän perusteella opiskelijat muodostavat omat oppimistavoitteensa ja jakavat opittavat asiat keskenään. Tietojenkeruuta seuraa ns. purkusessio, jossa uusi asia pyritään selittämään selkokielisesti muille ryhmän jäsenille.

Omat mietteeni ennen ensimmäistä OLO-sessioita olivat kovin skeptiset. Toimisiko juttelutuokio uusien ihmisten kanssa jouhevasti, ja mikä hyöty saavutettaisiin ongelmien ratkomisesta vain omien mietteiden ja kokemusten pohjalta? Perinteinen ”yksi puhuu, muut kuuntelevat”-luennoiminen on todella porautunut tutuimmaksi opiskelumenetelmäksi elinkaareni aikana, mutta toisaalta ongelmalähtöiseen oppimiseen törmää kaikkialla. Tehtävistä puhuminen kanssaopiskelijoiden kesken ja kysymysten esittäminen ovat arkipäivää, jotka huomaamatta kartuttavat yksilön ja ryhmän tietoja.

Ensimmäinen sessio oli mielenkiintoinen kokemus. Aiheenamme oli väite siitä, että tulevaisuudessa kaikki kokemuksemme pystyttäisiin siirtämään toiseen ihmismieleen. Alun kummastelun jälkeen pääsimme vauhtiin, ja huomasimme tarkastelevamme asiaa teknisestä, moraalisesta ja filosofisesta näkökulmasta. Itselläni oli kuitenkin melko epävarma olo siitä, mitä vastaukseksi todella haluttiin. Keskustelua kyllä syntyi, mutta suuri osa siitä tuntui olevan vain ympäripyöreää mietiskelyä pohjatekstiä löyhästi seuraten.

Toinen aiheemme sivusi Java-ohjelmointia Platonin ja Aristoteleen ideaoppien pohjalta. Idea filosofian yhdistämisestä ohjelmointiin oli jo itsessään melko huvittava, mutta tunnin lopussa tunnuimme ymmärtävän virikkeen idean. Keskustelumme tuotti ainakin assistenttien mielestä hyvin asian ytimeen osuneen lopputuloksen, ja ryhmän jäsenet tuntuivat olevan tyytyväisiä tuotokseen.

Platon ja Aristoteles keskustelemassa Javasta
Platon ja Aristoteles keskustelemassa Javasta.

Ensimmäisten OLO-sessioiden jälkeen on vaikea sanoa, olenko täysin vakuuttunut systeemin toimivuudesta. Keskustelu on kivaa, mutta tuovatko lappuihin sanojen kirjoittelu ja niiden jäsentely todellista ratkaisua olennaisiin pulmiin. Alku kuitenkin osoitti ryhmämme olevan innokas ja yhteistyökykyinen. Kunhan aiheet tulevat konkreettisemmiksi ja ohjelmointitaitojemme kasvavat, saattavat OLO-sessiot tarjota korvaamatonta apua yksin ongelman parissa tuskailemisen sijaan.


Hei maailma!

syyskuu 10, 2007

Javasotureiden blogi on syntynyt maanantaina 10.9.2007 kello 17:56. Kokoa pienokaisella oli syntyessään 0kb. Ylpeät isät ja äidit onnittelevat suojattiaan.