CodeCombat on selaimessa toimiva tekstipohjaisen koodaamisen perusteita harjoittava oppimispeli. Peli perustuu siihen, että nappuloiden painamisen sijasta oppija kirjoittaa itse koodia hahmonsa liikuttelemiseksi. CodeCombatin opetusversiossa koodauskieleksi voi valita Pythonin, JavaScriptin tai C++:n.
Peli vaatii tunnusten luomisen (oppilaan valitsemalla nimimerkillä ja salasanalla), mutta ei muita tunnistetietoja. Siinä suhteessa se on siis kätevä koulumaailmassa. Pelin saa suomenkieliseksi, joskin konekäännökset saattavat olla välillä jännittäviä. Periaatteessa kuitenkin pelaaminen siis onnistuu ilman englantia (toki koodi on englanniksi) - ja toisaalta taas, peliä pelatessa voi oppia myös englantia (tai saksaa, ruotsia jne. - tosin konekäännösvaroituksella).
CodeCombat on periaatteessa maksullinen, mutta hinnan saa vain tarjouksen pyytämällä, joten en tähän hätään pysty sanomaan, kuinka kalliita lisenssit olisivat. Peruskurssin (Johdatus tietotekniikkaan) saa kuitenkin käyttöön ilmaiseksi kaikkine ominaisuuksineen ja opettajana muitakin kursseja pääsee testaamaan, nimenomaan oppilaat tarvitsevat lisenssejä päästäkseen seuraaville kursseille. Tarkastelen tässä tehtävässä lähinnä tätä ilmaista kurssia. Kurssissa on 19 kenttää ja loppuareena, jossa pääsee testaamaan koodaustaitojaan AI:ta ja muita oppilaita vastaan. Lisäksi oletuksena oppilas pystyy osallistumaan myös "julkisille areenoille", jotka vaativat jo hieman edistyneempää algoritmista ajattelua.
CodeCombatin kurssit
Yksi areenahaasteista (Iron and Ice)
CodeCombatin Johdatus tietotekniikaan -kurssi on mukava ensikosketus tai maistiainen/lämmittelyharjoitus tekstipohjaiseen koodaamiseen, minkä vuoksi se soveltuu hyvin esimerkiksi yläkoulun tietotekniikan opetukseen. Voisin hyvin kuvitella, että myös nohevien alakoululaisten kanssa peliä voisi kokeilla.
tekstipohjaisen koodi(kiele)n syntaksin perusteet (Python, JavaScript tai C++) (L5 tietotekniikan toimintaperiaatteiden ymmärtäminen*)
ensimmäisiä koodin perustoimintoja: arguments, strings, While-loops, variables (L5 kuten edellisessä)
käytännön tvt-taitojen kehittyminen (L5): tunnusten luominen, kirjautuminen, sorminäppäryys (kirjoittaminen, koodissa liikkuminen), nettisivulla sisältöjen löytäminen, ohjeiden lukeminen/katsominen (opetusvideot) ja ymmärtäminen (L4 monilukutaito)
luova työskentely koodin/pelin kanssa (L5)
loogisen ajattelun ja ongelmanratkaisutaitojen kehittäminen (L5 tutkiva työskentely)
* L:t POPS2016: Laaja-alainen osaaminen (s. 283-284)
CodeCombat on nimenomaan oppimispeli, mikä näkyy myös sen pelillisyydessä tai toisinaan sen puutteessa. Pelimäisen siitä tekee sen visuaalinen ilme sekä taustaäänet/musiikit sekä jokaisen kentän selkeät tavoitteet/haasteet/ongelmat, jotka täytyy ratkaista. Kentissä on myös paljon hauskoja yksityiskohtia, kuten juttelevia pahiksia, joilla ei juuri ole muuta kuin viihdearvoa.
Varsinkin pelin alussa pelaajan täytyy seurata hyvinkin orjallisesti pelin antamaa kaavaa, minkä vuoksi nimenomaan opetuksellisuus korostuu - toisaalta tällainen systeemi on tuttu myös monista viihdepeleistä, jotka alkavat jonkinlaisella tutoriaalilla, jossa tutustutaan pelin perustoimintoihin, ennen kuin päästään varsinaisiin haasteisiin. Pelin edetessä pelillisyys ja etenkin ongelmanratkaisuhaasteet kasvavat, jolloin siitä tulee enemmän ja enemmän pelimäinen ja luovuudellekin tulee lisää mahdollisuuksia, vaikkakin peruskurssilla käytettävissä olevat metodit ovat hyvin rajalliset. CodeCombatista löytyvät areenat ja kisat ovat sitten jo enemmän haastavia "pelejä", joissa voi voittaa tai hävitä ja kehittyä (ja joiden rämppäämiseen voi myös koukuttua, been there done that).
Kokonaisuudessaan väittäisin siis, että CodeCombat on nimenomaan ensisijaisesti pelillinen tapa oppia koodin kirjoittamista, eli hyvinkin puhdas oppimispeli - viihdearvoa sillä tuskin erityisesti on. Oppimispelinä se kuitenkin toiminee aivan hyvin, ainakin, jos sen pelaamisen jälkeen jatketaan tekstipohjaista koodaamista muissa konteksteissa tai ostetaan oppilaille lisenssit ja jatketaan muihin kursseihin tai osallistutaan kisoihin.
Luonnollinen toisto - käskyjä tulee vahingossa kirjoitettua monta kertaa ja näin kielen syntaksi tulee tutuksi
Visuaalisuus - oppijan on helppo nähdä, mitä koodi tekee
Trial and erroria on helppoa harrastaa, mutta toisaalta ei voi vain klikkailla menemään, vaan on pakko tehdä loogista päättelyä
Pelinomaisuus (taustamusiikit, hahmot, tarina) ja visuaalisuus saattavat motivoida, etenkin kaverin/opettajan koodin voittaminen
Pelin metodit ovat hyvin rajalliset: perusasiat on helppo omaksua, jolloin tehtävät eivät mene yli hilseen (toisaalta taas luovuudelle ei ole paljon varaa peruskurssilla)
Peli vinkkaa virheistä, eikä toimi, jos syntaksi on väärin - välitön palaute, joka on oppilaalle (toivottavasti) ymmärrettävää (ks. kuva alla)
Opettajan analytiikkaosio on hyvä: sieltä näkee oppilaiden edistyksen, voi tarkistaa oppilaiden tunnukset ja nollata salasanat
Videolla näkyvä versio on kaikille avoin versio CodeCombatista (samainen Johdatus tietotekniikkaan -kurssi, mutta ilman opettajan antamaa luokkakoodia). Tässä avoimessa versiossa on erikoinen pieni ero "luokkaversioon" verrattuna, nimittäin luokkaversiosta on karsittu pelillisyyttä ja lisätty ohjausta.
Videolla näkyvässä versiossa mm. hahmolle saa pukea lisää tavaroita, kun läpäisee kentän ja lisäksi pelissä kerätään erilaisia bonuksia ja timantteja. Luokkaversiossa tällaista pelillisiä ominaisuuksia on jostain syystä karsittu, ja sen sijaan, kun uusia metodeja otetaan käyttöön, täytyy luokkaversiossa katsoa pieniä opetusvideoita.
Voit liittyä minun testiluokkaan täällä käyttäen luokkakoodia FreeShortHeavy. Kielenä on C++.