You are currently browsing Oula's articles.
Huhhuh!
Sydämeni on juuri nyt jossain reilusti korvien yläpuolella ja hyvä että henki kulkee. Olin pakkaamassa loppuraporttia kivasti jar-pakettiin, kun epähuomiossa pakkasin kansiossa olevat kuvat jar-paketiksi loppuraportin päälle. Muutaman tuskaisen minuutin aikana aloin jo heittää toivoa, sillä en ollut jättänyt rapottia auki mihinkään ohjelmaan auki, ja levyltä se oli jo kadonnut teille tietymättömille. Onneksi olin eilissäpäivin asentanut kokeilumielessä erään tekstieditorin koneelle täysin toista tarkoitusta kuin loppuraporttia varten. Editori kuitenkin värjäsi html-syntaksin kivasti, joten päätin lisäillä linkit raporttiini sillä (laiskana miehenä tein sen muuten OpenOfficella). Tuo ihana tekstieditori ottaa muokattavasta dokumentista vanhan version talteen, ja näyttää edellisellä muokkauskerralla auki olleet dokumentit kun ohjelman avaa. JESSSSSSS!!!!11!!1. Onneksi en sentään painanut “kyllä”, kun ohjelma ilmoitti tiedoston muuttuneen levyllä ja kysyi, haluanko päivittää muutokset editoriin.
Aina joskus elämä voittaa onneksi…
Mutta täytyy todeta, että tämä jännitysnäytelmä loi kurssin loppumiselle melko hienot puitteet.
Mutta noinniinkun yleisesti on kyllä ollut hieno kurssi kaikenkaikkiaan. Työtä on joutunut tekemään sairaasti, mutta on siitä oppinutkin. Alkuun ei osannut aavistaa, että pystyisi joskus niihin asioihin, joita nyt tekee. … …
…
Tässä mielentilassa en kyllä kykene kirjoittamaan yleistä liibalaabaa kurssista yhtään tuon enempää. Sitäpaitsi uskon, että muut ryhmäläiset ovat kirjoittaneet aivan yllin kyllin kommenttia kurssin vaikeudesta ja opituista asioista ja tuskaisista deadlineistä (seuraavaan aikaa 10min parhaillaan), joten voisin ottaa jotain erilaista näkökulmaa.
Vaikka kyseessä on ohjelmointikurssi, on yksi kurssin arvokkaimmista anneista ollut sosiaalinen. Nimittäin se, miten kurssi on auttanut tutustumaan muihin phukseihin sekä myös assareihin.Läpi kurssin ollaan yhdessä hajoiltu saman koodin parissa, autettu toisiamme ongelmissa ja myös tehty yhdessä erilaisia ryhmätöitä. Esimerkkinä eräs mieleenpainuvimmista muistikuvista kurssilla on muutaman muun kurssilaisen kanssa viettämäni yö olkkarilla/T-talolla koodauspikkujoulujen merkeissä. Koodauksesta ei tosin välttämättä tullut mitään, mutta hauskaa ainakin oli. Se oli hienoa se, ja ilman tätä kurssia sitä ei olisi tapahtunut!
Se mitä haluan sanoa on, että Studio1:llä on korvaamaton merkitys yhtenä niistä monista tekijöistä, jotka hitsaavat infolaista phuksiporukkaa yhteen, ja luovat sitä kivaa kiltameininkiä, mikä Athenessa vallitsee.
Enempää en ehdi kirjoittamaan, eikä oikeastaan tässä mielentilassa pää enempää kestäisi, joten nyt voin varsin tyytyväisin mielin todeta, että
SO LONG STUDIO1 !!!1!!1!!!!!!!
Kurssin aikana on joutunut oppimaan niin paljon uutta, että omat oppimismenetelmät ovat välttämättä kokeneet jonkinsortin evoluutiota (toivottavasti positiivista). Tosin myös opittavan asian luonne on muuttunut kovasti kurssin edetesssä. Alkuvaiheilla ongelmia tuotti Javan syntaksin oppiminen, kun taas loppupäässä päänvaivaa aiheutti enemmän se, kuinka Javan valmiita luokkia saadaan käskytettyä niin, että lopputulos on halutunlainen.
Kurssin alussa varsin tehokas tapa oppia oli ryhmässä koodaus. Kaikki olivat vielä enemmän tai vähemmän pihalla ohjelmoinnista, ja useimmiten ongelmia tuli samojen asioiden kanssa. Tällöin, jos yksi avulias henkilö sattui keksimään ratkaisun, pystyi hän opastamaan myös muita pääsemään eteenpäin. Tässä tietty tuon yhden henkilön pedagokisilla kyvyillä on sen verran merkitystä, että ideaalitapauksessa hän ei suoraan kirjoita toisten koodia, vaan saa toiset ymmärtämään, kuinka homma pitää tehdä.
Kurssin edetessä tämän tavan käyttökelpoisuus alkoi kuitenkin laskea, ja loppupuolella rymäkoodauksesta oli melkeinpä enemmän haittaa kuin hyötyä. Tähän oli useita syitä. Tärkeimpänä ehkä se, ettäohjelmointitehtävät muuttuivat koko ajan laajemmiksi sekä monimutkaisemmiksi. Ongelmat eivät enää ilmenneetkaikilla samoissa kohdissa, ja vaikka joskus ilmenivätkin, ongelman ratkaisu vaati perehtymistä aiempaan koodiin, joka oli jokaisella erilainen. Yksi ratkaisu ei enää sopinutkaan kaikille. Toisen auttaminen
ongelman ratkaisussa ei ollutkaan enää niin mielekästä puuhaa, koska siihen meni niin paljon aikaa, eikä siitä ollut hyötyä oman koodin kannalta. Jokaisen koodausaikataulu alkoi myös muokkautua omanlaiseksi, ja eri henkilöt saattoivat olla koodinsa kanssa hyvinkin eri vaiheissa. Pitkällä olevan ongelma on täyttä hepreaa henkilölle, joka vasta aloittelee tehtävää, kun taas tehtävän alun ongelmat eivät ole enää loppuvaiheilla olevalla terävänä muistissa.
Kurssin alun jälkeen seurasi jakso, jonka aikana perehdyin jonkin verran oppikirjaan (Head First). Kirjan hyvät esimerkit auttoivatkin paljon ymmärtämään koodin päälle. Tässä vaiheessa syntaksi alkoi olla jo muistissa, mutta pientä varmistusta kaipasi silloin tällöin. Tämän jakson aikana (ehkä 2.-4. javaharkka) aloin myös pikkuhiljaa tutustua Java API:iin, ja osata luovia siellä muutenkin kuin tehtävänannossa linkitetyillä sivuilla.
Viimeisten ohjelmointitehtävien sekä projektin aikana en juuri kirjaan koskenut, ja kavereilta pyydetty apukin jäi melko vähäiseksi. Koodin perusteet olivat hallussa, ja ongelmat olivat monimutkaisempia, mutta toisaalta myös mielekkäämpiä. Ratkaisu löytyi yleensä API:n tai erilaisten tutoriaalien avulla.
Kaikenkaikkiaan koen olevani melko nopea oppija, ja opin sekä kuulemalla, lukemalla, kokeilemalla ym.. Suurin ongelma oppimisessa minulla onkin oppimismotivaation löytäminen. Sen huomasi myös hyvin tällä kurssilla. Sillon kun jaksoi innoissaan perehtyä asiaan, ongelmat ratkesivat melko nopeasti. Jos taas kiinnostus oli tiessään, ei yksinkertaisistakaan asioista tuntunut tulevan mitään. Tämä on hyvä havainto jatkoa ajatellen. Pitää yrittää potkia sitä motivaatiota jostain, niin oppiminenkin kyllä sujuu!
Aluksi
Kokonaisuutena Studio1 on ollut varsin toimiva ja tehokas kokonaisuus. Kukaan kurssin läpäissyt ei voi sanoa, ettei olisi oppinut paljon uutta paitsi ohjelmoinnista, myös omista opiskelumenetelmistään. Mikään ei kuitenkaan ole täydellistä, joten tässä muutamia asioita, joita mahdollisesti voisi kehittää.
1. Painoarvot
Ehkä suurin epäkohta, joka on tullut vastaan, kun olen jutellut kurssitovereiden kanssa, on ollut kurssin osa-alueiden painotus. Ohjelmointitehtävien, projektin ja tentin painotukseen ollaan pääosin tyytyväisiä, mutta blogin sekä esseiden painoarvot herättävät suuria tunteita. Aiempina vuosina portfolion 20% painoarvo on varmasti ollut perusteltu, kun jokaisen on täytynyt henkilökohtaisesti kirjoittaa jokaisesta kurssin tapahtumasta. Nyt taas kirjoitettava on jaettu usealle henkilölle, joten työmäärä ei ole yhtä suuri.
En usko, että kovin moni kurssilainen oikeasti käytti blogiin, botit ja robotit mukaanlukien, enempää aikaa kuin esseetehtäviin. Silti esseetehtävien painotus on vain puolet blogista. Tänään lounaspöydässä heräsi myös keskustelu siitä, kummasta on ollut oppimisen kannalta enemmän hyötyä, blogista vai esseistä. Vahva mielipide, johon voin itse täysin yhtyä, oli, että blogista ei ole oppinut juuri mitään, kun taas esseeaiheisiin tutustuessa joutuu oikeasti ottamaan asioista selvää. Blogista toki näkyy kurssin arvostelijoille, mitä ryhmä on kurssin aikana oppinut, mutta itse opiskelijan kannalta blogin merkitys oppimisessa on melko olematon.
Tämän takia olisi mielestäni vähintäänkin kohtuullista, että blogin ja esseiden painoarvot joko käännettäisiin päinvastoin, tai muutettaisiin molemmat viiteentoista prosenttiin.
2. Itseopiskelu vs. luennot
Kurssi on toki tarkoitettu aika pitkälti itseopiskeluksi, mutta minä jäin kaipaamaan muutamaa luentoa lisää, joilla olisi selvennetty kurssin vaikeimpia asioita. Kurssi oli kuitenkin erittäin haastava, ja jos ongelma ei ilmaantunut juuri ennen assarointituokioita, saattoi ratkaisemisessa mennä useampi päivä. Toisaalta toki itseopiskelun ansiosta APIa oppi lukemaan varsin tehokkaasti, mikä varmaan oli tarkoituskin. Silti pari luentoa lisää ei olisi ollut pahitteeksi.
3. Ryhmätehtävät
Mielestäni reitinhakurobotti ja irkkibotti olivat lopulta varsin mukavia ja mieleenpainuvia tehtäviä. Jompikumpi tehtävistä olisi voinut olla vielä vähän laajempi. Tässä tosin on aika suuri merkitys ryhmäkemialla, joka ei aina välttämättä toimi, joten toisille tämä voisi olla epäreilua. Ja toki nytkin oli jo todella hankala löytää aikaa näille tehtäville, joten mikäli näitä laajennettaisiin, pitäisi jostain
muualta löysentää. Uskon kuitenkin, että jokainen ryhmä oppi, etenkin irkkibottia tehdessä, monia asioita, joista saattaa olla hyötyä tulevaisuudessa.
Lopuksi
Muuta en juuri keksi, mutta päivitän vielä, jos tulee mieleen ennen deadlineä
Ja toki jos teillä muilla ryhmäläisillä on jotain mielessä, mutta ette halua käyttää portfoliokysymystänne
aiheen pohdintaan, lisäilkää kurssin mahdollisia epäkohtia kommenttina!
Neljännessä ohjelmointitehtävässä oli läsnä suolaisen merituulen kirpeä kosketus sekä mustanpuhuvien soturien salamyhkäinen olemus. Ninjoihin, merirosvoihin ja sieniin keskittyvät tehtäväkierrokset olivat saamassa ansaitsemaansa huipennusta. Tämän Grande Finalen toteuttaminen tulisi vaatimaan aiempien tietojen lisäksi tietämystä rajapinnoista ja kykyä laittaa merkkijonot halki, poikki ja pinoon. Loppuhuipennuksena piti vielä olla aidosti luova, ja keksiä pelille jokin tavoite. Eikä tässä vielä kaikki, (lähes) koko komeudelle täytyi vielä toteuttaa JavaDoc-dokumentointi! Huhhuh!
Kaikenkaikkiaan neljäs tehtävä oli itselleni aikaavievin, mutta samalla myös antoisin javaharkka. Motivaatio oli vielä tallella, ja useamman harkan ajan hyystettyyn peliin alkoi jo kiintyä. Jaksoin (ainutta kertaa kurssilla) tehdä kaikki bonustehtävät, ja jopa lisätä hieman omaa bonusta mukaan.
Aikaa harkan tekoon oli tutut kaksi viikkoa, mikä tuottti hieman ongelmia pidemmän kolmosharkan jälkeen. Muistan tehneeni viimeisen osatehtävän (pelin tavoitteen luonti) sekä JavaDocit + muun kommentoinnin kokonaan viimeisenä yönä, ja nukkumaan pääsinkin mukavasti siinä ammukymmenen kieppeillä. Turhautumaankin pääsin melkolailla, kun etsin omasta koodista monta tuntia virhettä, joka paljastui tehtävänannossa valmiina annetussa Nakyma-luokassa sijaitsevaksi bug… *kröhöm* featureksi. Toisaalta tämän jälkeen fiilis oli varsin hyvä, kun tajusin ettei virhe oikeasti ollutkaan omassa koodissa.
Mutta mitä tehtäväkierroksesta sitten loppupeleissä jäi käteen? Minulle rajapinnat jäivät ehkä hivenen epäselväksi vielä tuossa vaiheessa (seuraavat tehtäväkierrokset selvensivät asiaa varsin tehokkaasti). Sen sijaan käyttäjän syötteen tulkitseminen sekä merkkijonojen käsittely olivat tehtäväkierroksen parasta antia. Näistä tietoja tarvitsi paljon seuraavissa tehtävissä sekä projektia tehdessä. Nelosharkassa oli myös jotenkin sellainen fiilis, että ensimmäistä kertaa tähän mennessä koodataan jotain aidosti konkreettista, oikeaa ohjelmaa, ehkä juuri käyttäjän interaktion takia. JavaDoc-sivujen tekeminen ei välttämättä tämän kurssin pienimuotoisten tehtävien puitteissa ollut vielä kovin oleellista, mutta onhan se hyvä tietää, kuinka koodi tulee dokumentoida.
Jostain syystä nelosharkan jälkeen motivaatio otti melkoisen Deep Diven, enkä oikein jaksanut enää innostua Swingistä ja Sikobanista, saati projektista. Minulle nelosharkka oli Studio1:n parasta aikaa.
Seitsemännen tapauksen purku jäi hyvinkin laihaksi. Allekirjoittanut ainakin myöntää, että työtä oppimistavoitteen eteen ei juurikaan tullut tehtyä, ja purkaminen ilman mitään opittua ei välttämättä ole se tehokkain toimintatapa
. Aikaa purkuun käytimme n. 15min, aika kauas jäi OLO-menetelmä-ohjelapun 1,5 tunnista! Muutenkin oppimistavoitteet olivat luokkaa “tarkkaile, kuinka irkissä puhutaan”, joten niiden hyöty botin käytännön toteutukseen oli tässä vaiheessa vielä melko pieni.
Nyt kun kirjoitan tätä tekstiä noin viikko session jälkeen, täytyy todeta, että käteen ei jäänyt juuri mitään. Saimme ehkä selvennettyä hieman sitä, mitä bottimme tulee tekemään, mutta erittäin vähän joka tapauksessa. Motivaatio botin tekemiseen tuntui olevan erittäin alhaalla (osittain ehkä johtuen siitä, että ainakin itse luulin bottiseminaarin olevan jo tänään, ja tiesin, että aikaa botin tekoon tällöin olisi), eikä kukaan jaksanut syventyä aiheeseen sen enempää.
Toisaalta oli ihan hauska kokea välillä tällainenkin purku, ainakin oli pää tyhjänä seuraavaa tapausta varten
Julistan täten, että robottimme on alustavasti valmis ja toimiva!
Hyvän suunnittelun jälkeen ei tarvittu kuin pieni yhteinen koodailusessio Paniikissa, ja robo oli kunnossa alta aikayksikön.
Robo siis toimii ja löytää maaliin labyrintissa kuin labyrintissa, mutta pientä hiomista se vielä vaatii, että saadaan tyhmimmät reittiratkaisut kitkettyä pois. Irkistä löytyy ohjeet robon koodin saamiseen, joten jokainen voi myös tehdä omia innovaatioita robotin suhteen, mikäli siltä tuntuu.
Tapaus 1:n syvällisen, filosofien näkökulmia esittelevän tekstin jälkeen odotin, että tapaus 2 olisi jotain vähintään yhtä korkealentoista. Paperien lävähtäessä eteen olinkin hieman yllättynyt, kuinka yksinkertaiselta aihe vaikutti. Platonin ja Aristoteleen sijaan käsittelisimmekin tällä kertaa pikkupojan bussimatkan ohjeistusta. Tekstiä lukiessa kuitenkin paljastui äkkiä, että ohjeistus on tehty täysin samalla logiikalla kuin ohjelmakoodi toimii.
Vapaaehtoisia puheenjohtajia ei meinannut tälläkään kertaa löytyä. Svante pelasti uhkaavasti pitkittyvän valintatilaisuuden lausahduksella “ehdotan Oulaa”, ja kohtaloni oli sinetöity
. Suni tarjoutui sihteeriksi lappuja järjestelemään.
Aloimme työstämään ensimmäistä tehtävää, eli ohjeistusta teen keittämiseen. Samalla päätimme, että mieluummin keskitymme kunnolla yhteen tehtävään, kuin yritämme tehdä pikaisesti useampia. Lappuja alkoi satelemaan, ja äkkiä huomasimmekin, että aihetta täytyy rajata, ettei aleta rönsyilemään liikaa. Jätimmekin teepannun ja irtoteen pois, ja päädyimme ohjeistamaan teen tekoa teepussien ja vedenkeittimen avulla. Lopulta meillä oli valmiina täsmälliset ohjeet maukkaan teen saamiseksi.
Jossain vaiheessa ajauduimme hetkeksi assarien kanssa keskusteluun Javan valmiista luokista ja niiden luonteesta. Ainakin omalla kohdallani keskustelu auttoi ymmärtämään Javaa jälleen hieman enemmän. Assarit muutenkin toivat välillä keskusteluun hyviä pointteja, jotka olimme ehkä sivuuttaneet. Lopussa Petri heitti vielä pohdittavaksi sen, kuinka saadaan varmistettua haluttu lopputulos, vaikka kesken “ohjelman” tapahtuisi jotain odottamatonta.
Oppimistavoitteeksi määritimme koko ryhmälle javan silmukoinnit, ehtolauseet ja yhdistämisen.
