Oulun ammattikorkeakoulu
ePooki 7/2020

Ohjelmointitaito opitaan projektissa

4.3.2020 ::

Metatiedot

Nimeke: Ohjelmointitaito opitaan projektissa

Tekijä: Jyrkkä Kari; Niemi Eino

Aihe, asiasanat: korkeakouluopetus, ohjelmointi, opetus, projektioppiminen

Tiivistelmä: Projektimaista opetusta hyödynnetään Oulun ammattikorkeakoulussa menestyksekkäästi ohjelmointitaitojen opettamiseen. Ensimmäisen lukuvuoden syksyllä opiskelijat pääsevät harjoittelemaan ohjelmointitaitoja projektissa, jonka tavoitteet he ovat itse laatineet. Projektissa opiskelijat syventävät edeltävän teoriaperiodin aikana opittuja digitaalielektroniikan ja ohjelmoinnin taitoja ja oppivat ohjelman toteuttamisen ja testaamisen pienissä osissa.

Projektiperiodissa hyödynnetään sitä edeltävässä teoriaperiodissa opittuja ohjelmointitaitoja käytännön ongelmien ratkaisuun. Tämä laajentaa ohjelmointiosaamista. Käytännössä on myös havaittu, että onnistuminen projektissa lisää opiskelijan motivaatiota ja parantaa menestymistä tulevissa opinnoissa. Lisäksi myönteiset kokemukset ohjelmoinnista rohkaisevat opiskelijaa opettelemaan uusia työelämässä tarvittavia ohjelmointikieliä. Opiskelija oppii projektissa myös lukuisia muita työelämässä tarvittavia taitoja, kuten projekti-, viestintä- ja yhteistyötaidot. Voidaankin todeta, että projektiopetus sopii hyvin niin ohjelmoinnin kuin muidenkin työelämässä tarvittavien taitojen oppimiseen.

Julkaisija: Oulun ammattikorkeakoulu, Oamk

Aikamääre: Julkaistu 2020-03-04

Pysyvä osoite: http://urn.fi/urn:nbn:fi-fe202002175581

Kieli: suomi

Suhde: http://urn.fi/URN:ISSN:1798-2022, ePooki - Oulun ammattikorkeakoulun tutkimus- ja kehitystyön julkaisut

Oikeudet: CC BY-NC-ND 4.0

Näin viittaat tähän julkaisuun

Jyrkkä, K. & Niemi, E. 2020. Ohjelmointitaito opitaan projektissa. ePooki. Oulun ammattikorkeakoulun tutkimus- ja kehitystyön julkaisut 7. Hakupäivä 8.4.2020. http://urn.fi/urn:nbn:fi-fe202002175581.

Oulun ammattikorkeakoulun laite- ja tuotesuunnittelun opiskelijoiden ohjelmointitaidot ovat parantuneet projektiopetuksen myötä. Ensimmäisen lukuvuoden syksyn aikana opiskelijat pääsevät harjoittelemaan ohjelmointitaitojaan projektissa, jonka tavoitteet he ovat itse laatineet. Projektissa opiskelijat syventävät edeltävän teoriaperiodin aikana opittuja digitaalielektroniikan ja ohjelmoinnin taitoja ja oppivat ohjelman toteuttamisen ja testaamisen pienissä osissa.

Ohjelmoinnin opetuksen haasteet

Ohjelmointia on opetettu yliopistoissa jo yli 50 vuotta. Mutta vieläkään ei olla yhtä mieltä siitä, kuinka ohjelmointia tulisi opettaa. Ensimmäisten ohjelmointikurssien opettaminen on vaikeaa monesta syystä. Opiskelijaryhmät ovat suuria ja opiskelijoiden osaamisen taso vaihtelee suuresti ryhmän sisällä. Opiskelijat on hankala motivoida ohjelmointikielen rakenteiden opetteluun ilman mielenkiintoista lopputavoitetta ja näyttävät ohjelmointitoteutukset vaativat enemmän osaamista kuin mitä on vielä opittu. Pelkkä ohjelmointirakenteiden ja valmiiden ratkaisujen näyttäminen opiskelijoille ei riitä. Opiskelijoiden on nähtävä, kuinka toimivaan ratkaisuun päädytään systemaattisen ohjelmointiprosessin kautta. On siis opetettava myös ohjelman suunnittelun, toteutuksen, testauksen ja debuggauksen taitoja. Nousiainen, E. 2014. LAB-koulutusmalli ja tietotekniikan opetussuunnitelmien rakenne Oulun ammattikorkeakoulussa. ePooki. Oulun ammattikorkeakoulun tutkimus- ja kehitystyön julkaisut 16. Hakupäivä 29.1.2020. http://urn.fi/urn:isbn:978-951-597-110-4

Oulun ammattikorkeakoulun (Oamk) informaatioteknologian osastolla ohjelmoinnin opettamisen haasteeseen on vastattu kuvan 1 mukaisella teoria- ja projektimuotoisella opetuksella Bennedsen, J., Caspersen, M. E. & Köllings, M. (eds.) 2008. Reflections on the Teaching of Programming, Methods and Implementations. Springer.. Teoriaperiodissa opitaan digitaalitekniikan ja ohjelmoinnin perusteita kolmella viiden opintopisteen kurssilla. Opittuja tietoja ja taitoja hyödynnetään projektiperiodissa tietotekniikan sovellusprojekti -opintojaksolla, jonka sisältö on avattu kuvassa 1. Ohjelmoinnin opetuksen lisäksi projektiperiodilla hyödynnetään myös muita teoriaperiodilla opittuja digitaalitekniikan ja matematiikan tietoja ja taitoja. Myös viestintä integroituu hyvin projektiperiodiin, jossa aloitetaan opiskelijoiden projektinhallintataitojen kehittäminen. Viestintää ja projektinhallintataitoja kehitetään viikoittaisissa projektikokouksissa, missä opiskelijat esittelevät oman projektinsa tilanteen ohjaavalle opettajalle. Viestinnällä on roolinsa myös projektidokumenttien katselmoinneissa ja projektien loppuesitysten ohjauksessa.

Laite- ja tuotesuunnittelun opintosuunnitelman 2020–2021 ensimmäisen syksyn kurssit

KUVA 1. Laite- ja tuotesuunnittelun opintosuunnitelman 2020–2021 ensimmäisen syksyn kurssit

Opiskelijoiden osaamistasossa ja motivaatiossa on suuria eroja. Lähiopetuksen määrää on vähennetty, jolloin opiskelijoilta edellytetään entistä suurempaa oma-aloitteisuutta opinnoissaan. Ohjelmointia ei voi oppia kirjoja lukemalla tai toisen opiskelijan ohjelmointia seuraamalla. On motivoiduttava ohjelmoimaan itse. Projektissa pyritään juuri siihen, että opiskelijat motivoituvat oman projekti-ideansa kautta ja saavat onnistumisen kokemuksen ohjelmoinnista.

Ohjelmointitaitojen kehittyminen projektissa

Ohjelmointi on prosessi, joka pitää näyttää opiskelijoille opettajan esimerkin kautta. Opiskelijoita ei pitäisi laittaa ohjelmoimaan tyhjästä vaan asiantuntijan tekemän esimerkin pohjalta. Pelkkä opettajan antama tai internetistä löydetty toimiva koodiesimerkki ei ole riittävä. Opiskelijoiden on nähtävä, miten opettajakin joutuu toteuttamaan oman toimivan esimerkkinsä suunnittele, toteuta, testaa ja debuggaa -vaiheiden kautta. Opiskelijoiden on tärkeää nähdä prosessi ja sitten itse harjoitella ammattimaista lähestymistapaa ohjelmien tekemiseen Nousiainen, E. 2014. LAB-koulutusmalli ja tietotekniikan opetussuunnitelmien rakenne Oulun ammattikorkeakoulussa. ePooki. Oulun ammattikorkeakoulun tutkimus- ja kehitystyön julkaisut 16. Hakupäivä 29.1.2020. http://urn.fi/urn:isbn:978-951-597-110-4.

Projektiperiodin alussa opiskelijat toteuttavat pieniä ohjelmia Arduino-mikrokontrollerin avulla. Samalla he tutustuvat mikrokontrollerin oheislaitteisiin, kuten A/D-muunnin, UART ja Timer. Tällaisia yksinkertaisia ohjelmia ovat elektroninen noppa, jonka tulos näytetään 7-segmenttinäytöllä ja Arduinon A/D-muuntimen ja Timerin avulla tehty oskilloskooppi. Näitä tehtäviä tehdessään opiskelijat kertaavat edellisen teoriaperiodin aikana opittuja digitaalitekniikan taitoja ja C/C++-kielen rakenteita. Tämä osuus toteutetaan rinnakkain opiskelijoiden oman projekti-idean kehittämisen kanssa. Kun projekti-idea on dokumentoitu ja hyväksytty siirrytään toteuttamaan opiskelijoiden omaa projekti-ideaa.

Omaa projekti-ideaa toteuttaessaan opiskelijat suunnittelevat ja dokumentoivat oman ohjelmansa lohkokaavioesitykset. Lohkokaavion avulla ohjelma pyritään jakamaan osiin ja sen jälkeen opiskelijaryhmä sopii, kuka on vastuussa mistäkin ohjelman osasta. Ohjelmaa toteutettaessa törmätään monesti ongelmiin ja niitä yhdessä ohjaavan opettajan tai opiskelijatoverien kanssa ratkaistessa opiskelijalle avautuu myös prosessi, jonka kautta toimivat ohjelmat syntyvät. Ohjaavien opettajien tehtävänä on varmistaa, että kaikille opiskelijoille tulee oma vastuualue toteutettavassa ohjelmassa. Lisäksi heidän tehtävänään on tunnistaa ohjausta tarvitsevat opiskelijat ja myös antaa ohjausta riittävästi sitä tarvitseville.

Positiivinen oppimiskokemus syntyy, kun opiskelija saa oman ohjelmansa toimimaan, oppii selvittämään kääntäjän antamat virheet ja oppii toteuttamaan ohjelmansa aliohjelmina, jotka voidaan testata erillisinä palasina ennen lopullisen kokonaisuuden integrointia. Projektissa opiskelijoiden Arduino-mikrokontrollerit monitoroivat ympäristöään erilaisin sensorein ja toimivat sensoreiden antaman informaatioon perustuen. Tyypillisiä toteutuksia ovat erilaiset sääasemat sekä itseohjautuvat autot ja pelit. Kuvissa 2 ja 3 on esitetty jo usean projektin aiheena ollut Speden Spelit -toteutus. Siinä Arduino-mikrokontrolleri lukee painonappeja, joiden led-valoja mikrokontrolleri sytyttää satunnaisessa tahdissa. Pelaajan oikeiden painallusten lukumäärät esitetään kolmella 7-segmenttinäytöllä. Oman haasteensa projektiin tuovat kaiuttimelle soitettavat äänet sekä serial-to-parallel-digitaalipiiri, jolla saadaan kierrettyä Arduinon vähäisten ulkoisten pinnien ongelma.

KUVAT 2 ja 3. Tyypillinen ensimmäisen lukuvuoden projektitoteutus Arduino-mikrokontrollerilla ja oheislaitteilla (kuvat: Riina Vähäkangas) (kuvat avautuvat isommiksi klikkaamalla)

Ensimmäinen projekti ennustaa usein opintomenestyksen

Usein ensimmäisen lukuvuoden syksyn projektissa muodostuneet projektiryhmät jatkavat opintojaan samoissa ryhmissä. Onnistunut ensimmäinen projekti johtaa opiskelumotivaation kasvamiseen ja onnistumisiin myös opintojen seuraavissa vaiheissa. On erityisen tärkeää, että ohjaavat opettajat seuraavat projektiryhmien yhteishengen kehittymistä ja puuttuvat ongelmiin. Yleisin ongelma yhteishengen rakoiluun on se, etteivät kaikki ryhmän jäsenet sitoudu olemaan sovitusti paikalla ja tekemään omaa osuuttaan. On erittäin tärkeää, että ohjaavat opettajat ovat päivittäin paikalla tai tavoitettavissa, jotta he tunnistavat ongelmallisiksi muodostuvat ryhmät ja puuttuvat ongelmiin.

Ohjelmoinnista saatu onnistumisen kokemus saa opiskelijat ohjelmoimaan pelottomasti myös muilla alustoilla Arduinon lisäksi. Tämä näkyy seuraavan syksyn tietoliikenteen projektiperiodissa, missä uusien ohjelmointikieltenkään (PHP, Python) opetteleminen ilman opettajan ohjausta ei tunnu mahdottomalta, kun prosessi toimivan ohjelman aikaansaamiseksi on tullut tutuksi.

Jotta opiskelijat saisivat onnistumisen kokemuksia, on teoria- ja projektiperiodin opettajien yhteistyö tärkeää. Ohjelmoinnin perusteiden opettajan ja projektiperiodin opettajan tulee tehdä yhteistyötä niin ohjausta vaativien opiskelijoiden tunnistamisessa kuin myös tehtävissä, joita opiskelijaryhmän tehtäviksi annetaan. Yhteistyön kautta on saavutettavissa myös opiskelijoille näkyvä opintojen selkeys, missä edellä opittua kerrataan ja hyödynnetään seuraavassa vaiheessa. Tämä lisää opiskelijoiden motivaatiota, kun he kokevat jokaisen opintojakson merkitykselliseksi opintopolullaan.

Projektiopetus ohjelmoinnin perusteiden opetuksessa

Projektiperiodissa hyödynnetään sitä edeltävässä teoriaperiodissa opittuja ohjelmointitaitoja käytännön ongelmien ratkaisuun. Tämä laajentaa ohjelmointiosaamista. Lisäksi opiskelija oppii projektissa lukuisia muita työelämässä tarvittavia taitoja, kuten projekti-, viestintä- ja yhteistyötaitoja. Voidaan todeta, että projektiopetus sopii hyvin niin ohjelmoinnin kuin muidenkin työelämässä tarvittavien taitojen oppimiseen. 

Käytännössä on myös havaittu, että onnistuminen projektissa lisää opiskelijan motivaatiota ja parantaa menestymistä tulevissa opinnoissa. Lisäksi myönteiset kokemukset ohjelmoinnista rohkaisevat opiskelijaa opettelemaan uusia työelämässä tarvittavia ohjelmointikieliä.

Lähteet

    Kommentit

    blog comments powered by Disqus