Sat programiranja
U godini koja se nedavno završila pokrenute su brojne inicijative, izložene ideje i inovativna rešenja usmerena ka omasovljavanju učenja programiranja i računarskih nauka u školama.
Vreme je da ponovo razmislimo o pitanju da li sva deca treba da uče programiranje: oni koji to podržavaju treba da razmisle šta zapravo od programiranja i na koji način deca treba da uče, a oni kojima je bliži negativan odgovor, treba da razmisle da li drugačiji pristup učenju programiranja možda ipak ima smisla.
Korisnik i(li) programer
Sve je više stvari iz računarskih nauka koje je dobro da znaju obični korisnici. Na primer, ukoliko uredno obeležavamo stilove u Microsoft Word dokumentu, lako ćemo formirati sadržaj i automatizovati razne druge aktivnosti, poput korekcije izgleda svih podnaslova.
Slično, ako neke svoje podatke upisujemo u Excel tabelu, ne treba da spajamo ćelije ili da bitno obeležje upisujemo kao promenu boje ćelije – struktura redova i kolona treba da bude čista, uz uvođenje nove kolone kada nam zatreba novo obeležje. Ako tako radimo, posle ćemo lako automatizovati filtriranje redova, sortirati, računati zbirove po grupama itd. Ovo valja da znaju svi korisnici Excel‑a mada, kao i u prethodnom slučaju, onima koji znaju da programiraju je sve to logično i bez potrebe da se puno objašnjava.
Primeri poput prethodna dva ilustruju koliko je način razmišljanja koji se stiče učenjem programiranja koristan za generalno razumevanje tehnologije. U stvari, svaki put kada razmišljamo kako nešto da napravimo da bi se kasnije posao mogao bolje automatizovati, dešava nam se mentalna aktivnost slična programiranju. Ostaje još samo pitanje kako da učimo decu da razmišljaju kao programeri, a da ih ne opterećujemo svim onim što profesionalni programeri treba da znaju.
Ukoliko već niste do sada, preporučujemo vam da prođete kroz nekoliko lekcija na learn.code.org. Kratke programe kojim rešavate zadate probleme formirate slaganjem ponuđenih blokova i na taj način upravljate likovima iz poznatih video‑igara. Kao uvodna objašnjenja za pojedine oblasti imate video‑klipove u kojima se pojavljuju poznate ličnosti. Kome su se svidele lekcije sa learn.code.org, može da pređe na Scratch (scratch.mit.edu) da bi kreirao sopstvene animirane sadržaje, a može i da pokuša da savlada osnove Web programiranja na Codeacademy (www.codeacademy.org).
Jedan sat za znanje
U prvoj polovini decembra organizovana je globalna akcija „Sat programiranja“ (Hour of Code), u kojoj je više od 15 miliona ljudi sat vremena učilo programiranje, prolazeći tutorijale na bazi prethodno navedenih i drugih sličnih alata. O rezultatima ove akcije, u kojoj je zabeleženo i značajno prisustvo škola, organizacija i pojedinaca iz Srbije, možete pročitati na csedweek.org. Iskustva „Sata programiranja“ pokazuju da deca pozitivno reaguju na ovaj način učenja.
Ako želite ozbiljniju stručnu analizu, pogledajte izveštaj zajedničke radne grupe Informatics Europe i ACM Europe o informatičkom obrazovanju (europe.acm.org/iereport) ili izveštaj Kraljevskog društva o računarstvu u školama UK (royalsociety.org/education/policy/computing‑in‑schools/report).
Napomenimo da je Nacionalni prosvetni savet Republike Srbije usvojio „Smernice za unapređivanje IKT u obrazovanju“ (www.nps.gov.rs), u čijoj je izradi učestvovao i autor ovog teksta. U odeljku „Uloga IKT u ciljevima i ishodima obrazovanja“ data je klasifikacija kompetencija sa značajnom ulogom IKT, u okviru koje je istaknuto informatičko rezonovanje kao opšteobrazovna kompetencija u kojoj dominira aspekt razumevanja koncepata, principa i teorijskih osnova iz oblasti IKT‑a.
Nije dovoljno decu učiti kako da koriste tehnologiju, već treba da budu upoznata i s konceptima i naučnim osnovama na kojima se zasniva IKT. Naravno, to ne znači da svi treba da postanemo profesionalci u računarskim naukama, već da računarske nauke dobiju opšteobrazovni aspekt, slično kao matematika ili fizika.
U ranim godinama
Prvi talas programerskog entuzijazma desio se nakon pojave kućnih i personalnih računara krajem sedamdesetih i tokom osamdesetih godina. U mnogim školama u raznim krajevima sveta počelo je da se uči programiranje, često uz korišćenje programskih jezika Basic i Logo. I pored toga što je za određen broj nastavnika i dece učenje programiranja predstavljalo pozitivno iskustvo, u većini škola se ubrzo prešlo na druge aktivnosti s računarima. Ideje tehnološkog opismenjavanja bez programiranja postaju prevlađujući okvir za ono što deca uče iz oblasti informacionih tehnologija.
Tamo gde se učenje programiranja zadržalo u nastavi u osnovnim i srednjim školama, često srećemo mišljenje da je programiranje suviše složeno, nezanimljivo i uskostručno znanje beskorisno za one koji se neće profesionalno opredeliti za informacione tehnologije, za šta i mi koji smo profesionalci u oblasti informacionih tehnologija snosimo deo odgovornosti.
Nekada smo se interesovali za programiranje, jer smo imali potrebu da znamo kako stvari rade „ispod haube“, poput vozača koji su nekada imali komplet za krpljenje probušene gume i očekivalo se da znaju da sami srede problem sa automobilom, barem toliko da bi ga odvezli do prvog servisa. Danas se vraćamo učenju programiranja zato što nas to osposobljava za način razmišljanja koji nam je potreban, zato što je to jedan pristup rešavanju problema i pomaže nam u razumevanju kako najbolje da funkcionišemo u tehnološkom okruženju.
Kako predavati programiranje?
Ako pođemo od razumevanja svrhe učenja programiranja, oslobodimo se ideje da deca treba da uče programiranje onako kako su nas učili. Ako rasteretimo decu složenih alata i raznih stvari koje treba da nauče napamet, omogućimo im da programiranje odmah iskuse, a zatim produbljuju razumevanje, ako programiranje smestimo u kontekst zanimljivih problema i ako se uz to potrudimo da napravimo kvalitetne nastavne sadržaje zanimljive deci, onda dolazimo do toga da itekako ima smisla učiti decu programiranju.
Činjenica da je moguće naći put do adekvatnog pristupa programiranju za decu ne znači da je tim putem jednostavno proći, pre svega zato što je suviše lako rasplinuti se na pogrešnu stranu, kao na primer u detalje sintakse programskog jezika, detalje razvojnog okruženja, arhitekture računara i operativnog sistema, kao i u složenije aspekte programskog jezika, standardne biblioteke, pojedinih algoritama i tehnika programiranja, umesto da se usmerimo ka širenju spektra zanimljivih problema koji se rešavaju jednostavnim programima.
Čitava ova priča ipak ne bi imala smisla bez konkretnih alata i sadržaja koje možemo koristiti da bismo decu učili da programiraju, a koji se u tu priču uklapaju. Ako ste proučili primere alata i obrazovnih sadržaja na koje smo vas uputili, uverili ste se da izbor postoji. Takođe, iza tih primera stoje razne softverske biblioteke poput Blockly programskog editora (code.google.com/p/blockly) koje olakšavaju stvaranje novih alata i sadržaja. Ubrzano sazreva ekosistem platformi, alata, usluga, sadržaja, dobre prakse u učenju dece programiranju, kao i ljudi koji u svemu tome učestvuju.
Nebojša Vasiljević je pomoćnik ministra u Ministarstvu spoljne i unutrašnje trgovine i telekomunikacija, zadužen za elektronske komunikacije, informaciono društvo i poštanski saobraćaj.
Nebojša Vasiljević
(Objavljeno u časopisu PC#206)