Nostalgiaa ohjelmointikursseilta. Loppuuko se kaikki tähän?

Hilirimpsis vikaa kertaa.

Tähän kirjoitukseen (luultavasti) päättyy minun urakkani (luultavasti) yhtenä TKK:n hassuimmin ohjelmoinnin peruskurssista suoriutuneista opiskelijoista. Tarina alkoi syksyllä 2004 T-fuksina tietoteekkarien omalla ohjelmointikurssilla, jonka lopetin ylivoimaisena jo heti alkusyksystä ja aloin miettimään alan vaihtoa. Fuksiryhmästä kaikki aktiivit olivat erittäin harrastuneita koodaajia, mikä ihmetytti meikäläistä ja ajattelin, etten opi ikinä moisia temppuja.

Samaan aikaan tuleva tyttöystävä kertoi ohjelmoinnin olevan ”ihan kivaa”, mitä minä en pystynyt alkuunkaan käsittämään. Myöhemmin näin Studio1-kurssin tehtävänannot sekä henkilökohtaiset palautteet ja vertasin niitä Goblinin (=massaohjelmointikursseilla käytössä oleva tarkastusmasiina) antamiin vastaaviin tehtäviin ja palautteisiin, ja ajattelin, että mitäs ihmettä. Kylläpä vaikutti infolla tekeminen maanläheiseltä ja mukavalta.

Keväällä 2005 ajattelin, joululomalla viisastuneena, yrittää uudelleen. Tällä kertaa menin Ohjelmoinnin peruskurssi Y:lle (vai L:kö se oli). Jo muutaman viikon jälkeen lopetin ilman yhtään tuttua kurssilaista ja motivaatiota. Kaverien puutteen lisäksi toinen ihana lopettamismotivaattori oli mielestäni monotoninen Kerttu Pollari-Malmi.🙂 Samana kesänä oli edessä muutto T-osaston vehreämmälle puolelle olohuoneelle.
Syksyllä 2005 alkoi Studio1, joka sujuikin mukavasti kaiken muun paitsi teoriatehtävien, jotka eivät ”oikein napanneet”😉, osalta. Palkintona oli kurssin uudelleen suorittaminen myöhempänä ajankohtana. Käteen jäi 10op eli informaatioverkostojen ohjelmointikurssin verran. Seuraavana vuonna eli 2006 ajattelin käydä vain suppean kurssin, mutta ahnehdin niin paljon muitakin kursseja syksyyn, että kaikki palautukset myöhästyivät. Kurssi jäi kesken.

Tänä syksynä päätin tehdä kaiken vielä kerran alusta. Silti yli 25op muita kursseja vaikeuttivat aikataulutuksia sen verran, että tälläkään kerralla ei varsinaisesti hyvää mieltä kurssista oman panoksen takia jää, mutta onpahan tämä ainakin ohi, jos jostain syystä en onnistu reputtamaan. Näin, viides kerta toden sanonee!🙂

Koska lisäksi mulla on muutamaa tenttiä vaille kaikki väsyneet perusopinnot suoritettuna, saan seuraavan vuoden-pari keskittyä pää- ja sivuaineen mukaviin opintoihin, tämähän alkaa näyttää ihan hyvältä!

En ajatellut kirjoittaa tähän mitään referaattia siitä, mitä olen kurssilla tehnyt, vaikka jo näin lukematta voisin olettaa enemmistön näin tehneen. Tällaisen vanhuksen toivomukseksi voisi vaikka esittää, ettei näitä minun viimeisiä – päivän myöhässä laadittuja – kirjoituksia hyväksyttäisi ollenkaan, ja koska ne näköjään ovat pakollisia, ensi syksynä käynnistyisi ihanaakin ihanampi kuudes ohjelmointikurssi TKK:lla.😀

Tsemppiä kaikille ensi kevään kursseille ja eiköhän törmäillä jos jossakin merkeissä. Javaillaan kun tavataan.

-Henri

Minkä tyylinen oppija olen? Minkälainen tapa oppia ohjelmointia sopii itselleni?

Toinen kymmenen tärkeyspisteen otsikko yllä. Varsinkin ensimmäinen kysymys on jokaiselle opiskelijalle ja jopa ihmiselle tärkeä asia, jonka keksimiseen voi mennä kauankin aikaa. Jälkimmäinen kysymys tarkentaa ensimmäistä, joten rajaan tämän kirjoituksen aiheen ohjelmoinnin opiskeluun.

Olen aina ollut hirveän laiska opiskelemaan mitään itselleni vähänkään tylsää tai vastenmielistä. Ohjelmointi lukeutuu molempiin kategorioihin. Siksi kurssilla olevat teoriatehtävät ovat olleet tuskallisia tehdä, vaikka niistä läpi selvisinkin. Itse ohjelmointi menee ihan hyvin, ja koen oppivani sitä nopeimmin kokeilemalla. Kurssikirjaa en ostanut, vaan lainasin kirjastosta, mutta se maksoi minulle 11 euroa, koska kaksi kertaa unohdin uusia lainan ja sainpa tilille hetkeksi lainauskiellonkin.🙂

Itse asioista selvää ottaminen on raskasta ja aikaavievää. Varsinkin graafisiin käyttöliittymiin liittyvät asiat ovat tämän vuoksi olleet minulle raskaita. Sadat valmiit luokat ja niiden tuhannet metodit ja niistä sopivimpien etsiminen ja löytäminen ovat varmasti alkukynnyksen ylittymisen jälkeen käteviä käyttää, mutta minulle opettelun henkinen muuri on liian korkea ylitettäväksi – tai ainakin on ollut tähän asti.

Pidän vihjeiden perusteella tekemisestä, ja siksi olenkin aina nauttinut Studio1-kurssin ohjelmointiosan tehtäväkierroksista, joissa kerrotaan, missä järjestyksessä asiat kannattaa tehdä ja miltä niiden tulee näyttää. Jopa käytännön toteutukseen saa vähän apua, tai ainakin on kerrottu, mistä aiheeseen liittyvää teoriaa kannattaa opiskella. Varsinkin tänä vuonna vihjeet olivat tehtävänantojen välittömässä yhteydessä, mikä auttoi omaa keskittymistä ja opiskelua paljon. Minulle yhdessä tekeminen on aina ollut mieluisaa, mutta Studio1-kurssin suuresta yhteisöllisyydestä huolimatta ohjelmoimisesta on jäänyt vähän negatiivinen kuva ”yksinäisen puuhasteluna”. Ehkä siksikään ohjelmointi ei ole minun lempitekemistäni, etten usko koskaan haluavani tehdä tai suunnitella ohjelmia käytännön tasolla.

OLOsessioissa on hyvä idea, pienryhmäoppiminen ja asioiden pureskelu yhdessä, mutta sen toteutus on mielestäni itselleni sopimaton. Olisi hyvä, jos tilaisuudessa olisi puheenjohtajana asioista eniten tietävä, jolta olisi helppo kysyä mitä tahansa mieleen tulevaa ongelmaa. Tällä hetkellä OLOsessiot ovat ryhmäläisten yhteistä pohtimista asioista, joista assistentit jo valmiiksi tietävät erittäin paljon mutta ovat taka-alalla. Itselleni voisi sopia paremmin suorempi ”tässä aihe, lähdetään purkamaan tällä tavalla” -lähestyminen kuin Post-it -laput, tussit ja seitsemän tuskaista askelta. Myös se, että tapaamisen puheenjohtajaksi joutuu joku tehtävään sopimaton tai sitä haluamaton henkilö, on mielestäni aivan turhaa. Jos tapaamisen perusideassa on mielestäni joku virhe, asioiden omaksuminen ja niistä keskusteleminen vaikeutuvat minulle henkilökohtaisesti aika paljon. Itselleni sopisi ehkä parhaiten, että asiat käytäisiin läpi yhdessä ja pienryhmätasolla mistä tahansa asiasta voisi herättää keskustelua, jos ei ymmärrä tai haluaa lisäselvitystä. Keskusteluun voisivat osallistua kaikki, mutta sitä johtaisivat assistentit käytännönläheisin esimerkein. Tähän suuntaan ollaan ymmärtääkseni oltu muutama viime vuosi siirtymässäkin.

Tentissä huomasin, että ensimmäisten kahden osan teoriat eivät olleet ollenkaan tarvittavalla tavalla hallussa, mutta se oli odotettavaakin laiskasta lukemisesta johtuen. Tämä kaikki heijastui myös ohjelmointitehtäviin, joissa kesti aina aikansa opiskella tulevaa teoriaa ennen kuin pääsi kunnolla vauhtiin. Tekemällä teoriatehtävät kunnolla olisi ehkä säästänyt joissain ohjelmointiharjoitusten asioissa, mutta oppinut ehkä paljon sellaistakin, jota ohjelmointiharjoituksissa ei suoranaisesti tarvinnut. Minulle hieman vastenmielisen aihepiirin asiat eivät motivoineet tarpeeksi opettelemaan kaikkia asioita kunnolla.

Itselleni siis ohjelmoinnin opiskeluun sopivat parhaiten yhdessä tekeminen ja avoin keskustelu asioista enemmän tietävien kanssa, sekä käytännön kokeileminen ja itse tekeminen. Asioiden opettelu ennakkoon oppikirjoista tai nettiartikkeleista ei välttämättä ole se omin juttu, vaikka se varmasti paljon olisi oppimista helpottanutkin.

-Henri

Miten kurssia voisi parantaa?

Aah.. The mother of all questions. Not. Mutta kuitenkin tärkeä asia.

Koska uusien opiskelijoiden ensimmäinen syksy perinteisesti kuluu lähes kokonaisuudessaan tietokoneen äärellä ohjelmointia opetellessa, opetusajan maksimaalinen hyödyntäminen on mielestäni erittäin oleellinen asia. Olin itse Studio1-kurssilla ensimmäistä kertaa jo kaksi vuotta sitten. Kurssi on mielestäni muuttunut aika paljonkin silloisesta. Me emme tehneet ollenkaan tenttiä, blogin paikalla oli jokaisen henkilökohtainen portfolio, ohjelmointitehtäviä oli nykyisen kuuden sijasta viisi, bottiturnausta ei ollut, kumpaakaan turnausta ei arvosteltu, OLOsessioiden opetuksen taso oli heikompaa ja ainakaan muistaakseni projektityölle ei oltu varattu ohjattua opetusta joululoman aikana.

Lähes kaikki uudistukset ovat mielestäni parannuksia menneeseen, mutta käytännön pikkuasioita voisi viilata. Jos ohjelmointitehtävien keskiarvo on melkein neljä, mutta tentistä jaetaan sääliykkösiä, pitää mielestäni miettiä. Ovatko vaatimukset linjassa ohjelmointitehtävien vaatimusten kanssa, vai onko ohjelmointitehtäviä tehty yhteistyössä niiden muutamien asiat oikeasti parhaiten hallinneiden kanssa? Jos ohjelmointi- ja teoriatehtävien keskiarvot kohoavat lähelle nelosta, mutta tenteissä on havaittavissa selkeä kahtiajako osaajiin ja osaamattomiin, on joku pielessä.

Mielestäni tentin osuutta kurssin arvostelusta kannattaisi nostaa korkeammaksi, ja vaikeammin arvosteltavissa olevien asioiden, kuten näiden blogikirjoitusten sekä robo- ja bottiturnauksen arvostelun osuutta pienentää tai poistaa kokonaan. Tentin arvosanan tulisi mielestäni olla suoremmin linjassa koko kurssin arvosanan kanssa, koska samaa menetelmää käytetään muutenkin yleisesti koulumme kursseilla. Toisaalta ennen kurssia arvottujen ryhmien töiden oikeudenmukainen arvosteleminen on ongelmallista, koska riittää, että ryhmässä on yksi ohjelmointimestari, joka tekee tehtävän valmiiksi ja muut hoitavat dokumentointiosuuden. Jos ryhmään ei ohjelmointimestaria satu, on se huonompi juttu.

Kun mietin, kumpi oli parempi idea, tehdä portfolio vai kirjoittaa yhteistä blogia, en päässyt selvään lopputulokseen. Portfoliota tehdessä kenenkään ei tarvitsisi vaivata päätään sillä, miten muiden ryhmäläisten panos vaikuttaa omaan kurssiarvosanaan, mutta toisaalta olen ymmärtänyt, että ohjelmointi suuremmassa mittakaavassa yleensä on ryhmätyötä, jossa ryhmällä on yhteisiä tavoitteita ja vastuita. Toisaalta portfoliota tehdessä saa harjoitusta html:n käytöstä, saa itse päättää, minkälainen toteutuksesta tulee ja pääsee ehkä enemmän toteuttamaan itseään muuten kuin verbaalisesti. Blogissa on helppo seurata, minkälaisissa tunnelmissa muut ryhmäläiset kurssia suorittavat, ja kertoa omia mielipiteitään muille. Yhteisessä vastuussa on taas arvosteluongelmansa, vaikka blogi arvioidaan osaksi henkilökohtaisestikin. Tässä ryhmädynamiikkaa testataan toki eri tavalla kuin robo- ja bottiturnauksissa, sillä ei riitä, että yksi kirjoittajamestari hoitaa homman, kun muut katselevat vieressä, vaan ainakin melkein koko ryhmän panosta tarvitaan blogin onnistumiseen. Tämän vuoksi blogi sopii ryhmässä arvosteltavaksi kokonaisuudeksi mielestäni huomattavasti robo- ja bottiturnausta paremmin.

Ohjelmointitehtävien lisääminen yhdellä ei uskoakseni vaikuttanut kovin oleellisesti kurssin kokonaistyöläyteen, mutta graafisten käyttöliittymien osuuden lisääminen yhdestä viidesosasta yhteen kolmasosaan kurssin ohjelmointitehtävien sisällöstä on mielestäni huippu-uudistus! Vieläkin koen itselleni henkiseksi esteeksi graafisten käyttöliittymien tekemisen, sillä hyppäys valmiiden luokkien hyödyntämisen maailmaan tuntuu liian suurelta.

OLOsessiot, nuo ainaiset henkilökohtaiset riippakiveni, ovat minun nähdäkseni edelleen kurssin ”löysin” osa. Jos nuo kymmenisen kaksoistuntia vaihdettaisiin vaikka yhdessä ohjelmoimiseksi niin, että edelleen pienryhmissä yksi assari kerrallaan tekisi konkreettisia mallitehtäviä yhdessä ryhmän kanssa, luulen, että saavutettava hyöty olisi moninkertainen verrattuna nykyiseen. Saataisiin kaksinkertainen määrä opetusta ja konkreettisia esimerkkejä siitä, miten kannattaa tehdä ja miten ei, kun nykyään sessioissa istutaan tuppisuina ja kirjoitellaan post-it -lapuille mielestäni aivan turhanpäiväisiä asioita, kun konkreettinen oppiminen jää todella vähäiseksi.

Kokonaisuudessaan kurssi on mainio paketti, ja varsinkin ohjelmointitehtävät ovat erittäin mielenkiintoisia. Edellä pohdiskelemillani asioilla voisi ehkä viilata toimivamman ja tehokkaamman ratkaisun, mutta varmasti käytännön muutoksia tarvitsisi miettiä tarkkaan ennen toteuttamista.

-Henri

Siinä se sitten oli

Studio1:n viimemetreillä olen Berliinissä luistelemassa, mutta silti mielessäni pyörii kaikki projektiin ja koko kurssiin liittyvät asiat. Näin kahdelta yöllä (paikallista aikaa), kilpailujen ollessa vihdoin ohi, selaan kurssin aikana täyttämääni vihkoa ja ylitsepursuavaa muovitaskua sisältäen lähinnä koodia, OLO-monisteita ja käsitekarttoja. Tunne on haikea nyt kaikkea kurssin hienoja ja vähemmän hienoja onnistumisen, epäonnistumisen tai muuten koskettaneita hetkiä läpikäydessäni. Hieman on myös paniikinomainen, sillä nettiyhteyttä ei täällä ole saatavilla ja huomenna Suomeen palatessani jännittää, olenko kotona ennen iltaa palauttamassa kaikki puutuvat 4-5 blogikirjoitustani.

Kurssista on jäljellä Eclipse-projekteja, itse suunniteltu peli, muovitaskullinen koodia paperilla, OLO-tapausohjeistuksia, esseitä, käsitekarttoja ja reilusti yli puolivälin täytetty A4-kokoinen vihko täynnä muistiinpanoja, ranskalaisia viivoja, paperikoodausyritystä, projektisuunnitelmaa, ihmeellisiä piirrustuksia ja nyt viimeisenä blogikirjoitussuunitelmia. Muistoja siis jäljellä

Selaan läpi muovitaskullisen papereita. Koodi näyttää ihanan helpolta ensimmäisissä tehtävissä. Luokat ovat lyhyitä, mutta täysin vailla minkäänlaista kommentointia. Tämän jalon taidon opin kunnolla vasta kolmannessa tehtävässä. Toisessa oli jo yritystä, mutta hyvä, jos siinä vaiheessa itsekään tiesin, mitä koodasin. On huvittavaa katsoa, miten en osannut this.:n käyttöä tai tiennyt mikä on parametri. Toisaalta myös helpottavaa huomata miten kurssin aikana koodi, sen tyyli ja siisteys, ja ylipäänsä koko tekeminen on parantunut.

Ensiaskeleet tuntuvat kaukaisilta. Jotenkin sitä ei silloin tajunnut, mitä tämä ohjelmointi oikein on, ja mihin minä sitä tarvitsen. Mielestäni oli aivan turhaa kirjoittaa kymmenenkertainen määrä tekstiä, jotta saisi tulostettua tekstin ”Hello World!” Miksei saman tien vain kirjoittaisi kyseistä lausetta? Mutta päästiin Sikobaniin ja päästiin projektiin ja nyt edessä enää loppuraportin palautus!

Neljännen tehtävän Nakyma-luokka johdatteli jo graafiseen maailmaan. Itse koodia en uskaltanut sen enempää selata tai etenkään siitä mitään ymmärtää; kauhulla vain katsoin ja mietin, että tuollaistako meillä on seuraavaksi edessä tehtävänä. Koko luokka oli minulle vain järjetön kasa oudosti nimettyjä attribuutteja ja metodeja ja importattuja luokkia. Sikoban kuitenkin valaisi asiaa, sillä graafinen toteutus aloitettiin aivan alusta luomalla peli-ikkuna(JFrame) ja siihen sisälle tyhjä harmaa paneeli(JPanel). Kohta kohdalta ohjetta seuratessa valaistuin yhä enemmän ja homma alkoikin pelittää. Projektin teko oli helppo aloittaa peli-ikkunasta ja sen sisällä olevista paneeleista, näihin JLabeleita ja niihin sisälle jotain tekstiä, ja tadaa, pohja pelille on valmiina.

 

Javasta olen purkanut tänne jo jonkin verran aiemminkin, joten nyt otan esille aiheen, mikä ei ehkä sittenkään kuulu loppupuheenvuoroon, mutta meni jo sinne, ja mitä en ole blogissa vielä hirveän paljon käsitellyt, eli esseet, ja siis mitä niistä oikein jäi käteen… Aloitan alusta.

Ensimmäinen essee Luokat ja Oliot ikään kuin johdatti Java-maailmaan. Kirjoittaminen oli lähinnä Kalakirjan tekstistä poimittujen tärkeiltä kuulostavien kohtien uudelleenmiettimistä ja tuottamista. Käsite olio oli minulle ainakin hyvin epäselvä ja kirjoittaminen vaikeaa. Luokka ja siihen liittyvät käsitteet olivat helpommin sisäistettävissä. Kurssitentissä oli ensimmäisenä tehtävänä selittää käsitteet luokka ja olio. Muistin yhä ainoan fiksun lauseen esseestäni: ”Luokka on olio-ohjelmoinnin peruskäsite ja olio on jonkin luokan ilmentymä.” Muu olikin soopaa, josta en vielä kirjoittaessani tajunnut puoliakaan siitä mitä koodatessani opin. Kalakirjan avaaminne oli jonkinasteinen kynnys koko kurssin aloittamiseen. Ensimmäisen deadlinen jälkeen oltiinkin sitten jo täysin jumissa Javassa.

Javan tietotyypit johdatti käsitekarttojen salaiseen maailmaan. Ihastuin niiden tekemiseen siinä määrin, että loput kolme teoriatehtävää palautin käsitekartan muodossa. Itse aihe oli suhteellisen helposti sisäistettävissä, sillä siinä esiintyviä käsitteitä oli tullut vastaan jo ennen tehtävän julkistamista. Tietotyypeistä tuli käytettyä lähinnä ArrayListia ja ehkä jokunen Map saattoi esiintyä jossain tehtävässä. Käyttökokemukset vaikuttivat projektissa käytettäviin luokkiin, ainoa kokoelma siinä olikin juuri ArrayList.

Poikkeukset oli mielenkiintoinen aihe. Hauska oli nähdä, mitä kaikkea voi ilmestyä ja vähän opetellakin tulevaa varten, mistä niitä NullPointerexceptioneja ja StackoverFloadErroreita oikein syntyy, ja miten niitä voi välttää. Entä mitä tehdä kun vaarana on että koko ohjelma kaatuu, enkä löydä virhettä: opin luomaan ja heittämään oman poikkeuksenkin. Ja ihan huipennokseksi päädyin sitten viidennessä Java-tehtävässä ottamaan NullPointerin kiinni, ihan vain varmuuden vuoksi…

Swing oli aiheistä, no ei nyt tärkein, mutta hyvin tärkeä kuitenkin nyt kun miettii projektin toteuttamista ja sen graafisen käyttöliittymän pohjautumista täysin Swingiin. Aiheen tärkeyden huomaa vasta käytännössä, sillä ainakin minulle tämä älyttömän laaja kokonaisuus jäi tässä vaiheessa vielä yhteiskuvaltaan hajanaiseksi. Kokonaisuus ja kaikki sen sisältämät upeat hienoudet sain kuitenkin selville Sikobanin, ja viimeistään projektin, myötä.

Ja vielä viimeisestä eli säikeistä. Ehdin pitkästä aikaa perehtyä esseeaiheeseen kunnolla. Jäi itseasiassa harmittamaan, sillä en ehtinyt kokeilla säikeiden käyttöä ennen kuin vasta projektissa. Projektissanikin käytin ainoastaan yhtä säiettä äänitehosteiden soittamiseen ja siis yhtä säikeiden metodia(start()). Nyt siis olen perillä tästä hienosta ja varmasti erittäin monipuolisestakin aiheesta ainoastaan pintapuolisesti ja senkin lähinnä teoriatasolla. olin kuitenkin positiivisesti yllättynyt, kun osasin sellaisen tehdä jä vielä kaiken lisäksi käynnistääkin! Oli siis senkin aiheen opiskelusta hyötyä.

Yleisesti voin todeta, että vasta jälkikäteen huomaa asioiden opiskelun tuottaman hyödyn. Näin kävi lähes kakkien teoriatehtävien kohdalla. Jotenkin Java-tehtävien kanssa painiessa aivot syrjäyttivät täysin kaiken teoreettisen ja esseen/käsitekartan tekeminen jäi viimetippaan ihan joka kerta. Teoriatehtävät tukivat hyvin koodaustehtävissä onnistumista, ja viimeisiä tehtäessä pystyi jo päättelemään seuraavan uuden asian Java-tehtävässä. Ne aiheet, jotka olin opiskellut hyvin teoriatasolla toteutuivat paremmin myös koodissa.

Noniin, ja takaisin aiheeseen eli itse kurssiin. Fiilis on helpottunut, muuta ei voi sanoa! Omalta osaltani voin todeta, ettei tämä ollut minulle paras tapa opetella ohjelmointia. Olisin kaivannut jotain oppituntien tai miniluentojen tapaisia lisää. Omat aivoni eivät olleet aivan koko kurssin aikana käytettävissä, joten vaikka itseopiskelemalla ja kokeilemalla oppii paljon, ei se minun kohdallani tällä kertaa toiminut.

Hassua oli mielestäni se, että yhteistyö kurssin aikana oli kiellettyä ja ilmassa leijui uhkaus plagiointiyritysten paljastamisesta. Toki on äärettömän tärkeää, että jokainen kirjoittaa koodinsa itse ja oppii, mutta jo ensimmäinen tehtävä osoittautui monille sen verran haastavaksi, että pelkillä assariharkoilla ei siitä olisi yksin selvitty! Minä en ainakaan saanut aivojani vielä siinä vaiheessa yhtään Java-tasolle. Paljon helpompi oli miettiä ongelmia ja niihin ratkaisuja porukassa. Ja alkuvaiheessa tämä tarkoitti suhteellisen samankaltaista lopputulosta koodissa. Myöhemmin, taitojen ja opittujen asioiden karttuessa, toteutustapavaihtoehdot lisääntyivät ja yhdessä pohdituista algoritmeistä tuli kirjoitettuna todella erilaisia.

Vuodatusosiokin piti tähän mahduttaa, mutta nyt lopuksi haluan kiittää kaikkia assareita hyvästä assaroinnista ja kanssaopiskelijoita hyvästä hengestä! Hajoamissessiot Paniikissa ja Maarilla jäävät muistoihin hyvinä sessioina. Porukassa hajoaminen oli paljon helpompaa kun vertaistukea löytyi. Kurssin järjestäminen näin syksyllä kyllä yhdistää toisilleen vierasta phuksiporukkaa jollain tasolla ehkä ikävällä, mutta mielestäni kuitenkin mahtavalla tavalla. Ehkä joskus tulen jopa kaipaamaan paniikkikoodaussessioita Maarin luokassa, jossa samaan aikaa 20 phuksia repii hiuksiaan päästä Javan takia.

-Meri

Mitä hyötyä on siitä, että metodeilla on argumentteja?

Metodien argumentit, tuttavallisemmin (ainakin minulle) parametrit, esiintyivät ohjelmointitehtävissämme alusta alkaen. Kesti hetken aikaa ennen kuin ymmärsin niiden syvällisemmän merkityksen. Tehtävissä sanottiin, että laita tämä metodi ottamaan parametrinaan kokonaislukumuuttuja ja helppoahan se oli sokeasti totella ohjeita. Ensimmäisen harkan aikana opin jo ymmärtämään, että parametreilla pystytään vaikuttamaan metodin palatusarvoon, mutta sen syvällisemmin en asiaa pohtinut.

Tässä vaiheessa minulle oli vielä täysin hämäränpeitossa, mitä pääohjelmametodin String[] args oikein tarkoittaa. Olin aina vain kirjoittanut sen sulkujen sisälle kiltisti vailla sen kummempaa ymmärrystä sen tarkoitusperistä. Neljännessä Javatehtävässä vihdoinkin käsiteltiin sitä. Kyse onkin komentoriviparametrista. Omassa ohjelmassamme komentoriviparametreiksi määritettiin nimi ja nopeus. Käynnistettäessä ohjelma kysyi näitä määritettyjä arvoja ja tallensi ne muistiin. Näin ohjelman käyttäjä sai määritellä aluksi oman nimensä ajaessaan ohjelmaa.

Main-metodi on kuitenkin poikkeustapaus. Kurssin edetessä oppia kertyi ja metodien parametritkin tulivat tutummaksi ja tutummaksi.  Ne muodostuivat itsestäänselvyyksiksi. Suuri askel oli kun osasi itse määrittää metodille tilanteeseen sopivat parametrit. Varsinkin lopputehtävissä tuli pelailtua konstruktorien parametrien kanssa, kun monen luokan piti tuntea moni muu luokka ja parametrejä kertyi lukuisia tehtävän edetessä.

Parametreilla voi siis vaikuttaa metodin palautusarvoon. Kuvitellaan, että metodi ottaa parametrinaan boolean-muuttujan ja metodin sisällä määritellään erilaiset palautusarvot sekä true-arvolle, että false-arvolle. Nyt metodi palauttaa arvon, joka riippuu annetun parametrin totuusarvosta. Tässä tulee juuri ilmi parametrien eli argumenttien hyödyllisuus – ei tarvitse tehdä jokaiselle tilanteelle omaa metodiansa.

-Olli

Miten ajatukseni ohjelmoinnista on muuttunut kurssin aikana?

Iki-ihana kurssimme (näin pystyn jo melkein ajattelemaan näin kurssin viimemetreillä) Studio1 starttasi syyskuun puolivälin tienoilla. Elokuun lopussa saimme kotiin kirjeen mukana esitteen, jonka tarkoitus oli antaa hieman esimakua tulevasta syksystä ja Java-ohjelmoinnista. Minulle tämä ei kuitenkaan sanonut yhtään mitään. Ajatus koko hommasta oli vain että ”TÄH, koodausta, no okei sitten..”. Pahaa-aavistamattomat phuksit kerääntyivät TUAS-talon luentosaliin aloitusluennolle. Tällöin kuulimme myös ensikertaa Kalakirjasta ja tajusimme, mitä koko syksymme tulee tästedes olemaan.

Ensimmäinen harjoitus sujui vielä hyvin tietämättömänä mitään itse koodauksesta tai siitä, mihin kaikkeen sitä voi hyödyntää. Yhteys Java-peleihin oli erittäin häilyvänä mielessä. Jotenkin Java ei ohjelmointikielenä, tai ylipäänsä ohjelmointi, sanonut minulle mitään! Mielestäni oli kummallista kirjoittaa kymmenen riviä tekstiä, jotta saisi tulostettua tekstin ”Hello World!” Miksei saman tien vain kirjoittaisi kyseistä lausetta?

En lähtenyt tähän hommaan riittävän hyvällä asenteella. En ajatellut ohjelmointia mitenkään helppona hommana, mutten toisaalta sellaisenakaan, mitä haluaisin tai ylipäänsä voisin vielä joskus osata. Kurssin alkuvaiheessa näin pari kurssilla toteutettua projektia, nämä olivat pelejä, enkä ikimaailmassa osannut kuvitellakaan itse tekeväni mitään senkaltaistakaan. Tuossa vaiheessa opetteluni oli lähinnä ohjeen sokeana seuraamista ja assareilta saamien neuvojen mukaan koodin kirjoittamista. Eli sisäistetty asia jäi ehkä kymmeneen prosenttiin tavoitteesta. Jotenkin suljin Javan kokonaan pois kaiken muun tieltä. En ymmärtänyt, miksi jotain tällaista pitää opetella.

Koodaus alkoi synkän harmaalla Emacs-editorilla. En koskaan oppinut käyttämään kaikkia sen ominaisuuksia, sillä hajosin jo copy-pasten aiheuttamaan jumitustilaan. Eclipse helpotti elämääni sekä fyysisesti että henkisesti. Jotkut tuntevat nostalgiaa nyt myöhemmässä vaiheessa käyttäessään Emacsia. Jotenkin en itse koskaan oikein ihastunut Emacsin käyttöön. Eclipsen avulla opin paljon lisää ja paljon hyödyllistä, muunmuassa parametreista ja valmiiden luokkien tarjonnasta. Aloin oikeasti, ehkä jollain tuntemattomalla tasolla, välillä jopa pitämään koodaamisesta.

Vihdoin, kaikista kolmesta ensimmäisestä tehtävästä selvinneenä, neljäs tehtävä toi mukanaan jo jotain ihan konkreettista näkuviin ikuisen puurtamisen jälkeen. Pääsi jo seuraamaan omaa tuotostaan ja pelaamaan ”itse tehtyä” peliä. Sikobanin myötä pääsin luomaan oman graafisen käyttöliittymän. Mielenkiinto lisääntyi koko ajan, kun halusi saada lisää toiminnallisuutta, vielä enemmän juttuja näkyviin!

Omaa aikaa ei ollut käytettävissä koodille, eikä se alkuvaiheessa vielä haitannutkaan. Kuitenkin algoritmit olivat monimutkaisia jo alkuvaiheessa ja näin tuntuivat hyvin hyvin hankalilta vielä myöhemminkin. Jälkeenpäin harmittaa kuinka paljon enemmän olisin voinut alkuvaiheessa perusasioista opetella, ja kuinka paljon enemmän nyt osaisin, kuinka hienon projektin olisinkaan voinut saada aikaiseksi.

Projektin voisin sanoa muuttaneen käsitystäni ohjelmoinnista varmasti eniten. Kun ei ollut käytettävissä assareita, joiden hihasta olisi voinut nykäistä epävarmassa tilanteessa, oli vain pakko uskaltaa kokeilla! Omat ratkaisut eivät aluksi tuottaneet onnistunutta lopputulosta läheskään aina, mutta pienetkin onnistumiset kohottivat itsetuntoa ja auttoivat eteenpäin! Projektiini olen lopulta tyytyväinen . Opin yhteensä varmasti enemmän kuin koko kurssin aikana. Opin itse perehtymään virheisiini ja niiden aiheuttajiin sekä ratkaisuihin. Nyt tiesin jo hieman etukäteen jotain siitä, mitä tulee tapahtumaan ohjelmaa ajettaessa. Projektissani käytin tietenkin tuttuja (Javan valmiita)luokkia ja looppeja. For-lauseesta tuli suosikkini ja ArrayList oli esiintynyt jo niin monta kertaa, että ne olivat selvät valinnat, kun mietin eri silmukka- ja kokoelmavaihtoehtoja.

Nyt kun sain projektinikin tehtyä ja sen myötä huomattua, kuinka paljon loppujen lopuksi itseasiassa osaa koodata, (paljon olisi tietysti opeteltavissa vielä, jos haluaisi) on käsitys koko kurssia kohtaan hieman muuttunut. Projektin aikana koodin kirjoittaminen ei tuntunut hirvittävän ylivoimaiselta paria poikkeusta lukuunottamatta. Luulenpa, että asiaan vaikutti eniten juuri se näkyvän tuloksen aikaansaaminen. Helpompi ajatella, keksiä uusia ideoita ja korjata virheitä, kun lopputulos on nähtävissä. Itseluottamus oli myös kova tekijä tässä, oli paljon mukavampi tehdä jotain, kun tiesi, että siinä voi myös onnistua!

Kyllä näin lopuksi on pakko sanoa, että on se kivaa kun sen osaa🙂. Kaverit ja sukulaiset ovat innoissaan pienistäkin ohjelmista, mitä on saanut aikaiseksi. Monta tilausta olen saanut koodattavaksi, mutta katsotaan nyt, avaanko Eclipseä enää tänä vuonna, niin mukava kaveri kun siitä onkaan tullut.

-Meri

Koodieditorit ohjelmoinnin apuna

Tuntuu vähin nurinkuriselta kirjoittaa vielä päätöspuheenvuoron jälkeen, mutta täältä tulee nyt vielä se toinen portfolioessee.

Kurssin aikana tuli käytettyä monenlaisia ohjelmia. Aivan uutta olivat koodieditorit, tai jos nyt vähän hienostuneemmasta ohjelmasta puhutaan, kehitysympäristöt. Ensimmäiset ohjelmointitehtävät tuli paahdettua läpi Xemacsia käyttäen. Xemacs tuntui todella näppärältä ohjelmalta, se pystyi jopa korostamaan tekstiä tuoden suuren avun koodausarkeen.

Liikkui kuitenkin huhuja vielä hurjemmasta sovelluksesta. Eclipse pystyisi näyttämään suoraan virheitä reaaliaikaisesti kääntävällä virtuaalikoneella. Se sisältäisi myös sisäänrakennetun API-hakemiston, jolloin varsinaista Sunin API-sivustoa ei tarvitsisi aivan jatkuvalla syötöllä selailla.

Kokeillessani Eclipseä ensimmäisen kerran olin jonkun verran epäluuloinen: se tuntui vähän monimutkaiselta kaikkine pikkuikkunoineen ja pikanäppäimineen. Epäluulot haihtuivat kuitenkin nopeasti: Eclipse nopeutti ja helpotti koodausurakkaa suuresti. Ei tarvinnut enää leikkiä komentorivin kanssa vaan Eclipse laittoi classit huutamaan hoosiannaa yhdellä hiirenklikkauksella.

Projektin jälkeen Eclipsestä oli tullut jo niin kiinteä osa koodausprosessia, että ihan helpolla en sitä vaihtaisi takaisin XEmacsiin. Toisaalta saattoi olla ihan hyvä asia, että ensimmäiset Java-kotitehtävät tuli tehtyä Xemacsilla. Se pakotti miettimään todella oikeaoppista Java-syntaksia – näin ainakin assareiden mielestä.

Sun Microsystemsillä on myös oma vastineensa Eclipselle: NetIde Javabeans. Tätä ohjelmaa ei tullut koskaan käytettyä (ei ollut varmaan tarpeenkaan).

Käsitekarttojen teossa tuli tutustuttua myös uuteen ohjelmaan – CmapToolsiin. Se oli kaikenkaikkiaan positiivinen yllätys. Käyttöliittymä oli yksinkertainen ja ohjelma teki nättiä, antialiasoitua jälkeä. Tutustuimme myös dialogikarttaohjelmaan, joka jäi vaisuksi tähdenlennoksi Sitä käytettiin ainoastaan yhdessä OLO-sessiossa.

Käytin myös omia grafiikkaohjelmia blogikirjoituksissa ja teoriatehtävien viimeistelyssä. Parhaan lopputuloksen sai usean eri ohjelman parhaita puolia hyödyntämällä.

Syksyn aikana tuli vietettyä (liian) paljon aikaa tietokoneen ääressä. Myös IRC:n käyttö juurtui selkäytimeen. En nyt tiedä onko se kovin hyvä asia…  Laadukkaat ohjelmat auttoivat huomattavasti syksyn urakkaa. Eclipse saa nyt kuitenkin levähtää jossakin syvällä kiintolevyn uumenissa – ainakin hetken.

 

– Teemu


joulukuu 2016
M T W T F S S
« Jan    
 1234
567891011
12131415161718
19202122232425
262728293031