Institute of Computer Science
  1. Courses
  2. 2022/23 fall
  3. Teaching Programming in High School (LTAT.TK.006)
ET
Log in

Teaching Programming in High School 2022/23 fall

  • AVALEHT
  • I Sissejuhatus

1. Programmeerimise õppimise ja õpetamise mõningad aspektid 2. Programmeerimine ilma arvutita 3. Programmeerimise õpetamise areng Eestis ja mujal (kuni 1990) 4. Programmeerimise õpetamise areng Eestis ja mujal (pärast 1990)

  • II Algajate õpetamine. Sissejuhatus
  • III Algajate õpetamine. Tehnilised vahendid
  • IV Gümnaasiumi valikkursused
  • V Programmeerimise võistlustest

Programmeerimise üldoskused

  • Korraldajad

Programmeerimine ilma arvutita

Programmeerimise õppimine põhineb suuresti konkreetsel programmeerimiskeelel, mida õpetatakse. Samas saab õpetamisel lähtuda printsiibist, et ei õpetata konkreetset programmeerimiskeelt, vaid üldisi programmeerimise põhimõtteid ja oskusi ning keel on vaid vahendiks. Kui mõelda, et programmi kirjutamine ei ole midagi muud kui käskude ritta seadmine, siis võib programmeerimist õpetada ka teisiti. Leidub meetodeid, mille abil võib programmeerimist õpetada ilma konkreetse programmeerimiskeeleta ja arvutita. Muidugi ei ole sellisel juhul tulemuseks konkreetne arvutiprogramm. Eesmärgiks ongi oluliste põhimõtetega tutvumine.

Järgnevalt esitatakse näiteid programmeerimist õpetavatest tegevustest ilma arvutita, mida saab rakendada erinevas vanuses õpilastega. Eriti hästi sobivad need nooremas kooliastmes katsetamiseks ja esimestesse programmeerimise tundidesse.

Robotite lauamäng

Eesmärk: õpetada algoritmide koostamist.

Mänguks on vaja

  • Mängulaud tugevamal paberil või papil
  • Neli või kuus mängijat
  • Kuus nuppu ehk robotit. Iga robot on identifitseeritav vastava numbri järgi 1–6. Robotite peal on number koos noolega, mis näitab liikumise suunda. Robotid võib teha näiteks pudelikorkidest või vanadest klaviatuuri klahvidest ja neile peale kleepida nooled koos numbritega või 3D-printida.
  • 10x6 käskude tabelid paberil igale mängijale. Lae tabel alla siit.
  • Täring

Juhend
Mängulaual võistlevad kahe võistkonna robotid. Võitjaks on võistkond, kes suudab esimesena kõik oma robotid (ehk mängunupud) algusest finišisse viia. NB! Võitjaks on võistkond, kes suudab KÕIK oma robotid, mitte ainult esimese, lõppu toimetada.

  1. Moodustage kaks rühma, kus esimesse rühma kuuluvad robotid numbritega 1–3 ja teise rühma 4–6.
  2. Iga mängija saab ühe roboti ja robotit ei vahetata mängu jooksul.
  3. Robotid paigutatakse juhuslikus järjekorras mängu starti suunaga finiši poole. Võistluse start on kuue ruuduga ala mängulaua servas (vaata joonis 1) ja finiš on nelja ruuduga ala (vaata joonis 2).

Joonis 1. Lauamängu start

Joonis 2. Lauamängu finiš

  1. Iga mängija saab käskude tabeli, kuhu kirjutatakse roboti käsud. Iga tabeli lahter tähistab üht käsku.
  2. Mängu mängitakse seeriate kaupa, kuni üks võistkond võidab. Iga seeria koosneb järgmistest tegevustest:
    1. Iga mängija kirjutab oma käskude tabelisse kuni kümme käsku üksteise alla, mida ei näidata teistele mängijatele. Võib kasutada ka vähem kui kümmet käsku. Robotit saab juhtida järgmiste käskude abil: mine üks ruut edasi (E), mine üks ruut tagasi (T), pööra paremale (P), pööra vasakule(V). Tähelepanu! Paremale ja vasakule pööramisel robot ei liigu edasi ja mitut käsku ei saa panna korraga ühte käsku. Näiteks ei saa tabeli ühte lahtrisse kirja panna kahte paremale pööramise käsku.
      1. Üks ruut edasi (E) – Robot liigub edasi ühe sammu otse (selles suunas, kuhu näitab nool). See õnnestub, kui ruut, kuhu robot peaks liikuma, on vaba roheline ruut. Kui sellel ruudul on teine robot, kehtib nügimisreegel (vt reeglipunkt 5e).
      2. Üks ruut tagasi (T) – Toimib sarnaselt käiguga „Edasi“, kuid liigutakse üks samm otse tagasi (robotile nii-öelda selja taha).
      3. Pööre vasakule (V) – Robotit keeratakse kohapeal 90 kraadi vasakule ning see käsk õnnestub alati.
      4. Pööre paremale (P) - Robotit keeratakse kohapeal 90 kraadi paremale ning see käsk õnnestub alati.
    2. Pärast seda, kui kõik mängijad on robotite käsud kirja pannud, viskab üks mängijatest täringut. Täringu silmade arvu järgi otsustatakse, milline robot liikumist mängulaual alustab. Näiteks kui viske tulemuseks on neli silma, siis alustab robot numbriga neli. Seejärel liigutatakse järgmise numbriga robotit. Näiteks kui alustas robot numbriga neli, siis järgmisena liigutatakse robotit numbriga viis, siis kuus, seejärel üks, kaks, kolm.
    3. Roboti liigutamiseks loeb mängija oma roboti käsud ette ja robotit liigutab mänguväljal vastasvõistkonna mängija.
    4. Mängulaual on seina tähtistatud telliskivimüürina, millest robotid läbi minna ei saa.
    5. Nügimine – Kui robot üritab liikuda ruudule, kus paikneb juba teine robot, siis see õnnestub, kui on korraga täidetud kaks tingimust:
      1. antud ruudule liikuda üritav robot on sellele ruudule eelnevalt ületanud veel vähemalt ühe rohelise ruudu (ehk ta on juba liikumises) JA
      2. eksisteerib vaba roheline ruut, kuhu nügitav robot saab liikuda.
    6. Kui nügimine õnnestub (kaks eelnevat tingimust on täidetud), liigub oma samme tegev robot soovitud ruudule ning nügitav robot liigub ühe ruudu võrra selles suunas, kuhu poole teda lükati.
    7. NB! Nügida saab ühte robotit korraga vaid ühe ruudu võrra (edasised sammud selles suunas ebaõnnestuvad). Ühe käigukorra ajal saab nügimist teha kokku kaks korda, kuid kui soovitakse teha kaks järjestikust nügimist, on vaja teise korra jaoks „koguda hoogu“ ehk liikuda üks samm tagasi ning seejärel kaks edasi (et kehtiks esimene nügimise õnnestumise tingimus).
    8. Kõik kirja pandud roboti käsud realiseeritakse. See tähendab seda, et kõik roboti liigutused teostatakse tabeli järgi järjest, olenemata sellest, kas antud käigul eelnevad sammud õnnestusid või mitte. Seega saab robot ära teha mitu sammu, mis ebaõnnestuvad, kuid siiski järgmise sammuga näiteks suunda vahetada ja edasi käia (kuigi siis ei pruugi robot jõuda sellisesse kohta, nagu tema kontrollija algselt plaanis).
    9. Kui robot jõuab finišisse, siis ta eemaldatakse finiširuutudelt, et teha ruumi teistele robotitele.
  3. Võitmine - Kui robot on liikunud finiši ruudule, siis eemaldatakse robot mängulaualt ning ta ei osale enam mängus. Järelejäänud robotid liiguvad tavapäraselt edasi. Esimene võistkond, kelle kõik robotid on finišisse jõudnud ning mängust eemaldatud, on võitja.

Kui mäng jääb ajanappuse tõttu pooleli, võib võitjaks kuulutada selle võistkonna, kelle robot on finišile kõige lähemal.

Keerukuse lisamine
Seda mängu saab muuta keerukamaks, lisades juurde ka funktsioonide kasutamise võimaluse. Näiteks jagatakse õpilastele lisaks üks 2x2 tabel, kuhu nad kirjutavad sobilikud roboti käsud ja annavad sellele käskude komplektile nime. Uut käsku saavad nad kasutada tavalises käskude tabelis.

Allikas: http://onfoodandcoding.blogspot.com/2013/06/the-robots-game.html

Kui … siis … aias

Eesmärk: õpetada tingimuste koostamist.

Mänguks on vaja

  • Platsi õues, kus mängida
  • Üht õpilast, kes on programmeerija, ja õpilasi, kes on “arvutid”
  • Mängijate arv ei ole piiratud

Juhend
Selles mängus peavad “arvutid” vastavalt programmeerija käskudele tegevusi tegema.

  • Mängu mängitakse mitmes voorus, kus igas voorus valitakse mängijate seast uus programmeerija
  • Programmeerija ülesandeks on välja mõelda lause, mis koosneb kahes osast:
    • Kui-osa, milles on programmeerija tegevus
    • Siis-osa, milles on arvutite tegevus
  • Näited programmeerija lausetest. “Kui ma puudutan oma nina, siis teie puudutate oma nina”, “Kui mina joonistan ringi tahvlile, siis teie joonistate kolmnurga paberile”, “Kui mina istun, siis teie lehvitate”.

Keerukuse lisamine
Seda mängu võib muuta veel keerulisemaks ja lisada mitme tingimusega laused. Näiteks “Kui ma pilgutan silmi ja tõstan oma vasaku jala üles, siis teie istute toolile”, “kui mina joonistan sinise ringi või kollase ruudu tahvlile, siis teie joonistate punase ringi paberile”.

Allikas: http://info.thinkfun.com/stem-education/6-unplugged-coding-activities-for-hour-of-code

Hiire toitmine

Eesmärk: õpetada algoritmide koostamist

Mänguks on vaja

  • Kahte mängijat, kus üks on programmeerija ja teine on “arvuti”
  • Üht mänguasja, soovitavalt võiks see olla hiir
  • Kaardipakki
  • Erinevaid esemeid, võib kasutada ka maiustusi

Juhend
Mängus peab liigutama hiirt või muud sobiliku mänguasja mööda mängukaartidest loodud rada ja kätte saama kõik esemed või maiustused, mis on teel.

  • Moodusta kaartidest rada, kus iga kaart tähistab ühte ruutu, millele võib hiir liikuda. Aseta kaardid nii, et nende tagumised küljed oleksid peal. Lisaks märgista raja algus ja lõpp (pildil on lõpp tähistatud ässaga ja algus jokkeriga).
  • Lisa rajale sobivatesse kohtadesse esemed.
  • “Arvuti” rollis olev mängija kuulab programmeerija antud käsklusi ja liigutab hiirt vastavalt antud käsklustele. Programmeerija annab järgmisi käsklusi:
    • Astu samm edasi - hiirt liigutatakse ühe kaardi võrra edasi.
    • Astu samm tagasi - hiirt liigutatakse ühe kaardi võrra tagasi, muutmata tema suunda (suund, kuhu vaatab hiir)
    • Pööra paremale/vasakule - hiir pöörab 90 kraadi paremale/vasakule
    • Võta ese - hiir võtab kaardil oleva eseme ja see eemaldatakse rajalt

Keerukuse lisamine
Mängu võib keerulisemaks muuta nii, et lisada rajale ka mõni pildiga kaart, mis tähistab mõnda alamtegevust (funktsiooni). Näiteks võib selleks alamtegevuseks olla mõni matemaatika ülesanne, mille peab ära lahendama.

Allikas: http://info.thinkfun.com/stem-education/6-unplugged-coding-activities-for-hour-of-code

Kaardimäng

Eesmärk: õpetada tingimuslauseid

Mänguks on vaja

  • Kaardipakke
  • Erinevaid pseudokoodiga tingimuslauseid

Juhend
Tegemist on võistlusmänguga, kus mängib vähemalt kaks võistkonda. Võidab võistkond, kes kogub kõige rohkem punkte.

  • Jaga grupp õpilasi võistkondadeks.
  • Iga võistkond saab ühe kaardipaki. Pakis võib olla ka vähem kaarte kui tavalises pakis.
  • Mängujuht, kelleks võib olla näiteks õpetaja, esitab ühe pseudokoodina kirjutatud tingimuslause
  • Iga võistkond vaatab läbi enda kaardid ja leiab kaardid, mis vastavad esitatud tingimuslausele. Iga õigesti valitud kaart annab punkti.
  • Võidab võistkond, kes saab kõige rohkem punkte.

Näited programmidest:

Kui kaart on punane, siis
    võistkond saab ühe punkti
vastasel juhul
    võistkond ei saa punkti
Kui kaadi mast on risti, siis
    võistkond saab kaks punkti
Siis kui kaart on must, siis
    võistkond saab ühe punkti

Keerukuse lisamine
Võistkondadele võib esitada keerulisemate tingimustega laused, kus tingimus koosneb mitmest osast või tingimuslaused on üksteise sees.

Näited

Kui kaart on punane ja ruutu, siis
    võistkond saab ühe punkti
muidu
    võistkond ei saa punkti
Kui kaart on punane, siis
    võistkond saab punkti
Muidu
    kui kaart on kuningas, siis
        võistkond saab kaks punkti
    muidu
	võistkond ei saa punkti

Allikas: https://curriculum.code.org/csf-18/coursed/13/

Vigade parandus

Eesmärk: õpetada koodist vigade leidmist ja nende parandamist (silumist, ingl debugging)

Mänguks on vaja

  • Töölehti programmidega, mida õpilased analüüsivad

Juhend
Iga õpilane leiab esitatud programmist vead ja teeb parandusi. Programmi eesmärk on liigutada sipelgas maasikani, kuid programmis esineb vigu.

  • Iga õpilane saab töölehe, kus on programme, milles on vigu ja programme, milles ei ole vigu.
  • Õpilase eesmärgiks on leida vigane koodirida ja teha parandus.

Töölehe näited leiad siit.

Keerukuse lisamine
Õpilastele võib anda programme, milles on rohkem kui üks viga.

Allikas: https://curriculum.code.org/csf-18/courseb/1/

Kursusel osalenud õpetajate kogemused

Joonistamine
Ene Kärg: Tegin 2. klassi matemaatikas ruudulisele paberile nö programmeerimist kui õppisime vasak-parem, üles-alla. Esimene kord tegin mina. Teised korrad tegid juba õpilased ise pildi valmis ja lugesid teistele käsud ette. Mitte kõigil ei tulnud "õiged" pildid. Põhjuseks oli see, et ütleja ajas ise segi või tegija eksis liikumisega.

Alvar Soome: Ma olen kasutanud tihedalt allpool toodud Youtube videos olevat ideed, et õpetada kuidas arvuti "mõtleb". Väga äge on vaadata kui see teadmine kohale jõuab, et keegi on arvutile sellise detailsusega kõik ette kirjutanud mida ta tegema peab ... silmad lähevad suureks nagu tõllarattad. Ma olen palunud näiteks rühmadel kirjutada mulle juhend "Kuidas panna tikk põlema", enamasti hakkab see "Võta tikk ja tõmba põlema" ... siis ... üritad tikku kätte saada ilma tikutoosi avamata ... ja tõmbad vastu lauda või ... ja nii samm-sammult muudkui lähed detailsemaks ja natuke keerad igakord "vinti" peale juhendi tõlgendamisega

Veel vahvaid tegevusi

Lisaks eelnevalt kirjeldatud tegevustele, leidub veel mitmeid erinevaid mänge, mille abil programmeerimist ilma arvutita õpetada.

  • https://code.org/curriculum/unplugged
  • https://csunplugged.org/en/resources/
  • https://progetiiger.ee/tool/63/ilma-seadmeteta-programmeerimine
  • http://info.thinkfun.com/stem-education/6-unplugged-coding-activities-for-hour-of-code
  • Algoritmi järgi tantsimine. Sorteerimisalgoritm:

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment