Pohdintaa ohjelmoinnin opettamisesta
2015-01-05
Heikin pohteita > Ohjelmointia, matematiikkaa, fysiikkaa … > Pohdintaa > Tietokone LUMA-opetuksen inspiroijana (edit: 2024-9-4)
Olen käynyt kouluni 60- ja 70-luvuilla ja opettajan pedagiset opinnot suoritin kymmenisen vuotta sitten. En siis tiedä, miten tietokoneita nykyään käytetään LUMA-opetuksessa. Tarkoitukseni oli esitellä, miten tietokoneen avulla voi ratkaista käytännön esimerkkejä niin, että se innostaisi LUMA-aineiden opiskeluun. Samalla tulisi esiteltyä, mihin kaikkeen myöhemmässä elämässä hyödylliseen ja mielenkiintoiseen LUMA-aineista erityisen kiinnostunut lukiolainen voisi perehtyä. Innostuin kuitenkin heti ensimmäisestä esimerkistä liikaa, joten esitykseni jäi kapeaksi — eli siis perusteelliseksi ja syvälliseksi.
Aloitettu: syyskuussa 2024
Heikin pohteita > Ohjelmointia, matematiikkaa, fysiikkaa … > Pohdintaa > Ohjelmoinnista ja ohjelmoinnin oppimisesta (edit: 2015-05-13)
Ohjelmoinnissa on monenlaista opittavaa:
— On sisäistettävä algoritminen ajattelu
— On opittava ohjelmointiympäristöjen 'nappulatekniikka'
— On opittava käytettävän ohjelmointikielen syntaksi eli kielioppi.
— On opittava tekemään laadukasta koodia, joka on ymmärrettävää ja helposti muuteltavissa ja siten uudelleenkäytettävissä.
Minun mielestäni pitäisi kehittää tapa ohjeistaa oppilaat laajentamaan ohjelman tynkää. Minusta tuntuu, että ohjeiden pitäisi olla kirjallisia, koska oppilaiden aloitettua työskentelyn sitä on vaikea keskeyttää ja keskeyttäminen häiritsee työskentelyä. Opetuksen eriyttämisestäkään ei tule mitään, jos homma hoidetaan kateederilta ohjeistaen.
Kunnollisten ohjeiden laatiminen on kuitenkin työlästä, joten yritin automatisoida niiden tuottamisen. Se kuitenkin tekee ohjeistamisesta pikkuisen jäykkää.
Sen lisäksi, että ohjeistetaan tekemään tai johdatellaan seuraamaan jonkin ohjelman tekemistä, pitää antaa ideoita vapaamuotoiseen kokeiluun ja kysymyksiä koodista. Ehkä luokan pitäisi saada yhdessä ideoida, mitä mielenkiintoista esimerkkiohjelmien aineksista voisi tehdä ja miten niitä voisi korjailla hauskemmiksi. Porukalla voisi olla hyvä tutkia, miten esimerkkiohjelmat tai joku niiden mielenkiintoinen yksityiskohta toimii.
Sekaan pitäisi vielä laittaa linkkejä, joissa esitellään esimerkkein ja ohjelmassa käytettäviä ohjelmointikielen peruspiirteitä, kuten funktio ja olio. Esimerkiksi olio on hyvin monimutkainen – olio. Videopelit valikoituvat esimerkeiksi, koska niissä tapahtuu jotain ja niihin saa yhdistettyä matematiikkaa ja fysiikkaa. Esimerkkien videopelien perusrakenne — ikuinen silmukka, josta kutsutaan olioiden metodeja — saattaa kuitenkin olla hankala mieltää. Pygame modulin funktiot ovat myös pikkuisen hankalia ymmärtää. Mutta sellaista ohjelmointi on — kaikkea ei ole helppo ymmärtää.
Kaikesta ylläolevasta puuttuu pedagoginen näkökulma. Scratch harjoittelu mielestäni toimii niin, että lyhyen esittelyn jälkeen oppilaat voivat aloittaa ohjelmoinnin esimerkkinä tasoisia ohjeita seuraamalla. Scratch tarjoaa paljon enemmän kuin mitä esittelin esimerkissäni. Sillä voi tehdä musiikkia, animaatioita ja paljon muuta. Niistäkin pitäisi antaa jotain pientä esimerkkiä. Tilaa pitää antaa tietysti vapaalle kokeilemiselle, mutta ihan satunnainen haahuilu ei johda kuin kyllästymiseen. Olisi hienoa, jos opettaja tuntisi Scratchin niin hyvin, että osaisi opastaa kokeilijaa pääsemään eteenpäin ja löytämään itseään kiinnostavan alueen ohjelmoinnista.
Python ohjelmoinnissa alkuun pääseminen on Scrathciin verrattuna haasteellista, koska valmiita lohkoja ei ole tarjolla ja valmista ohjelmaakaan ei ole aluksi helppo hahmottaa. Esimerkkieni lisäongelma on se, että halusin hypätä suoraan johonkin mielenkiintoiseen, minkä takia jo peliohjelmieni 'tyngissä' on koodia aika paljon. Ehkä pitää tehdä vielä yksi esimerkki, jossa piirretään samanalainen monikulmio kuin alun Scratch-esimerkissä. Minusta on kuitenkin tärkeää, että ohjelmoinnin opetuksessa tutustutaan johonkin jotain 'oikeasti' tekevään ohjelmaan. Ei pelkästään opetella taitoja vaan opetellaan soveltamaan taitoja tutkivan oppimisen hengessä.
Tämän takia luovuin yrityksestä sovittaa esimerkit koulun opetussuunnitelmiin. Kaikki mielestäni mielenkiintoiset 'käytännön' ongelmat tai esimerkit edellyttävät opetussuunnitelmaan kuulumattomia tietoja ja taitoja. Vielä tärkeämpää, ne edellyttävät vahvaa taitoa soveltaa matematiikkaa ja luonnontieteitä ja kykyä ottaa haltuun kulloinkin tarvittavia taitoja ja tietoja.
Esimerkiksi fysikaalinen mallinnus ja numeerinen simulointi ovat nykymaailmassa keskeisiä menetelmiä — ilmastonmallinnus ja Angry Birds peli tarvitsevat niitä. Derivaatan perusolemus on hyvä selittää erotusosamäärän avulla, mutta ylläolevissä esimerkeissä alkuun pääsee selittämällä, että kiihtyvyys on nopeuden muutos aikayksikössä. Differentiaaliyhtälöitä ei välttämättä mainita edes lukiossa vaikka fysiikassa Newtonin peruslaki on differentiaaliyhtälö. Minun aikoinani differentiaaliyhtälöiden kurssilla oli mahdollisuus perehtyä erikoistapausten — fysiikan kursseista ja muustakin irrallisten — analyyttisten ratkaisujen määrittämiseen. Nykyään olisi mahdollisuus parissa tunnissa ottaa haltuun työkalu, jolla voi numeerisesti simuloida itse ohjelmoiden suoraviivaisen ja pyörivän liikkeen keskeiset ilmiöt ja piirtää käyriä siitä, miten energiat ja liikemäärät vaihtelevat. Ehkä teen esimerkin tuollaisesta työkalusta.
Olen innnostunut dynaamisista järjestelmistä, mutta ohjelmointi on tietysti tärkeä työkalu monilla aivan muilla aloilla. Eri aloilta pitäisi koota esimerkkejä.
Asiantuntijan ajatuksia tietotekniikan käytöstä matematiikan opetuksessa.