Teknillinen korkeakoulu
Tietojenkäsittelyopin laboratorio
Lauri Malmi
10.9.2001

Ongelmalähtöinen oppiminen ohjelmoinnin peruskurssilla:  T-106.213 / OLO

Kokeilukurssin kuvaus, syksy 2001
 

1. Taustaa

Ohjelmoinnin perusopetuksessa yksi merkittävä ongelma on kurssien suuri keskeytysprosentti. Kursseilla Tik-76.020/030, eli Ohjelmoinnin peruskursseilla L1/Y1 (nykyisin T-106213/T-106216) sekä niiden edeltäjällä, kurssilla Tik-76.002 (Tietotekniikka B) kurssin aloittaneista vain 50-70% sai suoritettua kurssin loppuun saakka.  Tämä johtaa merkittävään resurssien tuhlaukseen niin opiskelijoiden itsensä osalta kuin kurssin opetushenkilöstönkin osalta.

Informaatioverkostojen koulutusohjelmassa on vuosina 1999-2000 kokeiltu heille räätälöidyllä rinnakkaisperuskurssilla (T-106.219, Informaatioverkostojen Studio 1) ongelmalähtöistä opetusta (Problem-Based Learning).  Ensimmäisenä vuonna koko menetelmä oli täysin uusi niin opiskelijoille kuin opettajillekin ja silloin monenlaisten alkukankeuksien jälkeen saavutettiin suurin piirtein sama tulos kuin normaalikurssillakin.  Toteutusta muutettiin kokemusten perusteella ja syksyllä 2000 tulokset olivat erinomaisia.  Kukaan uudella metodilla opiskellut kurssilainen ei keskeyttänyt ja kurssilaisten keskitulos oli n. 80% maksimipisteistä.  Esitietokartoituksen tähän ryhmään oli valittu 31 henkeä, joilla yhtä poikkeusta lukuunottamatta ei ollut juuri lainkaan aiempaa ohjelmointikokemusta.  Ne kurssilaiset, joilla tällaista kokemusta oli, suorittivat kurssin toisella menetelmällä, käytännössä henkilökohtaisen projektin avulla.

Näin huomattavan hyvä tulos ei voi selittyä vain sillä, että kurssilla olisi ollut erityisen lahjakkaita oppilaita ja he olisivat saaneet ohjausta paljon enemmän kuin normaaliopetuksessa.  Käytetyissä opetusmuodoissa täytyy olla jotakin sellaista, joka on edesauttanut hyvän tuloksen syntymistä ja näin ollen sitä kannattaisi soveltaa muussakin opetuksessa.  Valitettavasti studiokurssilla käytetyt menetelmät eivät sellaisenaan skaalaudu massaopetukseenja siksi tässä kokeilussa onkin tarkoitus selvittää, voidaanko opetusmenetelmää muokata ja yksinkertaistaa siten, että se voidaan toteuttaa suurillakin kursseilla ilman, että menetetään saavutettuja etuja.

2. Kokeilun toteutus

Kokeiluun otetaan syksyn L1-kurssilta mukaan n. 30 vapaaehtoista.  Näistä muodostetaan viisi ryhmää.  Jos vapaaehtoisia on enemmän kuin tämä määrä, etusijalla ovat henkilöt, joilla on vähän tai ei lainkaan ohjelmointikokemusta.  Ryhmien sisällä pyritään jakamaan osallistujat lähtötason mukaan, jotta ryhmistä tulisi jossain määrin homogeenisia.  Kullekin ryhmälle määritetään yksi ohjaava assistentti, joka pitää ryhmään yhteyttä ja arvioi osan sen jäsenten suorituksista.

Kokeilukurssin suorittaminen edellyttää sitä, että osallistuu aktiivisesti ryhmätyöskentelyyn ja ns. tapausten käsittelyyn.  Lisäksi tulee tehdä annetut harjoitustehtävät, joissa on sekä ohjelmointiharjoituksia että lyhyitä esseitä.  Kurssiin kuuluu myös ohjelmointiprojekti ja tentti, jotka ovat samoja kuin vakiokurssilla.  Kokeiluun osallistuvat saavat työstään 6 opintoviikkoa vakiokurssin 5 opintoviikon sijasta.

2.1 Tapaukset

Jokainen ryhmä kokoontuu viikottain istuntoon käsittelemään annettuja tapauksia ja tehtäviä.  Ryhmä sopii itse kokoontumisajan ja -paikan.  Näissä istunnoissa ei pääsääntöisesti ole mukana tutor-opettajaa.  Sen sijaan ryhmä tapaa oman assistenttinsa tämän vastaanotolla kerran viikossa n. puolen tunnin ajan.  Tässä istunnossa käsitellään ryhmällä ja sen jäsenillä olleita ongelmia.  Assistentti antaa silloin myös lyhyesti palautetta ryhmän jäsenten tekemistä tehtävistä.

Ryhmä käsittelee viikottaisessa istunnossa annetut tapaukset.  Näiden joukossa on suunnittelutehtäviä ja analyysitehtäviä, joissa pitää selvittää annetun ohjelman toimintaa.  Edellisten tavoitteena on harjoittaa ongelmaratkaisu- ja suunnittelutaitoa.  Jälkimmäisten tavoitteena on selventää, miten tietokoneohjelmat todellisuudessa toimivat.  Tapausten käsittelyssä on seuraavat vaiheet:

  1. Järjestäytyminen. Ryhmä valitsee omissa kokoontumisissaan keskuudestaan kutakin tapausta varten puheenjohtajan ja sihteerin.  Puheenjohtajan tehtävänä on pitää istunto kasassa, jotta esillä olevat tehtävät saadaan käsiteltyä.   Sihteeri auttaa istunnon aikana pitämällä kirjaa ja jäsentämällä esille tulevia ajatuksia.  Hän myös kirjaa ylös ratkaisuhdotukset sekä oppimistavoitteet.  Istunnon jälkeen hän toimittaa muistionsa ryhmän muille jäsenille sekä vastuuassistentille.
  2. Tehtävään perehtyminen.  Ryhmä selvittää itselleen, mitä tehtävässä tulee tehdä.  Kirjataan ylös mahdolliset epäselvyydet, jotka pitää tarkistaa assistentilta.
  3. Aivoriihi. Aivoriihessä ryhmän jäsenet tuovat vapaasti esiin ajatuksia, käsitteitä ja ideoita, joita tapauksen aiheeseen ja tehtäviin liittyy.  Ne kirjoitetaan liimalapuille ja istunnon sihteeri jäsentelee niitä taululle mielestään mielekkääksi kokonaisuudeksi.  Jäsentely voidaan toteuttaa myös niin, että kaikki ryhmän jäsenet osallistuvat siihen taulun ääressä.
  4. Suunnittelu / Analyysi.  Riippuen tehtävän luonteesta toimitaan seuraavasti:
    1. Suunnittelutehtävässä ryhmä hahmottelee yhdessä ratkaisun perusperiaatteet ja kehittää ratkaisua eteenpäin niin pitkälle kuin tehtävässä on ohjeistettu tai tuntuu mielekkäältä.  Suunnittelutehtäviä ei ole tarkoitus ratkaista niin pitkälle, että ruvettaisiin kirjoittamaan Java-koodia.  Sen sijaan ratkaisuun kuuluu ongelman käsitteellinen analyysi ja sen perusteella luokkien ja olioiden sisällön ja toiminnallisuuden määrittely.  Mahdolliset tietorakenteet määritellään myös.  Suunnittelu pysähtyy viimeistään silloin, kun ruvetaan kirjoittamaan metodien toiminnallisuutta Javalla.
    2. Analyysitehtävässä joudutaan selvittämään, miten annettu ohjelma toimii joko oikein tai virheellisesti.  Tällöin keskitytään kuvaamaan sanallisesti ja käsitteellisesti ohjelman toiminta sekä se, mitä ohjelman suorituksen eri vaiheissa tietokoneessa tapahtuu.
  5. Oppimistavoitteiden määrittely.  Lopuksi ryhmä määrittelee ne asiat, jotka jokainen selvittää itselleen seuraavaan tapaamiseen mennessä.  Tavoitteet tulee määritellä niin yksityiskohtaisella tasolla, että ne ymmärretään yhteisesti.  On erityisen tärkeää ymmärtää, että oppimistavoitteet ovat yhteisiä ja jokainen opiskelee ne.  Tässä ei ole työnjakoa ryhmän jäsenten kesken.  Tässä yhteydessä kannattaa keskustella myös siitä, mistä lähteistä tietoa kannattaisi etsiä.
  6. Itsenäinen opiskelu.  Jokainen ryhmän jäsen opiskelee viikon aikana sovitut asiat käytettävissään olevista tietolähteistä.  Tällöin jokainen myös miettii ratkaistavan tehtävän tai analysoitavan ongelman yksityiskohtia ja ratkoo niitä seuraavaa kokoontumista varten.
  7. Purku. Purkuvaiheessa ryhmä keskustelee tehtävien ratkaisuista ja opituista asioista yhdessä.  Tapauksen edellisen kerran puheenjohtaja laatii esityslistan, joka kattaa oppimistavoitteet ja tehtävät.  Purkuvaiheessa on keskeistä käydä läpi asiat siten, että kaikki asiat on ymmärretty.  Sihteeri kirjaa ylös ne asiat, joissa jokin asia on jäänyt epäselväksi.  Ryhmä ottaa ne esille viikkotapaamisessaan assistentin kanssa.
  8. Kun tapaus on purettu, siirrytään seuraavan tapauksen avaamiseen, valitaan uusi puheenjohtaja ja sihteeri jne.  Kussakin istunnossa siis puretaan yksi tapaus ja avataan seuraava.  Tyypillinen aika, joka tähän kuluu, on 2-3 tuntia.
  9. Tapauksen puheenjohtaja ja/tai sihteeri koostaa tapauksesta lyhyen raportin, joka sisältää seuraavat asiat:
    1. Ketkä olivat läsnä avauksessa ja purussa?
    2. Mitkä olivat oppimistavoitteet
    3. Purkutilaisuudessa läpikäydyt asiat
    4. Purkutilanteessa epäselviksi jääneet asiat
    Tämä raportti lähetetään ryhmän assistentille ja Lauri Malmille.
Tapauksia tulee olemaan kurssin aikana 8 kappaletta.

2.2 Esseet ja harjoitustehtävät

Tapauksiin liittyy vuoroviikoin joko esseetehtävä tai ohjelmointiharjoituksia. Ne ovat henkilökohtaisia eli niitä ei käsitellä ryhmän istunnoissa.  Esseetehtävissä jokainen joutuu kirjoittamaan tekstiä annetuista aiheista.  Aiheet liittyvät tyypillisesti ohjelmoinnin käsitteisiin, Java-kielen rakenteisiin ja suunnittelutehtäviin.  Esseiden laatimiseen on aikaa viikko.  Esseet palautetaan omalle assistentille tai OTUS-järjestelmälle erillisen ohjeen mukaan.

Ohjelmointiharjoituksissa toteutetaan pieniä Java-ohjelmia, jotka liittyvät käsiteltävien tapausten aihepiiriin.   Nämä tehtävät palautetaan samoin omalle assistentille tai OTUS-järjestelmälle.

2.3 Projekti

Projekti toteutetaan samaan tapaan kuin normaalilla L1-kurssilla.  Sen aiheet julkistetaan marraskuun alkupuolella.  Siitä palautetaan aluksi suunnitelma ja valmistuttuaan työ ja sen dokumentaatio luovutetaan ja työ demonstroidaan omalle assistentille.  Projektia koskevat ohjeet tulevat L1-kurssilta.

2.4 Tentti

Kurssin tentti on yhteinen L1-kurssin normaalin tentin kanssa.

2.5 Materiaali

Kokeilukurssilla ei ole mitään nimettyä oppikirjaa.  Kurssilaiset voivat käyttää mitä tahansa suomen- tai englanninkielistä Java-kirjaa tai ohjelmoinnin oppikirjaa tai verkkomateriaalia.  L1-kurssin luentoja voi käydä kuuntelemassa, jos katsoo ne hyödylliseksi tavaksi hankkia tietoja.

2.6 Kurssin arvosana

Kurssin arvosana määräytyy seuraavasti.  Ohjelmointitehtävistä saa maksimissaan 100 pistettä / kierros eli yhteensä korkeintaan 400 pistettä.  Esseet arvostellaan pistein 0-50 pistettä kukin, yhteensä max. 200 pistettä.  Kustakin harjoituksesta ja esseestä on saatava tietty minimipistemäärä, joka määritellään tehtävänannossa. Projekti arvioidaan asteikolla 0-300 pistettä (minimi 100 p) ja hyväksytty tenttitulos skaalataan siten, että sen maksimipistemäärä on 300 pistettä.  Yhteensä kurssista voi saada siten korkeintaan 1200 pistettä.  Arvosanat määräytyvät seuraavasti:

    0 - 499 : 0
500 - 619 : 1
620 - 739 : 2
740 - 859 : 3
860 - 979 : 4
980 - 1200 : 5

2.7 Kurssin arvioitu työmäärä

Arvioidusta työmäärästä johtuen jokainen osallistuja saa kurssista 6 opintoviikkoa.  Normaali L1-suorituksen lisäksi tulee 1 ov, joka kirjataan täydentävänä henkilökohtaisena opintojaksona.

Kurssilaisten kannattaa ehdottomasti varata syksyn kalenteristaan riittävästi aikaa tälle kurssille.  Vaikka läsnäoloa vaativaa lähiopetusta on vähän, niin oma työskentelyä tarvitaan runsaasti.  Aivan sama asia pätee vakiokurssiinkin.
 

3. Ilmoittautuminen

Kokeilukurssille ilmoittaudutaan sähköpostitse.  Lähettäkää Lauri Malmille (Lauri.Malmi@hut.fi) viesti, joka sisältää seuraavat tiedot: Kokeilukurssiin ilmoittautuneet kokoontuvat ensimmäisen kerran yhdessä maanantaina 17.9 klo 16.15 T-osaston salissa T2 (pohjakerroksessa pääsisäänkäynnistä katsoen heti vasemmalla).  Jos ei ehdottomasti pääse ko. tilaisuuteen, mainitkaa tästä ilmoittautumisviestin yhteydessä.
 

4.  Miksi kokeiluun kannattaisi osallistua?

Käytetty opiskelumuoto poikkeaa merkittävästi tavanomaisista TKK.n kursseista ja on sellaisenaan uusi kokemus.  Tähän mennessä saatujen kokemusten mukaan oppimisen mielekkyys paranee useastakin syystä.  Ensinnäkin tässä ei olla yksin puurtamassa suuressa massassa vaan toimitaan ryhmän mukana, jolta voi saada tukea, samoin kuin nimikkoassistentiltakin.  Lisäksi tässä voi vaikuttaa itse oppimistavoitteisiinsa ja opiskeltavat asiat pyritään liitttämään todelliseen tarpeeseen, ei tietoon itsetarkoituksena.  Tällainen työskentelymalli on myös lähellä sitä, miten työelämässä toimitaan.

Tietojenkäsittelyopin laboratoriossa kehitetään ja uudistetaan opetusta, jotta opiskelijoiden oppiminen paranisi.  Tämä edellyttää asioiden kokeilemista ja sen vuoksi myös opiskelijoiden panosta mukaan.  Tule auttamaan näissä talkoissa.

Lauri Malmi