4. Mitä koulussa tulee oppia ohjelmoinnillisesta ajattelusta?

Ohjelmoinnillisen ajattelun tavoite ja ydinperiaatteet

Peruskoulun näkökulmasta on tärkeää määrittää, millaisia konkreettisia oppisisältöjä, tietoja ja taitoja oppilaat ohjataan yllä olevan kaltaisen tavoitteen mukaisesti oppimaan. Määrittely on kuitenkin vaikeaa, sillä aihepiiri on uusi ja tutkimusta on vasta aloitettu.

Suomalaisessa peruskoulujärjestelmässä olevat varsin koodauskeskeiset ohjelmoinnin sisällöt ja tavoitteet sekä niitä koskevan arvioinnin perusteet voi lukea esimerkiksi Koodiaapisen verkkosivuilta. Viime aikaisten tutkimusten mukaan muissa maissa on päädytty myös toisenlaisiin OPS-teksteihin, joihin sisältyy muun muassa koodaamisen, tietojenkäsittelyn tai ylipäänsä TVT-taitojen opetuksen kuvauksia. "Ohjelmoinnillista ajattelua" sinällään mainitaan eri maiden opetussuunnitelmissa kuitenkin hyvin harvakseltaan.

Koodausta laaja-alaisemmin ajateltuna ohjelmoinnillisen ajattelun oppimisessa voidaan pitää oleellisina alla olevassa taulukossa olevien kaltaisten ylätason avainkäsitteiden ja niihin liittyvien ydinperiaatteiden oppimista (Fagerlund ym., 2020). Koska aihepiiri on hyvin vakiintumaton, käsitteistä ja periaatteista jotkut voidaan nähdä joko enemmän tai vähemmän keskeisinä tai toissijaisina.


Ohjelmoinnillisen ajattelun avainkäsite

Ydinperiaatteiden kuvaus

Abstrahointi

  • Erilaisia digitaalisia laitteita, kuten tietokoneita, kännyköitä ja jopa autoja tai kodinkoneita voidaan pitää tietokoneina, jotka suorittavat erilaisia tietokoneohjelmia.
  • Laitteissa toimivat ohjelmointikielet, algoritmit ja data ovat pelkistyksiä oikean elämän ilmiöistä.
  • Monimutkaisten ongelmien ratkaiseminen helpottuu, kun toimitaan ns. ylemmillä abstraktiotasoilla, jotka poistavat tarpeettomia yksityiskohtia (esim. käyttämällä graafista ohjelmointikieltä, eikä tekstipohjaista konekieltä).

Algoritmit

  • Ohjelmoijat ratkaisevat ongelmia luomalla käskysarjoja, jotka alkavat jonkinlaisesta alkutilasta, käyvät läpi sarjan erilaisia välitiloja ja saavuttavat lopullisen päämäärätilan.
  • Sekvensointi, ehdollinen valinta ja toistaminen ovat algoritmien perusrakennuspalikoita.
  • Ns. rekursiiviset ratkaisut ratkaisevat saman ongelman yksinkertaisempia versioita.

Automatisointi

  • Ohjelmoijat suunnittelevat ja toteuttavat ohjelmia tietokoneen ymmärtämällä koodikielellä.
  • Tietokoneet voivat käyttää erilaisia sisään- ja ulostulolaitteita.
  • Automaattinen tietojenkäsittely erilaisia laitteita käyttämällä voi ratkaista oikean elämän monimutkaisia ongelmia.

Data

  • Tietokoneohjelmat käsittelevät tietokoneen ymmärtämää tietoa eli dataa (esim. tekstiä, numeroita) sekä suorittavat siihen laskentaoperaatioita.
  • Dataa voidaan varastoida erilaisissa tietorakenteissa (esim. muuttujissa, taulukoissa, listoissa, graafeissa).
  • Ohjelmoijat etsivät ja keräävät tietokoneen ymmärtämää tietoa eli dataa eri lähteistä ja monitasoisista, toisiinsa liittyvistä datakokoelmista.

Iterointi

  • Ohjelmoijat kehittelevät ratkaisuja suunnittelemalla, testaamalla ja korjaamalla virheitä syklisesti, kunnes ihanteellinen lopputulos saavutetaan.

Kaavat ja yleistäminen

  • Tietokoneohjelmissa ja sen käsittelemässä datassa voi olla niissä oleviin samanlaisuuksiin ja erilaisuuksiin perustuvia toistuvia, abstrahoituja kaavoja. Näistä esimerkkejä ovat koodirakenteet (esim. silmukka, ehtorakenne), joita voi käyttää monissa eri tilanteissa.
  • Yleisen tason ratkaisut ratkaisevat ongelmia uusissa tilanteissa ja eri toimialueilla.

Koordinointi ja samanaikaisuus

  • Tietokoneet voivat suorittaa erillisiä käskysarjoja rinnakkain.
  • Rinnakkaisten suoritettavien prosessien ajoitusta tulee ohjata.
Kyseenalaistaminen

 

  • Ohjelmoinnillista todellisuutta tulee ymmärtää ja sitä tulee tarkastella kriittisesti esim. sosiaalisista, yhteiskunnallisista ja eettisistä näkökulmista.

Logiikka

  • Tietokoneohjelmien laatimisessa sovelletaan ehdollista logiikkaa, Boolen logiikkaa, aritmeettisia laskuoperaatioita ja muita loogisia järjestelmiä.
  • Ohjelmoijat arvioivat tilanteita, varmistavat tosiasioita, tekevät ja vahvistavat oletuksiaan ja tekevät päätöksiä ja johtopäätöksiä.

Luovuus

  • Ohjelmointi on luovan itseilmaisun väline.
  • Ohjelmoijat käyttävät vaihtoehtoisia lähestymistapoja ongelmien ratkaisemisessa ja ”laatikon ulkopuolelta ajattelua”.

Mallintaminen ja suunnittelu

  • Algoritmeista voidaan suunnitella ihmiselle lukukelpoisia malleja ja esitysmuotoja (esim. piirtämällä, kirjoittamalla "pseudokoodilla"), jotka voidaan myöhemmin toteuttaa käytännössä.
  • Ohjelmoijat organisoivat ohjelmoidun järjestelmän rakenteen, ulkonäön ja toiminnallisuuden hyvin.
  • Tietokoneohjelmien toimintaperiaatteista voidaan laatia visuaalisia malleja, simulaatioita ja animaatioita, jotka kuvaavat ohjelmoidun järjestelmän toimintaa.

Ongelmien purkaminen osiin

  • Suuret ongelmat ja järjestelmät purkautuvat pienempiin ja yksinkertaisempiin osiin, jotka voidaan ratkaista erikseen.
  • Suuret järjestelmät koostuvat pienistä merkityksellisistä osista (esim. ohjelmat voivat koostua olioista, pääohjelmasta ja aliohjelmista tai funktioista).

Tehokkuus

  • Kehitetyissä algoritmeissa ei ole tarpeettomia tai ylimääräisiä askeleita.
  • Muiden on helppo käyttää ohjelmoijien kehittämiä ratkaisuja, ja kehitetyt ratkaisut saavat aikaan myönteisen käyttökokemuksen.
  • Kehitetyt ratkaisut toimivat tehokkaasti ja oikein kaikissa tilanteissa.
  • Monimutkaisten ongelmien parissa toimiminen edellyttää itseluottamusta, sinnikkyyttä, epävarmuuden sietokykyä ja kykyä käsitellä avoimia ja ei-rajattuja ongelmia.

Testaaminen ja virheidenkorjaus (debuggaus)

  • Ohjelmoijat jäljittävät koodia ja suorittavat testejä koodissa olevien virheiden paikantamiseen ja korjaamiseen.
  • Ohjelmoijat arvioivat ratkaisujensa toiminnallista tarkkuutta ja havaitsevat niissä olevia virheitä esim. vertaamalla ratkaisuaan muihin samanlaisiin ratkaisuhin ja antamalla muiden testata ratkaisujaan.
  • Ohjelmoijat arvioivat laatimiensa ratkaisujen soveltuvuutta suhteessa päämäärään tai asetettuihin kriteereihin.
  • Ohjelmoijat tekevät reiluja ja rehellisiä arvioita monimutkaisissa oikean elämän ongelmanratkaisutilanteissaan (esim. rajattu aika).

Yhteistoiminta

  • Ohjelmoijat laativat ratkaisuja sekä toisten kanssa että toisten hyväksi (esim. jakamalla ratkaisunsa toisille).
  • Ohjelmoijat asettavat syrjään erimielisyytensä yhteisen tavoitteen saavuttamiseksi.
  • Ohjelmoijat jakavat työtehtäviä ja toimivat erilaisissa rooleissa omien vahvuuksiensa ja heikkouksiensa mukaan.
  • Ohjelmoijat käyttävät uudelleen valmiita ja jo olemassa olevia työkaluja, malleja ja materiaaleja.

Huom. yllä olevia ei tule tulkita erillisinä "nippelitietoina", vaan ne liittyvät merkityksellisesti toisiinsa merkityksellisissä tutkivan oppimisen ja ongelmanratkaisun tilanteissa, joissa käsitellään oikean elämän sosiaaliseen ja yhteiskunnalliseen kontekstiin liittyviä autenttisia ilmiöitä!

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä