Študenti letošnjega prvega letnika Pedagoške fakultete so žrtve poskusa, ali je mogoče poučevati programiranje – recimo čisto od začetka – z Arduinom.

Tole bo malo daljši esej in tudi ni čisto neposredno povezan s Frižiderjem. Pa tudi čisto nič Frižiderjevsko lahkoten in tehničen ne bo. Morda pa bo koga vseeno zanimal.

Na Pedagoški fakulteti sem pri Programiranju 2 v predavalnici večkrat srečal oči študentov, ki so spraševale: “Kaj nam je tega treba?” Pač, mislil sem, da gre za zrele odrasle osebe, ki vedo, da je programiranje najbolj zabavna stvar na svetu sploh. In da je edino, kar je boljše od programiranja, programiranje generatorjev, dekoratorjev in posebnih metod. Motil sem se. Še več, tudi sam sem se vprašal, kaj jim je tega treba. Smisel Programiranja 1 sem videl v tem, da naj bi bodoči učitelji (matematike ali fizike ali tehnike in) računalništva menda morali znati programirati. Oni pa niso bili čisto tega mnenja, ker si ne znajo predstavljati, da bi učence kdaj res učili programirati. Smisel Programiranja 2 pa je bil, da jih izurim v tistem, kar bodo v tretjem letniku potrebovali pri Algoritmih in podatkovnih strukturah. A glej nesrečo, celo če bi študenti v drugem letniku vedeli, kaj bodo potrebovali v tretjem, študenti v tretjem letniku ne vedo, zakaj naj bi pri svoji prihodnji karieri učiteljev matematike ali fizike ali tehnike (in malo tudi računalništva) potrebovali algoritme in podatkovne strukture.

Kaj pa, če imajo prav? Bodo res kdaj učili otroke programirati? Bo otrokom to zabavno? Je otrokom res lahko zabavno programirati … v Pythonu? Kaj se da (za otroke) zabavnega sprogramirati v Pythonu?

Ne govorim na pamet, saj sem poskusil. Eno leto sem v okviru krožka za tretje triletje OŠ učil programiranje v Pythonu. In to otroke, s katerimi smo prejšnje leto uživali v Scratchu in še leto prej v Računlništvu brez računalnika. Ni bilo kul. Grozno je bilo.

Jedro problema sem našel v tem, da nisem uspel odkriti stvari, ki bi jih bilo zabavno in dovolj lahko sprogramirati v Pythonu. Materiala na spletu, jasno, mrgoli, a šment, ko ga niso sestavili ljudje, ki bi ga šli res poskusit v razred. Ali pa trpijo za Dunning-Krugerjevim sindromom in so tem bolj prepričani, kako odlično jim je šlo, čim bolj so zamorili par generacij otrok.

Tako sem se torej odločil za poskus. Na Kitajskem sem nakupil dvajset kompletov Arduinov in pripadajoče šare. Ne nesmiselnega kompleta štiridesetih senzorjev, s katerimi nimaš kaj. Ne, študenti so dobili Arduina Uno (nekega klona z osmimi analognimi vhodi, kar je lahko zelo prikladno), poskusno ploščo in žice, prgišče pisanih diod, par tipk,upore za 220 ohmov in 10 mega ohmov, zaslon s štirimi sedemsegmentimi števkami in matriko z 8×8 diodami LED, naknadno pa so (ali bodo) dobili še mikrofon, zvočnik in ultrazvočni senzor. Vse skupaj je stalo kakih 15-20 evrov na komplet.

Osnovna ideja: s to šaro se da programirati zabavne reči. Lahko utripamo z diodo, ali pa jih prižigamo po vrsti. Naredimo VU meter. Rišemo slike na matriki LED, ali pa po njej pomikamo besedilo. Zanimivo je, da lahko vse to veliko preprosteje naredimo z običajnim računalnikom. Ampak tam ni kul in zabavno. Tu pa je. Ker je tako otipljiv.

To je, kot prvo, zabavnejše za te študente, ko se sami učijo programirati. Kot drugo pa, upam, vidijo, da bi lahko bilo to zabavno in uporabno tudi v šoli. Če ne pri računalništvu, pa pri fiziki. Skratka, Programiranje 1 naj bi s tem dobilo privlačnost in smisel hkrati.

In tako pridemo do kot tretje: eksperiment in, predvsem izziv zame kot učitelja je, ali lahko v tem okolju, prek teh nalog, izvedem celoten tečaj programiranja? Ve se, kaj moram naučiti: spremenljivke, pogojne stavke in zanke, funkcije, tabele, morda tudi kazalce, morda objekte, morda rekurzijo… Si lahko izmislim serijo nalogo, ki bodo zahtevale vse te reči, najprej preprostejše, nato vedno zahtevnejše?

Odgovor na “kot prvo” in “kot drugo” mi bodo ob koncu semestra dali študenti. Odgovor na “kot tretje” pa se mi sredi semestra že nakazuje. Če odmislimo, da C++ ni najbolj fantastičen jezik za začetniški tečaj programiranja, Arduino je najbolj fantastična platforma za začetek programiranja v besedilnih jezikih. Na Arduinu lahko guliš pogoje in zanke, pa funkcije in tabele …

Ima pa pomanjkljivosti. Izkušnja poučevanja objektnega programiranja na Arduinu – napisali smo razred, ki predstavlja diodo, potem pa še enega abstraktnejšega – ni bila dobra. Malo zato, ker so razredi v C++ za začetnika prezapleteni (preveč “magičnih besed”), predvsem pa zato, ker Arduinu to ne leži. Tega, kako bi na Arduinu učil rekurzijo, pa si sploh ne predstavljam.

Druga težava je iskanje napak v programih. To je v Pythonu veliko preprosteje. Pa, kot že omenjeno, C++ ni ravno sanjski jezik za začetnika.

Naj ne zveni pesimistično: izkušnja je odlična in drugo leto bom gotovo nadaljeval v tej smeri. Vem pa tudi, kaj bo potrebno zastaviti drugače.

Takole pa je videti četrta domača naloga – dodatni del. Da boste imeli občutek, kako kul stvari delamo.