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:
-
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.
-
Tehtävään perehtyminen. Ryhmä selvittää
itselleen, mitä tehtävässä tulee tehdä.
Kirjataan ylös mahdolliset epäselvyydet, jotka pitää
tarkistaa assistentilta.
-
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ä.
-
Suunnittelu / Analyysi. Riippuen tehtävän luonteesta
toimitaan seuraavasti:
-
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.
-
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.
-
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ä.
-
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.
-
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.
-
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.
-
Tapauksen puheenjohtaja ja/tai sihteeri koostaa tapauksesta lyhyen raportin,
joka sisältää seuraavat asiat:
-
Ketkä olivat läsnä avauksessa ja purussa?
-
Mitkä olivat oppimistavoitteet
-
Purkutilaisuudessa läpikäydyt asiat
-
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ä
-
Tapausten käsittely, 8 * 3 tuntia = 24 tuntia
-
Itsenäinen opiskelu, 8 * 8 tuntia = 64 tuntia
-
Esseet 4 * 4 tuntia = 16 tuntia
-
Ohjelmointiharjoitukset 4 * 12 tuntia = 48 tuntia
-
Projekti, 80 tuntia
-
Tentiin valmistautuminen ( lyhyt kertaus, kun edellisten jälkeen asiat
ovat hanskassa), 8 tuntia
-
Yhteensä 240 tuntia.
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:
-
Nimi
-
Opiskelijanumero
-
Koulutusohjelma ja vuosikurssi
-
Lyhyt selostus siitä, onko itsellä aiempaa ohjelmointikokemusta.
Jos on, niin millä ohjelmointikielillä ja kuinka laajoja ohjelmia
on toteuttanut.
-
Miksi on kiinnostunut osallistumaan tähän kokeiluun?
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