OLO-sessiot

OLO- eli ongelmalähtöinen oppiminen -sessioissa on kyse viikottain yhteen kokoontuvasta ryhmästä joka pyrkii yhdessä pohtimalla ja keskustelemalla syventää tietouttaan javasta. Ryhmän lisäksi sessioissa on kaksi tuutoria, jotka ohjaavat tarvittaessa ryhmää oikeille raiteille. Jos kaikki menee täydellisesti niinkuin pitääkin, assareiden ei tarvitse puhahtaakaan session aikana. Seuraavissa sepostuksissa olen keskittynyt lähinnä omaan näkemykseeni aiheista.

Sessioita on kurssilla yhteensä kymmenen, joista jokaisella avataan oma tapaus, jota pohditaan käyttämällä seitsemän askeleen menetelmää - johon sisältyy edellisen tapauksen purku,uuden avaus sekä runsas määrä visuaalista assosiointia. Tarkemmat tiedot löydät kurssin nettisivuilta (linkki etusivulla), omat mietteeni oloista kokonaisuutena sekä kootut selitykset mietteitä - sivulta.

Ryhmä 4:n kokoonpano:

Hannu Isopahkala
Tia Jysmä
Laura Liukkonen
Teemu Meronen
Heikki Moilanen
Vihtori Mäntylä
Lars Oehlandt
Jetta Pursiainen

Tapaus 0: Taltioitu elämä

Ensimmäinen tapaus oli tarkoitettu lähinnä tutustuttamaan OLO-opiskelun ideaan - Meille annettiin virikkeeksi teksti ihmisen elämän tallentamisesta aivoihin sijoitettavaan mikrosiruun. Tästä poimimme ajatuksiamme lapuille ja pohdimme niitä sitten yhdessä. Javan kanssa tällä ei tosiaan vielä ollut yhtään mitään tekemistä.

tapaus 1: Javan perusrakenteet

Työotsake: Operaatio vaihtokauppa

Virikkeeksi meille annettiin pätkä (tätänykyä)yksinkertaista koodia, jota tietystikään kukaan ei ymmärtänyt - paitsi Vihtori, joka oli harrastellut javaa joskus aiemminkin. Esille tulleet kysymykset olivat kaikki laatua "mitä tarkoittaa Sring", "Mitä tarkoittaa public", "onko javan keksijä mies kun puhuu vain intistä ja Stringeistä". jotkut taisivat peräti keksiä mitä int ja public tarkoittavat. Vihtorilla oli kova homma selittää asioita. Tältä kannalta katsottuna valitut oppimistavoitteet eivät ole kovinkaan yllättäviä.

Oppimistavoitteet:
- virikekoodin ymmärtäminen
- kurssisivuilta löytyvän koodin kokeileminen (myös muutokset)
- muuttujien käyttämisen selvittäminen

Lähteet:
- Kalakirja
- kurssin sivut

Tapaus 2: Ideaoppi

Työotsake: Operaatio Filosofi

Virikkeeksi saimme pläjäyksen platonin ideaoppia käsittelevää filosofista tekstiä. Alussa olimmekin hieman pihalla miten tämä kaikki liittyy javaan, josta sitten tuutoreiden hienovaraisella ohjauksella siirryimme vähitellen pohtimaan luokan ja olion välistä suhdetta. Pidin tästä olokerrasta hyvinkin paljon, varmaan siksi että virike kehitti päässäni paljon eri ideoita millä voisi ymmärtää javaa - useimmat tosin vääriä, mutta mukavaa se silti oli.

Oppimistavoitteet:
- Luokan ja olion käsitteiden syvällinen ymmärtäminen.
- Mitä ongelmia on luokittelun subjektiivisuudessa java-ohjelmoinnin kannalta?

Lähteet:
- Kalakirjan luku "Luokat ja oliot"
- Internet

Tapaus 3: Kokoelmat ja taulukot

Työotsake: Operaatio Verkkokirja

Tällä sessiolla taisin kysellä enemmän kuin millään muulla - johtuen lähinnä myöhäisestä javaharkkojentekovaiheestani, sillä suuri osa oli jo törmännyt kyseisiin asioihin harkassa/luennolla. Osittain myös siitä että oli minun vuoroni olla sihteerinä. Loppujen lopuksi en uskaltanut kysellä asioita selväksi asti, vastaavan äänensävyn alkaessa olla itsestäänselvyys-asteella. Päätinpä opiskella asiat sitten kotipuolessa. Jonkinlaista ideaa taulukoiden sekä joukkojen eroista tuli, mutta kokonaan selväksi ne tulivat vasta harjoitusvaiheessa - kuten yleensäkin oppimiseni laita.

Oppismistavoitteet:
- millaisia vaatimuksia sanakirjarakentessa käytetävissä oleville avaimille on?
- miten listaa ja sanakirjaa voi käyttää samassa yhteydessä?
- miten joukku, lista, taulukko j asanakirjarakenne eroavat toisistaan?
- pohdittavaa n:o 6

Lähteet
- Kalakirja
- Wikipedia
- java.sun.com

Tapaus 4: Liikkumisalgoritmi

Työotsake: Operaatio kalapuikko

Operaatio kalapuikko käsitteli tulevaan roborttiturnaukseen liittyen algoritmejä - mikä olikin hyvin tarpeen, keskustelun lähtiessä liikkelle "mikä on algoritmi" -kysymyksestä (joka saattoi peräti tulla minulta...). Vaihteeksi mukava aihe, virikkeessä oli labyrinttejä ja meidän tuli koodata robotteja jotka niistä selviäisivät. Purussa saimme jo jonkinlaista robottia suunniteltua, emme kuitenkaan toimivaksi saakka. Kävi kuitenkin niin kehnosti että ennen turnausta kaikilla ryhmästä oli kiireitä tai "kiireitä", joten lopuksi päädyin koodaamaan parissa tunnissa jonkinlaisen (valitettavasti toimimattoman) robotin - itse kun kuuluin siihen kiireitä - osioon. Algoritmien soveltaminen tuli silti opittua omasta mielestäni hyvin.

Oppimistavoitteet:
- algoritmien 1 ja 2 toteuttaminen (vuokaavio / pseudokoodi / java)
- algoritmien 3 ja 4 suunnittelu

Tapaus 5: Rekursio

Työotsake: Operaatio Penaali

Ihan kiva kerta, virikkeenä oli joitain mukavia rekursioita kuten koodi, joka toteuttaa n! -funktion. Rekursio oli muutenkin hyvässä muistissa lukion matikantunneilta, joten mitenkään vaikeaksi en asiaa kokenut (ja tästä johtuu myös suht lyhyt selostus :). Rekursiota tuli myös käytettyä todella ahkerasti projektissa, joten oli tästä kerrasta hyötyäkin.

Oppimistavoitteet:
- Mitä rekursiolla tehdään (miksi käytetään ylipäänsä)?
- Implementoi tiedostojärjestelmä (annaKoko(), annaPolku())

Tapaus 6: Ohjelmavirheet ja testaaminen

Työotsake: Operaatio vihre

Virikkeenä oli virheellinen asetaNaapuri() metodi joka piti paperikoodaamalla korjata. Samanlaisia metodeja tuli vastaan sittemmin harkassa, mutta kuulemma juurikin tämä metodi oli tuottanut suurta tuskaa edellisen(?) vuosikurssin studiolla, joten sinällään mielenkiintoinen. Itse harkassa oli yksinkertaistettu versio nähdäkseni. Tämän ratkaisun jälkeen pohdittiin virheitä, mitkä ovatkin ominta alaani javassa - ja ulosanti olikin sen mukainen. Tarkoituksena oli tosin jaotella virheitä tarkemmin kuin ajonaikaiset virheet, syntaksivirheet ja tyhmät virheet, joten tulipa tässä nekin opittua. Auttoi hieman omien harkkojen troubleshootingissa, joka tosin meni aika kattavasti ennen tätäkin. Mielenkiintoisia ideoita ryhmästä tuli, mutta ei välttämättä niin valaiseva sessio kuin jotkut muut.

Tapaus 7: Pelitilanteen tallentaminen

Työotsake: Operaatio seivaus

Käsiteltiin erilaisia tiedostoon tallentamisen muotoja. Mielenkiintoisia oli teknisen toteutuksen lisäksi päätökset mitkä asiat esim. pelin tallentamisessa on oleellista tallentaa. Lisäksi pohdittiin sarjallistamista ja sen hyötyjä ja haittoja - jotka eivät kyllä itselleni ihan täysin auenneet kuin vasta pikkuhiljaa harkkojen yhteydessä. Japanin luennot studioluentojen päällä taisivat sattua hieman tässä kohtaa.

Oppimistavoitteet:
- mitä on sarjallistaminen?
- miten tiedostoon kirjoitetaam?
- mitä ovat ini- ja xml-tiedostot?

Tapaus 8: Digitaalinen valokuva-albumi



Työotsake: Operaatio Viht0ri

Virikkeenä tuli miettiä miten toteuttaisimme valokuva-albumia selailevan ohjelman. Ihmisillä oli tähän ideoita, mutta jokaiseen niistä tuutorit pystyivät sanomaan jotain vastaan käytettävyysasioista. Tässä yhteydessä tutustuimme swingin komponentteihin, ja oli siltä kannalta otettuna yksi hyödyllisimmästä sessioista - jos olisin silloin ymmärtänyt jotain. Kaikilla muilla tuntui olevan luennolta tarvittava pohjatieto, joten kirjoittelin termejä ylös ja katselin ne myöhemmin. Sain otettua jos jonkin verran asioita kiinni, mutta uskon että ymmärtämättömyys tässä vaiheessa heijastui suoraan kuudenteen javatehtävään. Sitä sattuu - ja kovasti.

Oppimistavoitteet:
- Digitaalisen valokuva-albumin toteutus (siis miettiminen)
- Mikä on AWT:n ja Swingin suhde?

Laura kirjoitti ja postitti mielestäni kattavan raportin purusta, joten otan sen tähän.

Tapaus 9: Laivanupotuspeli

Työotsake: Operaatio Soutuvene

Pohdittiin laivanupotuspelin teknistä toteutusta javana sekä siihen tekoälyn luomista. Ei vaikuttanut vaikealta, ja projektin välineillä laivanupotuksen & tekoälyn tekisi peräti aika nopeaa. Mukavaa lämmittelyä projektia varten.

Oppimistavoitteet:
- drag & drop swingillä
- laivojen ja ruudukon suhde

Lähteet:
- MKB:n projekti

Tapaus 10: Piirto-ohjelma

Työotsake: Loppusota

Enpä päässyt paikalle :/.

<------ takaisin