Ultimate Defense

•2009-02-15 • Jätä kommentti

Saan vihdoinki laitettuu oman projektin nettiin. Sen voi ladata osotteesta http://users.tkk.fi/~atiira/studio1/Projekti/Ultimate_Defense/ . Pelin tarkoituksena on siis rakentaa muureista ja erilaisista torneista sellainen sokkelo, että erilaiset otukset, joita pelin aikana tulee eivät pääse maaliin asti, vaan tornit saavat tuhottua ne. Kun torneja ja muureja klikkaa, niitä pystyy myös kehittämään ja korjaamaan. En osannu tehä mitään windowsin tai muun käyttiksen käynnistystiedostoa mut Kehysluokka on se luokka, joka käynnistää pelin.

 

- Aleksi

The End

•2009-01-25 • Jätä kommentti

Studio 1 – kurssi on tosiaan päätöksessään, vaikka itselleni siitä muodostuikin suhteellisen erilainen kuin useimmilla. Alussa olin kuin kuka tahansa aiempaa ohjelmointikokemusta omaamaton tuleva Javasoturi. Javatehtävien alkaessa kuitenkin tajusin ja opin myös kantapään kautta, että tehtävien tekeminen vaatisi todella paljon paneutumista ja varsinkin aikaa. Lähinnä edellisten puuttumisen johdosta tehtävien vaikeutuessa oli tehtävä raskas, mutta kenties oikea päätös – kurssin ohjelmointiosuus oli siirrettävä osaltani myöhempään ajankohtaan. Päätin kuitenkin kirjoittaa tarvittavat esseet ja osallistua olo-tapaamisiin tehdäkseni tulevasta studio 1 – urakastani hieman helpomman.

Esseitä kirjoittaessa sai kieltämättä hyvän kuvan Javan eri puolista, mutta kun en itse ohjelmointitehtäviä tehnyt käytännön soveltaminen jäi tekemättä. Myös esseihin tietoa etsiessä sai kuitenkin tutustua ainakin Sunin tutoriaalien ja hakukoneiden ihmeelliseen maailmaan, myös teoreettinen tietämys Javasta lisääntyi – ainakin teoriassa.

Olosessiot olivat täysin uusi tuttavuus ja suhtauduin niihin alussa hieman skeptisesti. Ne osoittautuivat kuitenkin hyödylliseksi keinoksi oppia uusia asioita ja näkemään asioita erilaisista näkökulmista. Olo-tapaukset myös täydensivät mielestäni hyvin kulloinkin käsiteltävää asiaa, pari kertaa kuitenkin olossa käsiteltävä asia oli vasta tulossa tehtävään tai esseehen, jolloin asiasta keskustelu jäi perehtyneemmille oloilijoille.

Eniten kurssi opetti itselleni korkeakoulumaista opiskelua, tietoa piti etsiä itse eikä kukaan ollut valvomassa töiden edistymistä. Kurssi oli myös hyvä herätys siihen, että opintopisteet eivät tipu itsestään, vaan niiden eteen on tehtävä kovasti töitä, ainakin joillakin kursseilla. Koodaaminen ei ainakaan alkukurssin perusteella todellakaan ole mitenkään lähellä sydäntäni, vaan odotan hamassa tulevaisuudessa minua odottavaa koodausurakkaa lähinnä kauhulla.

A LONG AND GORY SURVIVAL STORY

•2009-01-25 • Jätä kommentti

Lähettäessäni tätä olen mitä ilmeisemmin selviytynyt tästä suuresta möröstä, Studio1-ohjelmointikurssista. En voi olla miettimättä pienellä haikeudella niitä lukuisia öitä ja päiviä, joita on tullut vietettyä Javan, Jolt Colan, Sunin ja tutoriaalin sekä muiden avartavien aihepiirien parissa ahertaen.

Aloitin Studio 1-kurssin useiden muiden opiskelijoiden tavoin ilman merkittävämpää ohjelmointikokemusta tai -tietoa. Kuutisenkymmentä riviä BASICIA 486DX:llä viime vuosituhannen puolella ei paljoa auttanut (lukuun ottamatta if-else -lausetta), vaan ohjelmointi uusine käsitteineen ja termeineen piti opetella nollatasolta lähtien.

Alussa monimutkaisilta tuntuvien ohjelmointiharjoitusten ratkominen tuntui vaikealta ja uusien komentojen ja käsitteiden opettelu vei oman aikansa. Ratkaiseva käänne oppimisessa tapahtui eräänä perjantai-iltana paniikissa pizzalaatikoiden ja tyhjien energiajuomatölkkien alla vaikertaessa kun huomasin ajattelevani “Javaksi”. Siitä lähtien ohjelmointi helpottui, sillä syntaksin ja logiikan ymmärtämiseen ei kulunut puolta käytettävissä olevasta ajasta. Myös ongelmalähtöisen oppimisen ryhmät auttoivat ymmärtämään käsitteitä ja assari yleensä löytyi kun hätä oli käsillä.

Ilo loppui lyhyeen kun opeteltavaksi tuli graafiset käyttöliittymät ja uusi, niihin liittyvä logiikka vaati jälleen harmaan ja valkean aineen yhteispeliä aivokurkiaisella höystettynä. Muutamien kymmenien tuntien jälkeen sain kuitenkin possut liikkumaan ja nappulat toimimaan.

Ohjelmointiprojekti oli kurssin kasvattavin osuus – sekä Javan että urakanhallinnan ja ajankäytön suhteen. Kun tohvelieläimet alkoivat vihdoin elää elämäänsä solumaljassa ArrayListien ko’oista ja ikkunoiden leveyksistä riippumatta, sain huokaista helpotuksesta: yksi tähänastisen elämäni suurimmista projekteista oli kunnialla päätöksessä. Kirjoitin loppuraportin ja lähetin kuukausien työn arvioitavaksi.

Luentoja ohjattua opetusta olisi saanut mielestäni olla kurssilla enemmän, vaikka oman oivaltamisen, googlettamisen ja yriys ja erehdys-metodin käyttö koodauksen opettamisessa on varmasti paljon järkevämpää, kuin perinteinen autoritäärinen yliopisto-opetus. Voisin sanoa siitä huolimatta kurssin olleen kokonaisuutena erittäin mielenkiintoinen ja onnistunut. Myös kiinnostukseni ohjlemointia kohtaan heräsi kiitettävästi!

Selvisin Studio 1:sestä ja vieläpä hyvällä mielellä. Koodaan varmasti vielä tulevaisuudessakin muutaman metodin – tosin lähiaikoina enimmäkseen punaviinilasillisten ääressä ja vapaaehtoisesti!

Aku

Ohi on!

•2009-01-25 • Jätä kommentti

Aloittaessani kurssia en ollenkaan tiennyt, mihin olen pääni pistämässä. Minulla ei ollut lainkaan aikaisempaa koodauskokemusta. Lukujärjestyksessäni näin vain kummallisen kuuloista ongelmalähtöistä oppimista ja java-harkkoja. Tiesin että olemassa on jokin Java-niminen ohjelmointikieli, mutta muuten aihe oli minulle täysin tuntematon. (Itse asiassa tiesin kielestä vain, koska keittiönkaapissamme on ikuisuudet asustanut kahvikuppi, jota koristaa Javan tuttu logo…)

Kurssi oli tehokas, vaikkakin hermojaraastava. Meidät koulittiin nopealla aikataululla ajattelemaan kuin ohjelmoija. Voisin myös sanoa, että olen oppinut ohjelmoimaan – ainakin sen verran, että pystyin itsenäisesti tekemään loppuprojektini, mp3-soittimen. Se on paljon se alkutilanteeseen verrattuna. OLO-sessiot olivat joskus hyödyllisiä, joskus eivät. Joissakin tehtävissä post it-laput olivat todella väkisinväännettyjä ja menetelmä tuntui aivan typerältä, joskus ne taas olivat hieno apu asiakokonaisuuden jäsentämiseen.

Neljä ensimmäistä javatehtävää tuntuivat kaikista vaikeimmilta. Ensimmäistä aloittaessani olin aivan ulalla. Head First Java oli noina ensimmäisinä viikkoina kovassa käytössä, sillä tunsin että ohjausta ei tehtäviin oikein saanut. Toki avuliaat assarit olivat harkoissa paikalla, mutta asiat piti silti suurimmaksi osaksi selvittää itse. Menetelmä oli toki tehokas, muttei tuntunut lainkaan helpolta. Sokobanissa päästiin aloittamaan kokonaan uutta peliä, ja vanhatkin asiat alkoivat kertautua koodissa. Itseluottamuskin oli parantunut siinä vaiheessa ja vaikka uusia asioita tuli, ne eivät tuntuneet yhtä tuskaisilta kuin aiemmissa tehtävissä. Onnistumisen kokemukset olivat hienointa kurssissa. Oli mahtavaa saada joku oikein vaikea kohta vihdoin ratkaistua

Teoriatehtävät toivat mukavaa vaihtelua koodaukseen, eivätkä vaikeustasoltaan olleet ollenkaan liikaa, vaan selvensivät joitakin asioita oikein mukavasti. En tosin tainnut oppia tekemään johdonmukaista käsitekarttaa yrityksistä huolimatta. Esseet ja käsitekartat kuitenkin tuntuivat pikku välipaloilta ohjelmointitehtäviin verrattuna, vaikka joka viikko jokin deadline -periaate oli jokseenkin stressaava. Joskus .jar-paketin luominenkin tuntui suurelta työltä väsyttävän koodauksen jälkeen.

Voisin sanoa että suurin kurssilla opittu asia on, ei niinkään ohjelmointi itsessään, vaan sen ymmärtämiseksi tarvittavan ajattelutavan sisäistäminen. Tässä vaiheessa ymmärryksessäni on toki vielä suuria aukkoja, mutta kurssi antoi eväät mahdollisesti jatkamaankin konekielen parissa. Nyt en enää pelkää koodia, mutten usko silti vapaaehtoisesti valitsevani ohjelmointikursseja myöhemmin opinnoissani.

-Saana

Ihana kamala Java

•2009-01-25 • Jätä kommentti

Studio1:n alkamisesta on kulunut nyt puoli vuotta. Sinä aikana olen oppinut paljon uutta, mutta kokenut myös elämäni stressaavimmat hetket. Viikoittaiset teoria- ja javapalautukset rytmittivät koko syksyä ja aiheuttivat harmaita hiuksia loppuprojektin muodossa aina tammikuun lopulle asti. Nyt voi jo melkein huokaista helpotuksesta, vielä pitää jännittää loppuprojektin arvostelua.

Minulla oli Javaan alusta asti viha-rakkaussuhde. Se vei hirveästi aikaa, tunki ajatuksiin myös koulun ulkopuolella eikä se jättänyt missään välissä rauhaan. Onnistumisen hetket olivat hienoja, ja varsinkin ne hetket, kun sai koodin palautettavaan kuntoon ja pääsi viettämään muutamaa javatonta päivää ennen uuden tehtävän aloitusta.

OLO-ryhmät olivat minulle aivan uusi kokemus. Aluksi ne olivat tylsiä, sillä en tiennyt javasta  mitään, enkä oikein keksinyt mitään ideoita liittyäkseni keskusteluun. Jossakin vaiheessa javaa oli tullut koodattua jo sen verran, että välillä osasin sanoa jotakin järkevää. Enimmäkseen keskityin kuitenkin kuuntelupuoleen. Käsiteltävät ongelmat olivat välillä  hyvin tehtyjä ja niistä oppi paljon, jotkut taas olivat tylsiä eikä mielestäni tarjonnut mitään uutta.

En missään vaiheessa päässyt Javan kanssa samalle aaltopituudelle. Tehtävät sain tehtyä assareiden ja kavereiden neuvoilla, mutta jotakin minulta puuttui. Olisin todella paljon halunnut oppia taitavaksi koodaajaksi, mutta luulen, että liian tiukka työtahti tappoi motivaation opiskella itsenäisesti. Minulle olisi ollut sopivampaa, jos tehtäviä olisi ollut vähemmän, eli olisi ollut enemmän aikaa käytettävissä tehtävää kohden. Minulla oli todella kiireinen ensimmäinen jakso, ja kun siihen lisäsi vielä koodaukset jotka venyivät iltamyöhälle, motivaatio rupesi laskemaan. Välillä olin vihainen javalle, kun palautus lähestyi, mutta mitään toimivaa ei syntynyt. Miten muut oppivat ja osasivat, mutta itse en? Assareita olisi kaivannut useammin ja pitempään kuin neljä tuntia viikossa.

Ohjelmointi oli kyllä hauskaa. Varsinkin Sokobanin ohjelmointi! En tosin vieläkään ymmärrä, miten pelkkää tekstiä kirjoittamalla voi saada pelejä aikaiseksi! Olisi niin hienoa osata ohjelmoida kaikkea hienoa, mutta tämän kurssin puitteissa taitoni jäivät aika matalalle tasolle. Haluaisin oppia lisää, mutta pelkään, että jatkossa ohjelmointikurssit olisivat yhtä tappavia kuin Studio1. Siksi taidankin jättää javat pois tulevaisuudessa ja keskittyä johonkin muuhun. Tekisikin mieli sanoa, että ei enää koskaan enää, mutta ehkä en uskalla.

Marianne

“Äiti, aiotko taas koodata läpi yön?”

•2009-01-24 • Jätä kommentti

Nyt se on ihan oikeasti ohi, uskomatonta! Koko syksyn mittainen uurastus ja vielä vuodenvaihteen viimeinen rutistus. Kurssi toimi itselläni erinomaisena sysäyksenä takaisin opintoihin vuosien työelämästä ja musiikin alan tutkinnon suorittamisesta johtuneen tauon jälkeen. Vähäinen opiskelijamäärä ja intensiivinen aikataulutus takasi sen, että jopa tällainen ikuinen teekkari tutustui väistämättä uusiin ihmisiin. Paniikin perjantai-illat olivat kaikessa tragikoomisuudessaan kohtalaisen ainutlaatuisia.

Ongelmalähtöiseen oppimiseen suhtauduin ensin pienellä varauksella, olin nimittäin aikoinani ollut assaroimassa TKK:n ensimmäisiä OLO-kursseja enkä oikein silloin päässyt siihen sisälle. Vähitellen lämpenin kuitenkin metodille. Useat virikkeet olivat oikeasti hyviä ja innostavia ja asioita joutui tosissaan miettimään ryhmän kesken. Eivät ne aina tietenkään olleet yhtä onnistuneita, mutta loppujen lopuksi mielestäni OLO oli hyvä tapa päästä Javaan sisälle. Oppimistehtävät oli palasteltu yleensä sopivan pieniksi paloiksi eikä niiden selvittämisessä kestänyt kovin pitkään. Valitsin yleensä sellaiset aiheet, jotka kiinnostivat minua eniten, siksi niiden itsenäinen opiskelu oli mukavaa ja ne oli myös helppo selvittää muulle ryhmälle. Purkusessioissa kuuntelin mielenkiinnolla mitä muut olivat saaneet aikaan. Opiskelukaverilta oli myös helpompi tivata tarkennusta kuin luennoitsijalta, jos jokin asia jäi epäselväksi.

Essee oli mielestäni hyvä, vaikkakin työläs tapa selvittää asioita. Saman syksyn aikana kirjoitin kandityöni, joten lyhyempien ja epävirallisempien kirjoitusten tuottaminen ei ollut minulle mikään ongelma. Aikaahan siihen meni enkä aina osannut varata sitä tarpeeksi. Useat lauantaipäivät kuluivat siihen kun vielä viime hetkillä kirjoitin esseetä puhtaaksi ennen keikkaa, sukujuhlia tai muuta lauantai-illalle sovittua ohjelmaa. Käsitekartta ei sopinut työtapana minulle ollenkaan, minulle sen mind mapia tarkemmin rajattu rakenne oli hankala ja rajoittava tekijä. Adoben monipuolisiin vektorigrafiikka- ja kuvankäsittelyohjelmien käyttöön tottuneena minua myös häiritsi käsitekarttaohjelman kömpelö käyttöliittymä ja useiden tärkeiden toimintojen puuttuva tai huono toteutus. Sen ainoan pakollisen käsitekarttani miten kuten läpi rämpineenä palasinkin sitten kirjoittamaan esseitä, jotka paitsi sujuivat paremmin, myös saivat parempia arvosanoja.

Ohjelmointitehtävät olivat hurjia. Tulin kurssille vailla mitään tietoa ohjelmoinnista, html:n kirjoittamista ei oikein voida laskea. Alun koodi oli jatkuvasti täynnä virheitä, kirjoitin ensimmäiset kolme tehtävää Emacsilla ja sain lähteä korjaamaan aina hillittömän pitkää virhelistaa koodia käännettyäni. Toisaalta Emacsilla sain mielestäni hyvän koodausrutiinin ja käsityksen kielen perusteista. Kun vihdoin siirryin Eclipseen hyvissä ajoin ennen graafisen käyttöliittymän mukaanottoa, tuntui siltä että ohjelma piti melkein liikaakin kädestä kiinni ja opasti tyyliin: “ethän vain ajatellut tehdä virhettä seuraavaksi?”. Pidin kovasti seikkailupelimaailmasta jota loimme ja olin todella motivoitunut jokaiseen tehtävään, vaikka ne tuntuivatkin aina aluksi ylitsepääsemättömän vaikeilta. Neljännessä tehtävässä oli mahtavaa kun sai päätökseen koko palasista kootun ohjelman ja se toimi.

Swingin myötä siirryin selkeästi omalle mukavuusalueelleni. Useita vuosia käyttöliittymäsuunnittelun parissa työskenneltyäni tajusin vihdoin, miksi koodarit olivat aiemmin kiristelleet hampaita “siirräpäs tuo elementti tuosta kaksi pikseliä vasemmalle” -pyynnöilleni. Menut, radio buttonit ja paneelit olivat kuin vanhoja kavereita, tuntui mahtavalta saada ne vihdoin tottelemaan suoraan itseäni. Oli myös hienoa nähdä samantien koodauksen tulos ohjelman ulkoasusta ja toiminnasta eikä vain selvitellä kryptisiä virheilmoituksia. Innostuinkin viidennessä tehtävässä säätämään itsekseni graafista ulkoasua vielä vähän omaan suuntaani. Kuudennen tehtävän tulostaulukko oli oikeastaan ainoa, jossa koin vain syvää väsymystä enkä jaksanut enää innostua mistään enkä erityisemmin paneutua asiaan. Loppuprojekti hengitti jo niskaan ja oli mahdotonta saada enää taulukosta mitään järkevää irti. Olin vain tyytyväinen siihen, että pääsin ylipäätään tehtävästä läpi.

Aika tahtoi usein loppua kesken niin ohjelmointi- kuin teoriatehtävien kohdalla. Oli vaikeaa löytää tarpeeksi aikaa perheen, töiden, muusikon keikkojen ja muiden opintojen lomasta. Lapsetkin oppivat kysymään “äiti, aiotko taas koodata läpi yön?”. Usein epätoivo iski ja lujaa, varsinkin silloin kun lapset sairastuivat juuri ennen ohjelmointitehtävän deadlinea ja miehellä oli pakollisia kokouksia. Onneksi sain lastenhoitoapua sukulaisilta, mutta silti välillä jouduin koodaamaan aivan yötä päivää debugaten samalla kun tein lapsille ruokaa ja irkaten sylissä nukkuvan kipeän lapsen yli. Osan aikaa olin katkeran kateellinen muille opiskelijoille, jotka tuntuivat vastaavan vain itsestään ja omista opiskeluistaan, vaikka olihan sitä muuta elämää toki muillakin. Kurssin loppuprojektissa myös etenevä raskauteni tuotti lisäongelmia. Ei ollut enää fyysisesti mahdollista tehdä ylipitkiä päiviä tai raahata repussa mukanaan sekä painavaa läppäriä että paksuja Java-kirjoja. Joskus tuntui siltä, että pysyin ylipäätään järjissäni vain teen ja suklaan voimin. Onneksi olin osannut ennakoida jaksamiseni ja jakaa työmääräni tasaisesti niin, että missään vaiheessa en joutunut koodaamaan loppuprojektiani yötä myöten. Järkevän aikataulutuksen ja hyvän itsekurin ansiosta projektin koodaaminen olikin lopulta paljon vähemmän stressaavaa kuin syksyn ohjelmointiharjoitukset.

Kuten monet muutkin ovat todenneet, loppuprojekti oli kurssin parasta antia. Olin innostunut aiheestani ja todella tyytyväinen lopputulokseen, joka mielestäni sekä näytti hyvältä että toimi hyvin. Tein alle kouluikäisille lapsille suunnatun matematiikkaohjelman Ötökkämatikka, jota testasin omilla lapsillani (3v 10kk ja 1v 10kk). Lasten peli oli fiksumpi aihevalinta kuin tajusinkaan. Oli helppoa perustella perheelle koodaamiseen kulunutta ajankäyttöä kun lapsetkin tiesivät konkreettisesti, mitä äiti tekee kaiket illat. Kun sain ohjelman graafisen käyttöliittymän toimimaan, innokkaita testaajia riitti. Ötököiden vektorigrafiikan piirtäminen sai kolmivuotiaan istumaan tietokoneen vieressä hiiskumatta yli kahden tunnin ajan. Animaation tekeminen taas sai asiantuntevia arvioita osakseen. Pelin eri versiot myös viihdyttivät molempia lapsia sillä välin kun itse jatkoin toisella koneella koodaamista tai loppuraportin kirjoittamista.

Osa kurssilla olleista muista opiskelijoista jatkaa kevätlukukautta, osa lähtee armeijaan. Minä jään kotiin äitiyslomalle hoitamaan maaliskuun lopulla syntyvää kolmatta lastamme. Vaikka tuntuukin haikealta jättää hyvin vauhtiin päässeet opinnot taas joksikin aikaa, tiiviin syksyn jälkeen on hyvä hengähtää – tai ainakin vaihtaa stressinaiheet toisiin. Olisihan se ollut mukavaa jatkaa samantien Studio 2:lle, mutta toisaalta eipä tämä korkeakouluopiskelu etene yhtä suoraviivaisesti kuin lukio-opinnot. Kun tulen äitiyslomalta takaisin, törmään varmasti myös tulevilla kursseilla tältä kurssilta tutuiksi tulleisiin ihmisiin. Ja tulihan tässä samalla todettua sekin, että mikään ei yhdistä ihmisiä niin kuin tiukat aikataulut ja haastavat opiskelutehtävät.

Karo

PS. Javaan ja ohjelmointiin muuten kilahdin totaalisesti. Vaikka käytettävyys onkin ensisijainen intohimoni, pitää selvitellä missä määrin voisin jatkaa samalla myös koodausopintoja eteenpäin. Tämä ei jää tähän!

System.exit(0)

•2009-01-24 • Jätä kommentti

Ohjelmointikokemukseni ennen tätä kurssia rajoittui dynaamisesti tyypitettyihin kieliin ja web-tauhkaan, mutta sitä kuitenkin oli. Olio-ohjelmoinnin – ja ohjelmoinnin ylipäätään – ajatusmallit olivat siis ennalta tuttuja ja vältyin monen muun kurssilaisen kokemalta täydelliseltä kulttuurishokilta.

Kurssi tutustutti sujuvasti Javan oleellisiin osiin ja kirjastoihin. Teoriatehtävät ja varsinaiset ohjelmointitehtävät tarjosivat tilaisuuden iteratiivisesti syventää Java-tajunnan tasoa varsin loogisena jatkumona. Ohjelmatehtävien speksit olivat yksityiskohdiltaan joskus tulkinnanvaraisia, mutta kokonaisuudessa kyseinen epäkohta ei juuri haitannut ja tehtävien parissa oli mielekästä työskennellä. Kirjallisten tehtävien osalta arvostin suuresti mahdollisuutta tehdä oman mielen mukaan joko käsitekartta tai perinteinen essee.

Suurimmalle osalle kurssilaisista edellä mainittu ei kuitenkaan ollut tehtävistä suurin, vaan he joutuivat käyttämään leijonanosan ajastaan Javan sijaan ohjelmoinnin idean sisäistämiseen. Minulle jäi sellainen vaikutelma, että tämä ja kirjastojen käytön opettelu yhtäaikaisesti varsin nopealla tahdilla oli monelle liian iso pala nielaistavaksi, kun kaikesta joutui ottamaan selvää itse. Jos ei tehtävässä onnistunut, omia virheitä oli vaikea saada korjatuksi ja tulevat tehtävät vaikeutuivat jatkuvasti. Kuinka moni ymmärsi “älä tee asioita kahdesti” -säännön vasta kurssin lopussa, jos ollenkaan? Muutama viikko luentoja, joilla olisi valaistu Javan syntaksin sijaan tapoja lähestyä ongelmanratkaisua ohjelmallisesti olisi saattanut potkaista monen kurssin parempaan alkuun.

Ongelmalähtöinen oppiminen oli minulle täysin uutta ja edustikin melkeinpä kurssin mielenkiintoisinta antia. Virikkeet olivat useimmiten hyviä, mutta keskustelua aiheista olisi ehkä voinut rajata hieman tarkemmin. Tällaisenaan sessioissa tapahtunut oppiminen oli monesti liikaa sattuman varassa – lähtikö keskustelu alun perin tietyille raiteille ja millaisia resursseja purkua varten ymmärrettiin käyttää. Vapaus oli tietyssä mielessä erinomaisen positiivinen asia, mutta saamani mielikuva on se, että usein osa ryhmästä on ollut täydellisen pihalla käsiteltävästä asiasta eikä suuremmin viisastunut purustakaan. Se, että omasta mielestäni on mukava käsitteellistää labyrintissa suunnistamista graafiteorian avulla ei välttämättä tarkoita, ettäkö asiaa koko ryhmän oppimisen kannalta kannattaisi lähestyä juuri niillä keinoin. Oiva osoitus tästä on OLOn päätyminen fuksispeksimateriaaliksi. Onhan se todellakin niin, ettei Javan kryptografialaajennusta voi kuvailla tyhjentävästi kolmella adverbilla.

Blogittaminen oli uutuudessaan osittain mielenkiintoinen tapa jäsennellä ja kerrata opittua, mutta tuntui redundantilta varsinkin OLO-tapauksien yhteydessä: kirjoituksilla ei tuntunut olevan muuta tarkoitusta kuin höpistä siitä mitä tehtiin, ei siitä mitä opittiin. Efekti on luonnollinen seuraus kun miettii, että blogikirjoitukset oli tarkoitus tehdä ennen tapausten purkua, jossa henkilökohtaisesti opittu jaettiin muiden kanssa. Erityisen tarkoituksenmukaista se ei silti välttämättä ollut.

Kurssi on ollut rankka suoritettava, eikä “Selvisin Studio1:stä” -kangasmerkki ole ollenkaan liioittelua. Itse sain kurssista irti juuri sen mitä pitikin ja pakissani on nyt yksi vasara lisää, mutta joudun toivomaan ettei ennestään ohjelmoinnille vieraille osanottajille syntynyt ainakaan kovin pahoja traumoja.

- Ezku

Se oli sitten siinä.

•2009-01-23 • Jätä kommentti

Kurssi on nyt todella loppumaisillaan ja se on ollut kyllä melkoinen matka. Syksyn edetessä olen alkanut muistuttamaan enemmän ja enemmän veljiäni, joita pidän nörtin perikuvina. Toisaalta se on hieman pelottavaa, mutta olen kyllä todella ylpeä koodaus (ja irkkaus-) taidoistani, enkä kyllä vaihtaisi niitä pois, vaikka se tarkoittaisi nörtiksi jäämistä :D .

Kun tulin tälle kurssille, en osannut koodata oikeastaan ollenkaan. Jotain pientä veljeni oli opettanut minulle, mutta suunnilleen samat asiat opittiin kuitenkin jo ensimmäisen luennolla. Olin siis aivan täysin hukassa ensimmäisiä esseitä ja koodeja tehdessä. Asiaa tuli järkyttävällä nopeudella, niin ettei pää pysynyt lainkaan mukana siinä mitä teki. Olo-sessioissa olin myös aina aivan ulalla, sillä monet tuntuivat olevan aina askeleen tai pari itseäni edellä.

Jossain välissä koodi-kieli alkoi kuitenkin avautua ja pääsinkin pikkuhiljaa sisään Javan ihmeelliseen maailmaan. Kun miettii ensimmäisiä javatehtäväiä, tajuaa todella kuinka paljon on oppinut. Muistan esimerkiksi kuinka ensimmäisiä javatehtäviä koodatessa ”oli aivan normaalia” että koodi oli täynnä erroreita. En korjannut niitä, sillä mileestäni ne oli koodattu aivan loogisesti. Kumma kyllä assarit olivat sitten vähän toista mieltä.

Koodaaminen on jollain tavalla aina kiehtonut minua, sillä olen katsellut jo 10 vuotta kun veljeni on tehnyt pelejä ja sen sellaista ja itse en ole ymmärtänyt hölkäsen pöläystäkään siitä miten sellaisesta kirjain-möröstä voi syntyä peli. Tosin en ymmärrä sitä edelleenkään. Olen kuitenkin oppinut puhumaan Java-hyypperön kanssa, joka onnekseni osaa kääntää koodini ohjelmaksi.

Suhteeni Javaan on ollut kyllä yhtä vuoristorataa.Tuli hetkiä, jolloin vihasin koodausta yli kaiken ja kirosin sen hetken kun päätin tulla tälle kurssille. Kuitenkin huipulle pääseminen tuntuu hienommalta, kun sinne kiipeää itse pohjalta, kuin että tupsahtaisi sinne vain helikopterista. Yhdessä on koettu pahimmat hajoamiset, mutta toisaalta myös parhaimmat onnistumisen tunteet. Kurssi on ollut kova henkinen koettelemus, jota en ihan heti unohda.

Toisaalta on ihanaa, että kurssi on ohi ja ei tarvitse enää koskaan koodata (ainakaan tässä määrin), mutta toisaalta se on kyllä aika haikeaa. Varsinkin projektia tehdessä aloin todella pitää koodauksesta. Oli uskomatonta, että nyt pystyin tekemään pelin, jota olin halunnut tehdä jo todella kauan. Kamalaa lopettaa juuri kun olen vihdoin oppinut sen verran, että pystyn saamaan jotain järkevää aikaan. Tietysti voisin jatkaa itsekseni tai valita pääaineeksi, mutta lähden todennäköisesti kuitenkin toiselle tielle. Siis hyvästi Java. Oli kivaa niin kauan kun sitä kesti.

Tuija

Viimeiset sanani kurssilla

•2009-01-22 • Jätä kommentti

Aluksi

Kurssi on ollut mielenkiintoinen ja antoisa ongelmalähtöisen oppimisen, teoriatehtäväkierrosten ja osallistujiensa johdosta. Studio 1 kurssi tarjosi minulle hyvän tilaisuuden palata olio-ohjelmoinnin juurille parin vuoden Microsoft .NET ohjelmointityön jälkeen. Suoritin tämän kurssin viimeisten joukossa tutkinnossani, joten olen opiskellut asiat hieman käänteisessä järjestyksessä. Toki täytyy ottaa huomioon, että en opiskellut informaatioverkostojen koulutusohjelmassa, kun aloitin ohjelmoinnin opiskelut TKK:lla.

Opintojeni aikana olen suorittanut ohjelmointikursseja kuten Ohjelmoinnin peruskurssi 1 ja 2, C/C++ ohjelmoinnin peruskurssi sekä grafiikkapainotteisia kursseja tyyliin Studio 4 ja Tietokonegrafiikan perusteet. Yhtenä vaikeimpana ja hyödyllisimpänä kurssina pidän edelleen Ohjelmistotuotannon perusteet kurssia, joka opetti ohjelmointityön eri alueet kokonaisvaltaisesti ja kattavasti ilman ainuttakaan riviä koodia. Studio 1 kurssi on myös noudattanut tällaista lähestymistapaa siinä missä Informaatioverkostojen ohjelmointikurssi taas enemmän edeltävien kurssien sisältöä.

Yhtenä mielenkiintoisimpana seikkana Studio 1 kurssissa pidän muiden, varhaista opiskeluvaihetta suorittavien, informaatioverkostojen opiskelijoiden tapaamista ja Studio 1 ryhmämme keskinäistä ajatusten vaihtoa ja ideointia. Nyt kun omaan jo hieman kokemusta työelämästä ohjelmistotuotannon saralta ja kiidän kohti opintojeni valmistumista, on virkistyttävää tavata opiskelijoita joille ohjelmointi on jotain aivan uutta.

Tällainen tilanne saa itse kunkin miettimään ohjelmoinnin syviä perusteita ja näkemään tutut ja itsestäänselvät asiat uudessa valossa. Joukkoon mahtui toki ohjelmoinnin salat jo paremmin tuntevia mikä teki keskusteluista, tai jopa monologeista, hyviä ja antoisia missä allekirjoittanutkin oppi tekemään asioita paremmin. Seuraavissa kappaleissa valoitan hieman oppejani kurssin teoritehtävistä.

Teoriatehtävät

Luokat ja oliot

Jo ensimmäinen teoriatehtävä patisti minut palaamaan perusasioiden pariin, minkä seurauksena ymmärrän nyt paremmin olio-ohjelmoinnin hyödyt strukturaaliseen ohjelmointiparadigmaan nähden. Hallitsen nyt syvällisemmin perinnän ja rajapintojen merkityksen ja käytön. Olen lisäksi onnistunut soveltamaan näitä käsitteitä kehitystehtävissäni ohjelmoijana, erityisesti komponenttien välisen kommunikaation tehostamisessa.

Javan tietotyypit

Toinen tehtävä tarjosi minulle tilaisuuden tutustua Javan ja .NET:n tietotyyppeihin, erityisesti kokelmiin ja näiden vertailuun keskenään. Sainpahan laatia myös käsitekartan pitkästa aikaa mihin kurssi tarjosi kätevän työkalun. Jälleen kerran sai havaita Javan ja .NET:n samankaltaisuuden eli olio-ohjelmoinnin peruskäsitteitä.

Poikkeukset

Poikkeukset, virheet ja niiden käsittely on tuttua puuhaa töistäni missä laadunvarmistus on tärkeässä roolissa. Tällä kertaa panostin ainoastaan .NET:n poikkeusten käsittelyn syvällisempään ymmärtämiseen ja vilkaisin vain pikaisesti Javan vastaavia toimintoja. Olen päässyt esittelemään kirjoitelmaani myös töissä niille joiden uskon tarvitevan parempaa ohjausta laadunvarmistukseen. Toivottavasti opit menevät perille.

Swing

Neljännessä teoriatehtävässä en ollut mukana kovin aktiivisesti, koska Swing grafiikkakirjasto ei kuulu kiinnostuksen kohteisiini. Tai sanotaan, että on olemassa jo .NET:n omat graafistet kirjastot ja peruskontrollit joiden hallinta on minulle tälla hetkellä paljon järkevämpää. Tästä syystä esseeni jäi melko pintapuoliseksi vaikka olenkin tehnyt harjoituksia Swingin parissa aikaisempien ohjelmointikurssieni parissa.

Säikeet Java-kielessä

Viimeisenä teoriatehtävä tuli vastaan kauan toivomani aihe eli säikeet. Jostain syystä en vain ollut perehtunut säikeisiin kunnolla sitten Javan peruskurssien vaikka jälkikäteen ajatellen olisi pitänyt. Nyt kun essee on kirjoitettu ja aihe tutumpi, huomaan taidoilla olevan paljonkin käyttökohteita ohjelmistoissa, joita olen itsekin kehittänyt. Eritysesti paljon tietoa käsittelevät ohjelmanpätkät varaavat käyttöliittymän kokonaan mikä tekee ohjelmasta epäkäytännöllisen. Ensimmäisenä toimena esseen kirjoittamisen jälkeen, palasin muutaman viimeaikaisen tekeleeni äären ja rupesin systemaattisesti parantamaan lähdekoodia. Asioita voi tehdä tehokkaasti tai niitä voi tehdä laiskasti. Säikeet ovat tietyissä tilanteissa erittäin tehokas keino parantaa ohjelman käytettävyyttä ja laatua. Seuraavan kerran kun kohtaan vastaavanlaisen pulman, en enää vältä säikeiden käyttöä.

Lopuksi

Studio 1 kurssille oli siis tilausta omasta puolestani ja uskon vahvasti, että kurssi palveli myös muiden opiskelijoiden etuja. Myönnän, että ennen kurssin alkua oli vaikea saada itsensä motivoitumaan peruskurssista aiheesta, jota teen työkseni. Onneksi kurssi oli kuitenkin pakollinen, koska muutoin olisin jäänyt hyvää kokemusta vaille. Toivon lisäksi, että laatimastani yksinkertaisesta mutta käyttökelpoisesta ASP.NET webbisivustosta ja sitä seuravasta esseestä on hyötyä muille opiskelijoille. Olen ainakin itse kiinnostunut aiheesta ja päässyt mielestäni hyvin alkuun.

Mikko aka maikol

Nytkö se on viimein ohi?

•2009-01-22 • Jätä kommentti

Kaikki hyvä loppuu tunnetusti aikanaan, mutta niin tekee myös Studio 1.
Tätä hetkeä onkin odotettu itku silmässä, sormet verillä ja hermot riekaleina kuukausitolkulla,  mutta jotenkin ei nyt tunnukaan erikoiselta. :/ Elän kuitenkin vielä toivossa, että se hyvänolontunne vielä jostain putkahtaa.

Mutta palatkaamme ajassa taaksepäin, kauas kauas aikaan ennen ensimmäistä varsinaista Java-harkkaa.
Ensimmäinen konkreettisempi kosketukseni koko ohjelmointiin oli nollaharjoitus, jossa saimme eteemme lyhyen lyhyitä koodinpätkiä, jotka piti siivota toimivaan kuntoon. Se oli itse asiassa ihan mukavaa, ja odotinkin, en nyt sentään innolla, mutta positiivisin ajatuksin, ensimmäistä varsinaista tehtävää. Se sitten pläjähti päin naamaa kuin märkä rätti.
Yleensä mielialani kehitys Java-harkan aikana meni suurinpiirtein sitä rataa, että aiemman valmistuttua tullut hyvä fiilis katosi sillä sekunnilla, kun alkoi puurtaa seuraavan tehtävän parissa.

Tästä oli kuitenkin pari poikkeusta: viimeinen seikkailupeli -tehtävä sekä Sokoban 2.0.
Seikkailupelissä poikkeuksen aiheuttivat palautukseen jääneet bugit, jotka käytännössä estivät pelaamisen 5 kierrosta pidemmälle. Näin ei hirveän hyvää onnistunutta mielialaa päässyt syntymään. Toinen Sokoban-tehtävä taas meni pitkälti ensimmäisen siivellä ja Miinapelistä oppia ottaen, joten suuri mielialan alentuminen jäi kokematta.

Teoriatehtävät olivat sitten taas oma lukunsa.
Ensimmäinen esseemuotoinen Java-maailmassa hapuilu ei oikein iskenyt, mutta toinen käsitekarttaksi määrätty yritys tuntui selkeämmältä, ja päätinkin jatkaa Cmapin kanssa työskentelyä. Loppua kohden jopa opin hahmottelemaan aiheesta, josta en tajunnut juuri mitään, ihan kelvollisen kartan vanhoja karttoja ja esseitä tuijottelemalla.

Olosessioissa korostuivat ne suuret tasoerot ihmisiin, jotka oikeasti jotain ohjelmoinnista tiesivätkin tai olivat jaksaneet ottaa kunnolla selvää aiheesta. Tunsin välillä olevani pihalla kuin mystisestä valkeasta aineesta pyöritelty porkkananenäinen ja hiilinappinen lapsuudenmuisto. Toisaalta, tulihan sitä opittuakin jotain eikä tyhmälle pikkuveljelle ohjeitten kirjoittaminen ollut lainkaan hassumpaa.

Viimeisenä, muttei todellakaan vähäisenä, Studio 1 viskasi eteen projektin. Aiheen pitchaus oli hivenen pelottavaa, kun vasta yöllä ennen oloa sain jonkinlaisen idea, enkä ollut siitä vielä itsekään ihan perillä.  Myös suunnitelman kirjoittaminen oli haastavaa, koska en ollut pahemminjaksanut  paneutua vielä aiheeseeni.
Sen jälkeen, “lomalle” vetäydyttyäni, alkoi projektikin ihme kyllä jotenkin sujua. Sen viimeiset päivät olivat kyllä taas täyttä tuskaa kiiressä demossa paljastuneita bugeja metsästäessä ja raporttia rustatessa.

Mitä sitten jäi käteen?
Noh, ainakin pieni kammo pieleen meneviä palautuksia kohtaan, tyhjiä tiedostoja ja jar-paketteja…
Kaipa sentään jotain hyvääkin. Hetkittäin jo koodaaminen tuntui mukavalta kaiken mennessä putkeen, ja voinen nyt ajatella saaneeni pienen tuntuman siihen, mitä ohjelmointi ehkä on.
Tietysti myös pimeät illat Paniikissa taukojumpaten, pizzaa odottaen tai muuten häröillen ovat unohtumattomia kokemuksia. Olen kuitenkin onnellinen, ettei tarvitse enää istua siellä hikoilemassa tai palelemassa javaillessa yömyöhään.

Kaipa tämän uusiksi vetäisi, jos ihan pakko olisi, mutta ei kyllä kovin mielellään.

Suvi

 
Seuraa

Get every new post delivered to your Inbox.