ChatGPT kurssisuunnittelun tukena
ChatGPT-kokeilut vievät helposti mukanaan. Työkalu soveltuu monenlaiseen tiedonkäsittelyyn ja kokeilut synnyttävät edelleen uusia ideoita sen soveltamiseen. Tutkimuksen apuvälineenä ChatGPT toimi harhaanjohtajana keksimällä lähteet tyhjästä, mutta kurssisuunnittelun tukena siitä voi olla paljonkin apua. Erilaisten ohjeistusten, kattavien listojen sekä perusohjelmointitehtävien laadinnassa syntyy kuitenkin vakuuttavaa jälkeä ja tarkennuksia kysyessä saa ohjeita eteenpäin. Näistä ominaisuuksista johtaen kuvaan seuraavassa ohjelmoinnin perusteiden kurssin laadintaa sisältövalinnoista aina yksittäisiin tehtäviin ja niiden ratkaisuihin.
Ohjelmoinnin perusteet – mitä sisällyttää kurssille?
Jos lähdetään liikkeelle täysin tyhjältä pöydältä, jo pelkästään kurssin aihealueiden määrittäminen on työläs prosessi. On huomioitava opiskelijoiden ennakko-osaaminen ja rajattava käsiteltävät aihealueet kurssin opintopistemäärän mukaan sopivaksi kokonaisuudeksi. Ohjelmoinnissakin erilaisia aihealueita ja eri tasoisia syventymisen mahdollisuuksia on valtava määrä, jolloin pääasiallinen haaste on rajaus. ChatGPT tarjosi ohjelmoinnin perusteiden kurssille kuvan 1 mukaiset teemat.
Kuva 1. Ohjelmoinnin perusteet.
Lista on varsin kattava ja vaihtelee käytännön ohjelmoinnista, ohjelmointiympäristöstä ja debuggauksesta dokumentointiin. Algoritmit siirtäisin peruskurssilta omaksi kurssikseen ja purkaisin perusteiden opettelua tarkempiin osiin. Listaus antaa vinkkejä siitä, mihin voidaan suunnata, mutta suurelta osin rajauksissa on käytettävä harkintaa ja hahmotettava kurssi osana opetussuunnitelmaa.
Ohjelmointi perustuu loogiselle ajattelulle ja ongelmanratkaisutaidoille, mutta samalla myös ruokkii näiden kehittämistä, joten sinällään aihe kuuluu myös kurssin sisältöihin. Ohjelmoinnin harjoittelussa keskeiseksi nousee kuitenkin oppiminen esimerkkien ja harjoitustehtävien kautta. Kokeillaan chatGPT:tä harjoitteiden ja esimerkkien rakentamisessa.
Ohjelmoinnin perusteet – Esimerkkejä ohjelmointitehtävistä ja harjoituksista
Kun kurssin sisältö on saatu sisällön kuvauksen puolesta suunniteltua, voidaan siirtyä harjoitustehtävien luomiseen. ChatGPT:llä olikin tarjota useita aihealueita tehtäville ja ne on listattu kuvassa 2. Tuotettu lista kattaa hyvin ohjelmoinnin perusteet ja tämä korostaa keskustelevan tekoälyn vahvuutta tietoon porautumisessa. Kahdella kysymyksellä on saatu luotua aihio kurssille ja sen tehtäviin.
Kuva 2. Ohjelmointitehtävät ja harjoitteet.
Kuvan 2 lista kurottaa jo hieman peruskurssin asioiden ulkopuolelle esimerkiksi tietokantojen käytön ja rajapintojen osalta. Tässä on toki kyse opettajan harkinnasta ja OPSin rajauksista. Muutoin tehtäväalueet käsittelevät suunnilleen samoja asioita, kuin mitä olen sisällyttänyt kurssille muutenkin. Tähän vaiheeseen pääseminen vaati kaksi kysymystä ja noin 10 sekuntia, mikä toisaalta edellyttää chatGPT:n tekemien rajausten hyväksymistä sellaisenaan. Samalla on ymmärrettävä, että jatkossa oma kurssikuvaus tulee ruokkimaan tekoälyä ja sen tulevia suosituksia, kun kurssi julkaistaan netissä. Sisältöjen kannalta kannattaakin olla kriittinen ja tarkastella vielä oman osaamisen valossa, jääkö kurssilta jotakin pois. Toisaalta, ohjelmointi on vielä suhteellisen selkeärajainen kokonaisuus perusteiden osalta. Tulosten kriittinen tarkastelu korostuu siirryttäessä abstraktimpiin aiheisiin ja eri osa-alueiden painotusten pohtimiseen.
Harjoitustehtäväalueiden tunnistamisen jälkeen voidaan siirtyä itse tehtävien suunnitteluun. Millaisia ovat tekoälyn luomat esimerkkitehtävät? Kuvassa 3 on esitetty chatGPT:n tuottama esimerkkitehtävä olioiden käsittelyyn, joka kattaa monipuolisesti perusteet luokkien ja olioiden käsittelystä. Tässä kohtaa on hyvä huomata, että seurattaessa chatGPT:n antamia vastauksia ja tehtäessä lisäkysymyksiä niiden perusteella saattaa syntyä käsitteellistä epäselvyyttä. En välttämättä nimeäisi luokkaa olioksi omissa esimerkeissä, kuten on tehty alla, mutta seurataan tässä esimerkissä tekoälyn viitoittamaa tietä.
Kuva 3. Tehtävä olioiden luomisesta ja käsittelystä.
Esitetty tehtävä on varsin pätevä kokonaisuus sisältäen muutamien attribuuttien luomisen luokille, olioiden luomisen ja tallentamisen listaa sekä olioiden käsittelyn niiden omilla ja ulkoisilla metodeilla. Tällaisenaan tehtävän antaminen peruskurssia suorittavalle opiskelijalle voisi olla jokseenkin lannistava kokemus. Tehtävänanto sisältää ajatuksellisen loikan luokan toteutuksesta sisäisten ja ulkoisten metodien hyödyntämiseen, mikä tuntuu kokeneesta ohjelmoijasta itsestäänselvyydeltä, mutta aloittelijalle saattaa olla haastavaa hahmottaa, miten metodi/funktio tulee sijoittaa ja miten sitä hyödynnetään. Tekoäly auttaakin kysymysten luonnissa, mutta vaativuusasteen asettaminen ja eri asioiden opetusjärjestyksen määrittäminen jää opettajan vastuulle. Mikä selvitetään luennossa ja esimerkeissä, mikä on mahdollista jättää opiskelijan oman selvittelyn varaan tehtäviä suoritettaessa?
ChatGPT tarjoaa tehtävien lisäksi toki myös ratkaisuja. Kuvassa 4 on esitetty koodi, jolla luodaan luokka olio tehtävässä annetuilla ominaisuuksilla. Luokkien perusteet hallussa, eteenpäin.
Kuva 4. Tehtävä 1 vastaus.
Perustehtävien suunnittelu on kohtuullisen helppoa myös ilman apuvälineitä, mutta chatGPT lisää tuottavuutta luomalla kysymykset ja vastaukset sekunneissa. Toisaalta voidaan kysyä, mikä on opiskelijan motivaatio ja missä kohtaa tapahtuu varsinainen oppiminen ja mieleen painaminen ratkaisujen löytyessä näin helposti? Miksi ohjelmoinnin opiskelija painaisi mieleen tehtävissä opittua, jos tieto on saatavilla aina uudelleen tarvittaessa? Näihin vastatakseen on muistettava, että ohjelmointihaasteiden kasvaessa ratkaisujen löytyminen ei välttämättä ole näin suoraviivaista. Pitää hankkia perusosaaminen, että osaa esittää oikeita kysymyksiä ja soveltaa saamiaan vastauksia. Toki jo google muutti ohjelmoinnin luonnetta varsinkin aloittelevien ja miksei kokeneempienkin ohjelmoijien osalta tähän suuntaan. Tämä on vain seuraava askel eteenpäin ja edelleen, syntyykö koodi kohta selkokielisillä kysymyksillä?
Kuvassa 5 on esitetty vastaus tehtävään 5, joka yhdistelee jo varsin monipuolisesti ohjelmoinnin perusteita. Koodista on jo tunnistettavissa useampia kokonaisuuksia, jotka tulee hallita, kuten luokat, oliot, tulostus, funktion luonti ja kutsuminen, toistolauseet ja ehtolauseet. Kuten listasta huomataan, tässä kohtaa tehtävä on muuttunut aloittelijalle jo melko haastavaksi. Kokemusten perusteella suosisin kuitenkin näin monipolvisen tehtävän läpikäyntiä esimerkkinä ja sen jälkeen tehtävän muodossa soveltamista vastaavan luokan käsittelyyn. ChatGPT:n toteuttamien tehtävien eduksi on laskettava, että vaatimustaso kasvoi sopivasti siirryttäessä tehtävästä toiseen, vaikka viimeisessä olikin jo paljon hallittavaa.
Kuva 5. Vastaus tehtävään 5.
Yhteenveto
ChatGPT on tämän kokeilun perusteella toimiva työkalu kurssisuunnittelun avuksi. Sisältöjen valinta, aihealueiden rajaaminen ja niihin pureutuminen sekä tehtävien kehittäminen onnistui minuuteissa. Samalla tämä vaatii opettajalta uudenlaista kriittisyyttä ja tekstipainotteisemmissa aineissa lähteiden puuttuminen aiheuttanee enemmän haasteita. Samalla on huomattava, että opiskelijoilla on myös tämä vähemmän salainen ase käytettävissään.
Opetuksen ja oppimisen toimintaympäristö tulee tämän myötä merkittävästi muuttumaan. Muutos on kuitenkin peruuttamaton ja tätä ei voi lakaista maton alle, vaan uuden teknologian hyödyntäminen vaatii kokeiluja ja läpinäkyvyyttä uusien toimintamallien luomiseksi.
Mikko Kulmala
Lehtori
Seinäjoen ammattikorkeakoulu