Teknillinen korkeakoulu
Tietojenkäsittelyopin laboratorio
Lauri Malmi
10.9.2001

Ongelmalähtöinen oppiminen massakurssilla

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 sitä muokata ja yksinkertaistaa siten, että se voidaan toteuttaa suurillakin kursseilla ilman, että menetetään saavutettuja etuja.

1.1 Keskeyttämisen syitä

Tavallisen peruskurssin keskeyttämisen syitä on pyritty selvittämään ja tästä työstä voidaan tiivistää seuraavia havaintoja: Suurin ongelmaryhmä ovat ne opiskelijat, jotka tekevät harjoitustehtävät, mutta eivät palauta projektityötä.   Tyypillisesti he voivat saattaa projektin loppuun jollakin myöhemmällä kurssilla, mutta harjoitustehtävät on pääosin tehtävä uudestaan. Näin ollen heillä menee huomattava määrä työtä hukkaan.  Yksi tärkeimmistä syistä projektin keskeyttämiselle lienee aikapula.  Projektin tekeminen ajoittuu lukukauden loppuun.  L1-kurssilla tähän jaksoon osuu joulukuun tenttikausi, joululoma ja tammikuun tenttikausi.  Y1-kurssilla siihen osuus kevään tenttikausi.  Näitä aikarajoja on vaikea muuttaa myöhemmäksi, koska muuten syksyn kurssi jatkuu selvästi kevätlukukauden päälle ja kevään kurssilla työtä pitäisi jatkaa kesälomalla tai sen jälkeen.  Molemmat ovat opiskelijoiden oman työskentelyn ja kurssin ohjauksen järjestämisen kannalta huonoja vaihtoehtoja.  Aikarajojen aikaistaminen on myös vaikeaa, koska kurssin harjoitustehtävien tiivistäminen tekisi kurssista vielä nykyistäkin raskaamman.  Yksi vaihtoehto on luopua osasta harjoitustehtäviä, mutta silloin projektityössä tarvittavia Java-kielen piirteitä ei ehditä käydä harjoituksissa riittävästi läpi.  Projektin irrottaminen koko kurssista omaksi opintojaksokseen on eräs vaihtoehto, mutta sitä ei ole katsottu perustelluksi.  Kurssin asioiden osaaminen pelkkien harjoitustehtävien jälkeen jäisi paljon pinnallisemmaksi ilman projektityötä, eikä ole mielekästä, että projektin suorittaminen tapahtuisi paljon myöhemmin kuin harjoitustehtävien suorittaminen.

Toinen merkittävä keskeyttämistekijä on ilmeisesti se, että osalla opiskelijoita valmiudet käsitellä projektia ovat liian vähäiset harjoitustehtävien jälkeen.  Projektiin liittyy suunnitelman tekeminen, jossa pitää hahmotella tekninen perusratkaisu, mutta tämä vaihe jää monilla liian pinnalliseksi ja he eivät pysty käsittelemään väljästi määriteltyä projektiaihetta ja suunnittelemaan teknistä ratkaisua itsenäisesti.

Eräs mahdollinen selittävä tekijä on se, että harjoitustehtävävaiheessa on varsin helppoa kopioida muilta kurssilaisilta valmiita ratkaisuja ja palauttaa ne ominaan.  Henkilökunta jäljittää osan näistä plagiointitapauksista, mutta merkittävä osa jää varmasti pimentoon.  Plagiointia harrastaneen opiskelijan valmiudet projektin tekemiseen voivat olla selvästi heikommat kuin tehtävät itsenäisesti ratkaisseella opiskelijalla.

Yksi tärkeä tekijä voi olla myös se, että suurella massakurssilla on kovin helppoa jättää hommat kesken.  Kukaan ei kiinnitä siihen mitään huomiota.

1.2 Studiokurssin toteutus

Informaatioverkostojen studiokurssin osasuorituksiin kuului seuraavia asioita:

1.3 Studiokurssin analyysiä

Studiokurssin toteutuksessa on useita elementtejä, jotka voivat purra edellä mainittuihin keskeyttämissyihin.  Kurssin kesto on sama kuin syksyn L1-kurssilla, ts. projekti ja portfolio tulee palauttaa ennen kevätlukukauden alkua.  Osasuoritusten palautuksilla on tiukat määräajat, joita kurssin henkilökunta valvoo.  Koska opettajatutorit tapaavat omaa ryhmäänsä kerran viikossa, heidän on helppo ottaa esille mahdollinen viivästyminen ja tyypillisesti käykin niin, että opiskelija itse pyytää ensin aikatauluun joustoa, jonka opettaja hänelle suokin.  Opettajan ja oppilaan välillä on siis vuorovaikutussuhde ja opettaja seuraa yksittäisten oppilaiden tilannetta.  Projektivaiheessa ei ole säännöllisiä tapaamisia, mutta tutorit ovat olleet käytettävissä (samoin kuin kurssin assistentit) valmiina neuvomaan.

Kurssilaisille korostettiin kurssin alussa voimakkaasti kuinka paljon työtä he joutuvat tekemään kurssin aikana.  Näin ollen ainakin osa opiskelijoista varautui tähän suunnitellessaan syksyn muuta ohjelmaa.

Suunnittelutehtävissä oppilaille tuli kurssin aikana tutuksi ongelman ratkaiseminen.  Käsiteltävät tehtävät oli määritelty väljästi ja ryhmässä pystyttiin helpommin keksimään niille jokin tai joitakin käyttökelpoisia ratkaisuja.  Kun tätä vielä jouduttiin syventämään omassa esseessä, tuli ratkaisuprosessi käytyä läpi moneen kertaan ennen oman projektin aloittamista.

Kurssin aikana havaittiin vain yksi kopiointitapaus.  Kopiointi ei muutenkaan tunnu kovin hyvin istuvan siihen ajattelutapaan, joka kurssilla oli, että jokainen ottaa vastuun omasta oppimisestaan, mm. asettaa omat oppimistavoitteet.  Epäilemättä osa opiskelijoista sai muilta paljon apua tehtävien ratkaisuissa, mutta tämä ei johtanut avuttomuuteen omassa projektissa.

Studiokurssin opetusmuodot eivät sellaisenaan skaalaudu massaopetukseen.  Merkittävimpiä rajoitteita ovat:

Edellämainittujen havaintojen perusteella tehdään syksyn 2001 L1-kurssilla kokeilu, joka pohjautuu studiokurssin opetusmenetelmiin, mutta kevennetyssä muodossa.

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.

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 ole mukana tutoria.  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 diagnostisia tehtä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ä.  Kultakin kierrokselta on saatava vähintään 40 pistettä.  Esseet arvostellaan pistein 0-50 pistettä kukin, yhteensä max. 200 pistettä.  Kustakin esseestä on saatava vähintään 20 pistettä.  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.

2.8 Assistenttien osuus (arviolta)

Normaalin ohjelmointineuvonnan kurssilaiset voivat saada L1-kurssin neuvontavastaanotoilta, mikäli oman ryhmän assistentin viikkotapaaminen ei riitä.

Kurssia varten varataan kaksi tuntiassistenttia.  Heidän toimenkuvansa on seuraava: