Tietorakenteet ja algoritmit, kevät 2019 Loppuyhteenveto Jyrki Kivinen 4.7.2019 1 Digital Education for All (DEFA) Osana Digital Education for All -hanketta (DEFA) kurssi oli avoimen yliopiston kautta tarjolla myös sellaisille opiskelijoille, joilla ei muuten ole opinto-oikeutta Helsingin yliopistossa. Allaolevassa näitä opiskelijoita nimitetään DEFA-opiskelijoiksi. Vastaavasti alla käytetään nimitystä HY:n opiskelija kurssilla olleista tavanomaisista Helsingin yliopiston opiskelijoista. Näiden kahden opiskelijaryhmän erottelu tilastoissa perustuu siihen, onko opiskelija ilmoittautunut WebOodissa normaalin kurssikoodin TKT20001 vai avoimen yliopiston kurssikoodin AYTKT20001 kautta. 2 Tilastoja kurssisuorituksista Kurssille ilmoittautui yhteensä 386 opiskelijaa (239 HY:n opiskelijaa ja 147 DEFA-opiskelijaa). Kurssille osallistui 334 opiskelijaa, kun osallistumiseksi katsotaan ainakin yhden Moodle-tehtävän palautus tai yhden TMC-tehtävän onnistunut palautus. Kurssilla oli kaksi kurssikoetta, joista ainakin toiseen osallistui 223 opiskelijaa ja kumpaankin 148 opiskelijaa. Vain yhteen kokeeseen osallistuneista 75 opiskelijasta 61 osallistui kokeeseen 1 ja 14 kokeeseen 2. Vain kokeeseen 2 osallistuneiden määrän selittänee suurimmalta osin epäselvyys koeilmoittautumisjärjestelyistä, mutta yksittäisillä opiskelijoilla oli myös henkilökohtaisia syitä osallistua vain toiseen kokeeseen ja jättää toinen koe kesäkuun uusintakokeen varaan. Uusintakokeen tulokset eivät ole mukana tässä katsauksessa. Osallistuneista 334 opiskelijasta siis 111 eli 33 prosenttia ei osallistunut kumpaankaan kurssikokeeseen. Käytännössä tämä tarkoittanee yleensä keskeyttämistä ennen ensimmäistä kurssikoetta. Jos lasketaan keskeyttäneiksi kaikki, jotka eivät olleet kahdessa kokeessa (mikä joidenkin opiskelijoiden osalta ei ole oikein) saadaan keskeyttäneiden osuudeksi 56 prosenttia. Keskeyttämisistä siis yli puolet tuli ennen koetta 1. Toisaalta ensimmäiseen kokeeseen osallistuneista 209 opiskelijasta kurssin jätti myöhemmin kesken 61 eli 29 prosenttia, mikä on varsin suuri osuus. Kurssin suoritti hyväksytysti 135 opiskelijaa. Tämä on 40 prosenttia osallistuneista, 61 prosenttia ainakin yhteen kokeeseen osallistuneista ja 91 prosenttia kumpaankin kokeeseen osallistuneista. Kuvissa 1 4 on esitetty arvosanajakaumat ja pistejakaumat erikseen osallistuneille ja kummassakin kokeessa olleille. Pistemäärät on pyöristetty ylöspäin parilliseksi luvuksi. Kokeiden tehtäväkohtaiset pistejakaumat löytyvät kurssin Moodle-alueelta (koe 1 ja koe 2). Maksimipistemäärä oli 60 pistettä, mistä 20 tuli kummastakin kokeesta ja 20 harjoitustehtävistä. Alin hyväksyttävä pistemäärä oli 27, ja lisäksi kokeista yhteensä piti saada vähintään 16 pistettä. Näitä pisterajoja laskettiin normaalista 50 prosentin vaatimuksesta kokeen 1 osoittauduttua odotettua vaikeammaksi. Arvosanaan 5 vaadittiin 49 pistettä. Kurssille osallistuneista mutta ilman hyväksyttyä suoritusta jääneistä selvästi suurin osa jätti osallistumatta ainakin toiseen kokeeseen eli käytännössä keskeytti kurssin. Kuten edellä todettiin, keskeyttämisiä tuli paljon myös ensimmäisen kurssikokeen jälkeen. Eräs mahdollinen tulkinta tälle on, että huonosti menneen kokeen jälkeen opiskelijat mieluummin keskeyttivät kurssin kuin jatkoivat huonon arvosanan tavoittelemista. Tämä selittäisi osaltaan myös arvosanan 1 vähäistä osuutta. Toinen 1
Kuva 1: Kaikkien osallistuneiden arvosanajakauma Kuva 2: Kummassakin kokeessa olleiden arvosanajakauma 2
Kuva 3: Kaikkien osallistuneiden pistejakauma Kuva 4: Kummassakin kokeessa olleiden pistejakauma 3
Kuva 5: Kaikkien DEFA-opiskelijoiden ja kaikkien HY:n opiskelijoiden suhteelliset pistejakaumat selitys tälle on kokeesta vaadittu minimipistemäärä. Hylätyistä 14 oli sellaisia, joiden pistemäärä ylitti minimin 27 mutta koepistemäärä jäi alle minimin 16. Koska jotkin opiskelijat ottivat HY:n ja DEFA-opiskelijoiden väliset mahdolliset erot esille ja asia on kiinnostava opettajienkin kannalta, kuvassa 5 on kaikkien osallistuneiden pisteet erikseen DEFAopiskelijoille ja HY:n opiskelijoille. Pylväät esittävät prosenttiosuuksia kyseisestä opiskelijajoukosta; siis sinisten HY-pylväiden yhteispituus on 100, samoin punaisten DEFA-pylväiden. Absoluuttiset lukumäärät tässä ovat 226 HY:n opiskelijaa ja 99 DEFA-opiskelijaa. Summa 226 + 99 ei täsmää edellä ilmoitettuun 335 osallistuneeseen. Ero tulee siitä, että HY vs. DEFA -erottelu perustuu WebOodin ilmoittautumistietoihin, ja niiden täsmääminen Moodlessa olleisiin suoritustietoihin opiskelijanumeron perusteella ei ilmeisesti ole täysin onnistunut. Eron tarkempi selvittely ei tunnu tässä vaiheessa tähdelliseltä. Kuvan vasemmassa laidassa olevista punaisista pylväistä näkee, että DEFA-opiskelijoista n. 35 prosenttia sai korkeintaan 2 pistettä. Kun yhteen pisteeseen on tarvittu noin 4 laskuharjoitustehtävää, näin pienet pistemäärät merkitsevät keskeyttämisiä aivan kurssin alkuvaiheessa. DEFAn luonteen takia tämä onkin ymmärrettävää. Näyttäisi myös, että suurimpien pistemäärien joukossa on enemmän HY:n kuin DEFA-opiskelijoita. Tämä tulee selvemmin esille kummassakin kokeessa olleiden opiskelijoiden arvosanajakaumista (kuva 6). On vaikea sanoa, onko tämä merkitsevää, mutta sinänsä ei olisi yllättävää, että jo yliopistossa opiskelevilla olisi esim. paremmat opiskelurutiinit tai -ympäristöt tai enemmän aikaa käytettävissä. 3 Opiskelijapalaute Opiskelijapalautetta kerättiin kurssin päätyttyä palautelomakkeella WebOodissa. Palautetta ja muitakin kurssin kokemuksia on puitu opettajien kesken. Tässä esitettävät kommentit ovat osin omiani, osin muiden kanssa yhdessä mietittyjä. Kuten ilmoittautumisetkin, kyselyvastaukset ovat WebOodissa erikseen HY:n opiskelijoilta ja DEFA-opiskelijoilta. Vastauksia tuli HY:n opiskelijoilta 105 (46 prosenttia osallistuneista) ja DEFAopiskelijoilta 35 (35 prosenttia). Koska kysely toteutettiin kurssin päätyttyä, vastaukset ovat luultavasti tulleet etenkin kurssin loppuun asti mukana olleilta. Vapaamuotoisen palautteen sisältö tukee tätä oletusta. Tehokkaampi palautteen kerääminen kurssin aikana on tunnettu kehityskohde, jolle ei vain ole vielä saatu mitään tehdyksi. Palautelomakkeessa pyydettiin opiskelijaa arvioimaan asteikolla 1 5 väitteiden paikkansapitävyyttä (1: täysin eri mieltä; 5: täysin samaa mieltä). Kysymyksiin vastattiin seuraavasti: 4
Kuva 6: Kummassakin kokeessa olleiden DEFA-opiskelijoiden ja HY:n opiskelijoiden suhteelliset pistejakaumat 1. Kurssin tavoitteet olivat minulle alusta saakka selvät ( tiesin, mitä minun tuli oppia ): keskiarvo HY 3,87; DEFA 3,77; keskihajonta HY 0,9; DEFA 0,91; mediaani HY ; DEFA 2. Kurssilla käytetty materiaali (esim. tehtävät, luentomateriaali, muu kirjallisuus) tuki oppimistavoitteiden saavuttamista: keskiarvo HY 4,22; DEFA 4,14; keskihajonta HY 0,92; DEFA 0,77; mediaani HY ; DEFA 3. Toiminta kurssilla (esim. aikataulutus, ohjaus, muu opetus) tuki oppimistavoitteiden saavuttamista: keskiarvo HY 3,92; DEFA 3,91; keskihajonta HY 0,99; DEFA 0,89; mediaani HY ; DEFA 4. Kurssin arviointi (esim. harjoitukset, työt, kokeet, niiden keskinäinen suhde) mittasi keskeisten oppimistavoitteiden saavuttamista: keskiarvo HY 3,9; DEFA 3,69; keskihajonta HY 1,04; DEFA 0,83; mediaani HY ; DEFA 5. Kurssi oli työläs: keskiarvo HY 4,47; DEFA 4,49; keskihajonta HY 0,72; DEFA 0,92; mediaani HY 5,0; DEFA 5,0. Numeeriset arvosanat ovat työläyttä lukuunottamatta melko tyypillisellä tasolla muihin tietojenkäsittelytieteen kursseihin verrattuna. Kevään 2018 kurssiin verrattuna tyytyväisyys materiaaliin näytti selvästi nouseen (viime vuonna 3,5, nyt 4,2). Tähän vaikuttivat ilmeisesti Laaksosen oppikirja ja luentovideot, jotka myös mainittiin sanallisissa palautteissa. Työläysarvio on kenties hieman laskenut viime vuodesta (oli 4,8, nyt 4,5) mutta on edelleen melko korkea. Työmäärää pienennettiinkin viime vuodesta vähentämällä ja yksinkertaistamalla selvästi Moodle-tehtäviä, mutta työläin komponentti on sekä tämän palautteen että kurssin aikana kuultujen kommenttien perusteella TMC-tehtävät. Myös vapaamuotoista sanallista palautetta oli annettu runsaasti, mistä kiitos vastanneille. Vastausten yleissävy oli, että kurssi oli vaikea ja työläs, mutta sisältö kiinnostavaa ja toiminta pääosin mielekästä. Opiskelijat olivat tyytyväisiä opettajien saavutettavuuteen ja siihen, että opetusta oli tarjolla useilla vaihtoehtoisia tavoilla. Luennot, luentovideot, kurssikirja, luentomuistiinpanot, pajaohjaus ja Tele- 5
gram saivat kaikki useita kiittäviä mainintoja, joskin Telegramia lukuunottamatta kaikki saivat myös kielteisiä kommentteja. Opettajan näkökulmasta luentojen videotallennus ja Telegram ovat vähätöinen tapa saada opetusta suuremman opiskelijajoukon saataville. Varsinaisten opetusvideoiden laatiminen, mitä jotkut ehdottivat, vaatisi enemmän suunnittelemista ja työtä. Pienemmällä vaivalla voisi selvitä kartoittamalla verkosta valmiina löytyvää tarjontaa, jota opiskelijat jo nyt oma-aloitteisesti ovat käyttäneet hyväksi. Telegramin osalta täytyy pitää mielessä, että periaatteellisistakaan syistä opetus ei voi oleellisesti perustua oletukseen, että kaikki lataavat koneilleen jonkin kolmannen osapuolen ohjelmistoja ja luovat niihin käyttäjätunnuksia. Ehkä selvimmin palautteissa esille tuotu ongelma, joka ilmeni jo kurssin aikana, oli harjoitustehtävien ja kokeiden yhteensopimattomuus. Harjoitukset eivät juuri valmistaneet niihin koetehtäviin, joissa piti suunnitella aikavaativuudeltaan tehokas algoritmi. Tämä liittyy suoraan siihen, että kurssin laskuharjoituksista oli tänä vuonna jätetty pois kynällä ja paperilla tehtävät algoritminsuunnittelutehtävät, joita aiempina vuosina on aina ollut. Syynä tähän kokeiluun oli osittain pyrkimys vähentää opiskelijoiden työmäärää, osittain tarve automatisoinnilla parantaa opetuksen skaalautumista suuremmille opiskelijamäärille (mm. DEFAn takia). Ennen kurssia ajattelin, että TMC-tehtävät toimivat hyvänä harjoituksena myös tällaisille tehtäville: TMC-tehtävässä ensin suunnitellaan aikavaativuudeltaan riittävän tehokas algoritmi kynällä ja paperilla (tai ilman paperia omassa päässä) ja sitten toteutetaan se Javalla. Tenttivastauksessa vain jätetään tästä Java-toteutus pois. Jälkikäteen tästä ajatuksessa voi löytää ainakin kaksi virhettä: 1. Algoritmin kirjallista esittämistä ymmärrettävänä pseudokoodina tms. ei kuitenkaan tule harjoitelluksi. 2. Opiskelijat eivät välttämättä lähesty TMC-tehtäviä lainkaan tällä tavalla. Monille (useimmille?) luontevampi tapa on ensin toteutaa jonkinlainen algoritmi Javalla ja sitten parannella, kunnes se menee testeistä läpi. TMC:ssä on toki erittäin opettavaista kokeilla useita erilaisia lähestymistapoja ja nähdä, mitkä niistä toimivat. Tämä voi kyllä myös olla turhan työlästä verrattuna siihen, että miettimällä hieman aikavaativuuksia jotkin tietorakenneratkaisut tms. voi todeta toimimattomiksi ilman toteuttamista ja kokeilemista. Joka tapauksessa kurssilla on tarkoitus oppia myös annettuun aikavaativuuteen pääsevän algoritmin suunnittelemista ilman, että aikavaativuus pitää tarkistaa kokeilemalla, ja algoritmin ymmärrettävää kirjallista esittämistä. Ratkaisu siis on pikemminkin tämän tehtävätyypin palauttaminen laskuharjoituksiin kuin sen jättäminen pois tenteistä. Yksi mahdollisuus voisi olla käyttää tässä vertaisarviointia. Myös kokeiden tehtävämäärää suhteessa koeaikaan moitittiin. Kokeiden tosiaan ei ole tarkoitus olla kirjoitusnopeuskilpailuja. Tähän kyllä kiinnitetään huomiota, mutta opiskelijalta kuluvan ajan arvioiminen on vaikeaa, etenkin algoritminsuunnittelua tai muuta ongelmanratkaisua vaativissa tehtävissä. Jos tehtäviä taas on kovin vähän, yksittäisen tehtävän osuus voi nousta turhan suureksi ja kurssialueen kattaminen jäädä vajaaksi. Opettajien näkökulmasta opiskelijat toisinaan tuntuivat käyttävän huomattavan paljon aikaa tarpeettomiin asioihin, kuten pitkiin selityksiin tai yksityiskohtaiseen Javakoodiin. Tätä voisi auttaa selvempien ohjeiden ja esimerkkien antaminen siitä, millaisia vastauksia halutaan; selitystehtävissä voisi esim. antaa konkreettisen pituusrajan sanoina. Kommenttien perusteella toisessa kokeessa opiskelijoille oli selvempää, mitä piti tehdä, joten ainakin osittaista parannusta tulisi paremmalla tiedottamisella. Luentojen sisällön osalta jonkin verran kiitettiin mutta enemmän moitittiin niihin sisältynyttä matemaattisempaa tarkastelua. Matemaattisten tarkastelujen, lähinnä algoritmien oikeellisuustodistusten, rooli kurssilla on ongelmallinen. Ne ovat keskeinen osuus algoritmiikkaa, ja niihin totuttautuminen olisi hyödyllistä jatkokursseja ajatellen. Toisaalta niiden omaksuminen helpottuu oleellisesti, jos opiskelija on suorittanut esim. matematiikan perusopinnot, ja kurssin osaamistavoitteet pitäisi asettaa sen esitietovaatimusten mukaisesti. Tämän kevään kurssilla oli aiempaan verrattuna tietoisesti jätetty todistukset pois laskuharjoituksista ja tenteistä, mutta luennoilla niitä kuitenkin käytiin 6
läpi etenkin kurssin loppupuolella. Sinänsä on on kai normaalia, että luennoilla esitellään vaikeampia asioita kuin mitä opiskelijoilta vaaditaan kokeessa, mutta tässä tapauksessa matematiikan roolia ei kyllä tullut riittävästi selitetyksi opiskelijoille. Osittain sekaannukseen vaikutti sekin, että viime kevääseen verrattuna todistustehtävät olivat jääneet pois laskuharjoituksista, kuten kynällä ja paperilla tehtävät algoritminlaatimisetkin. Ehkä nekin voisi ottaa takaisin esim. vertaisarvioitavina, kenties vaihtoehtoisina tai bonustehtävinä. Sekä Laaksosen kurssikirjan että luentomateriaalin osalta tuotiin esille, että niissä olisi tarpeen olla lisää esimerkkejä algoritmien esittämisestä Javalla ja pseudokoodilla. Tämä otetaan huomioon materiaalin jatkokehityksessä. Rekursio on toinen tunnetusti ongelmia aiheuttava asia kurssin alkupäässä; sen osalta on jo tehty päivityksiä kurssikirjan uuteen versioon. Opettajille hieman yllätyksenä tuli, että pajassa oli koettu ohjaajien määrä riittämättömäksi, ja toisinaan myös ohjauksen laatu. Ohjaajaresursseja voidaan ehkä jatkossa lisätä jonkin verran, ja voidaan pyrkiä paremmin tiedottamaan, minä aikoina mihinkin kurssiin erikoistunutta ohjausta on saatavilla. Opettajien kesken pitää vielä keskustella pajaohjauksen menetelmistä ja ohjaajalle asetettavista vaatimuksista. Kuten opiskelijat ovat ymmärtäneetkin, usein on vaikea keksiä hyödyllisiä vihjeitä, jotka kuitenkin jättävät riittävästi myös opiskelijan keksittäväksi. Kurssin jakaminen kahdeksi 5 opintopisteen kurssiksi tuotiin esille monessa vastauksessa. Kuten jotkut tiesivätkin, tietojenkäsittelytieteen kandiohjelma on jo päättänyt tehdä tämän jakamisen. Se toteutuu seuraavan suuremman opetussuunnitelman muutoksen yhteydessä eli lukuvuonna 2020 2021. Lopuksi voisi todeta, että useassa vastauksessa viitattiin kurssin maineeseen vaikeana ja työläänä. Toivottavasti kurssin nyt käyneillä opiskelijoilla on myös kannustavia viestejä tuleville opiskelijapolville. Varoitukset työläydestä tosin tuntuvat vastaavan myös todellisuutta. Viime vuonna yritettiin hieman tarkemmin kysellä, mihin ja kuinka paljon opiskelijoilla aikaa kuluu, mutta ymmärrettävästi opiskelijoilla ei oikein riittänyt mielenkiintoa tällaisiin kyselyihin vastaamiseen. 4 Loppukommentit Ensi lukuvuonna syksyn kurssia, jonka pitää Antti Laaksonen, pyritään kehitettämään vielä enemmän verkkokurssin suuntaan korvaamalla myös tentit jollain etäsuoritettavalla menettelyllä; yksityiskohdat ovat vielä avoinna. Algoritmipaja ja luennot (vastaavasti kuin viime syksynä) on kuitenkin tarkoitus pitää mukana. DEFA jatkuu vielä ainakin kaksi vuotta, ja myös sen yhteydessä mietitään kurssin kehittämistä nyt saatujen kokemusten mukaan. 7