Zbliża się okres świąteczny. Rodzice powinni pomyśleć o tym, aby robiąc dziecku prezenty, dbać równocześnie o ich rozwój. Poniższe refleksje mogą być po części w tym pomocne.
W polskich i czeskich szkołach sporą popularność zdobył program Baltie, ułatwiający naukę programowania. Pomysł twórcy programu, by nauczać programowania zamiast „informatyki” wydaje się z wszech miar słuszny. Nie wszyscy będą programistami, ale to nie jest umiejętność trudniejsza od szkolnych rachunków, a jej brak może wkrótce znamionować pewien rodzaj analfabetyzmu. Już teraz zażenowanie budzi brak umiejętności wykonania elementarnych operacji na komputerze (jak wyszukanie czegoś w internecie, czy napisanie i wydrukowanie tekstu). Można się spodziewać, że za 20-30 lat taką operacją będzie na przykład zaprogramowanie działania „inteligentnego” sprzętu domowego na czas urlopu.
Program Baltie może być użyteczny w nauczaniu umiejętności programowania. Idea działania programu , która polega na działaniu „czarodzieja” wykonującego automatycznie zaprojektowany w postaci obrazków algorytm jest fajna. Czy jednak wystarczy zabawa z tym programem, aby w sposób lekki łatwy i przyjemny nauczyć się programować? Zapewne najbardziej kompetentni w tej kwestii byliby nauczyciele. Z przykładowego planu nauczania z informatyki z programem Baltie widać, że uczniowie opanowują całkiem sporo umiejętności:
- budowanie sceny z rysunków,
- umiejętność korzystania z pomocy,
- sterowanie obiektami na scenie (dojście do obiektu przez czarodzieja powoduje wykonanie akcji),
- wielokrotne powtarzanie tych samych czynności (pętla),
- tworzenie animacji,
- samodzielne kodowanie
Przy okazji poznajemy środowisko programowania (program), które nieco przypomina komputer, a nieco programy do animacji. I tu rodzi się pewna wątpliwość (być może widoczna tylko dla kogoś zajmującego się programowaniem). Na ile uczniowie zdobywają uniwersalne umiejętności, a na ile uczą się posługiwać konkretnym programem? Pierwsza styczność z programem nie powala na kolana. To nie jest „otwórz i używaj”. Dopiero otwarcie przykładów pozawala szybko zrozumieć o co chodzi. Przez cały kurs używa się jednego programu, opanowując coraz bardziej złożone konstrukcje. Pozwala to na organizowanie konkursów (także międzynarodowych), które są doskonałym uzupełnieniem procesu nauczania. Jednak umiejętności pożądane dla programisty są różnorakie i program nie tylko nie rozwija każdej z nich niezależnie, ale nawet nie pozwala ocenić ich opanowania. Można też mieć wątpliwości co do tego, czy niektóre umiejętności (zobacz dalej) wręcz nie warunkują możliwości korzystania z programu.
Jakie umiejętności musi posiąść programista? W poniższym wykazie uwzględniono przykładowe metody kształcenia tych umiejętności.
1. Używanie symboli. To można opanować bez komputera. Na przykład przy pomocy kart z rysunkami zwierząt, rzeczy i pojęć - coraz bardziej abstrakcyjnych. Na jednej stronie karty (zakrytej) może być na przykład zdjęcie psa. Na drugiej (odkrytej) kolejne jego schematyczne przedstawienia – aż do najbardziej abstrakcyjnych. Dziecko otrzymując zadanie pogrupowania kart z takimi rysunkami może opanować ideę symbolicznego przedstawiania rzeczy.
2. Odróżnienie symbolu od kryjących się pod nim treści. Najłatwiej to przedstawić / opanować za pomocą pudełek w których ukrywamy różne rzeczy. Można na przykład dzieciom zrobić konkurs na symbole oznaczające kosze na różnego rodzaju odpadki (przy okazji uczymy ekologii ;-)).
3. Pojęcie symbolu pustego. Na przykład pudełka oznaczone różnymi symbolami w kwadratach kryjące drobne upominki oznaczone tymi symbolami. Jedno pudełko (nadmiarowe w stosunku do ilości dzieci) z pustym kwadratem jest puste. Dzieci wybierają pudełka i zapewne puste zostanie. Pytanie „dlaczego?” pozwala wyjaśnić co to jest symbol pusty.
4. Zmienne znaczenie symboli. Pojęcie zmiennej (pudełko oznaczone symbolem) jest chyba najważniejszym w programowaniu komputerów. Trzeba sobie zdawać z tego sprawę i zadbać o to, by dzieci przyswoiły sobie dobrze takie abstrakcyjne myślenie jak najwcześniej. Zabaw do tego prowadzących jest bardzo wiele. Na przykład z pudełkami oznaczonymi symbolami, do których wkłada się wiele różnych rzeczy. To niesamowite, ale w szkołach ponadpodstawowych można spotkać uczniów, którzy potrafią policzyć 3+2=5, ale gdy zapytamy co kryje się pod symbolem x w równaniu 2+x=5 – wpadają w panikę.
5. Logiczne myślenie. Zbudowanie przez Boole'a rachunku logicznego na wzór algebry było bardzo ważnym odkryciem. Wpłynęło jednak na to, że najbardziej naturalną umiejętność człowieka postrzegamy dzisiaj jako rzecz trudną. Nauki logiki nie powinno się zaczynać od operowania na symbolach i wyrażeniach, ale od prostych pytań w rodzaju: co zrobić, aby osiągnąć jakiś efekt. To mogą być proste historie (na przykład: aby włączyć notebooka trzeba podnieść klapę i nacisnąć przycisk, ale jeśli bateria jest rozładowana, musimy włączyć go dodatkowo do prądu). Po dojściu do końca w analizie postawionego problemu, można zapisać działania w odpowiedniej kolejności, uzyskując prosty algorytm.
6. Idea automatycznego działania. Istnieje wiele fajnych zabawek dla dzieci, demonstrujących takie działanie. Na przykład różne tory-zjeżdżalnie z kulkami. Także kilka fajnych gier komputerowych pomaga zrozumieć na czym polega automatyzm (Crazy Machines, Incredible Machine).
7. Pojęcie algorytmu. Algorytm jest logicznie ułożonym planem działania. Dodatkową umiejętnością, jaką musimy przy tym posiąść jest tworzenie iteracji – czyli powtarzania tych samych operacji. Najprostszą iteracją (dostępną w wielu językach programowania) jest wykonanie jakiejś operacji dla wszystkich elementów zbioru. Wszystkie inne iteracje mogą są równoważne przeglądaniu zbioru, który jest wyznaczany dynamicznie. Na przykład „wykonaj dodawanie x+1 dla x<10” oznacza wykonanie operacji dla zbioru danych (x) mniejszych od 10.
Istnieje niezliczona ilość gier i zabaw, które pozwalają zrozumieć algorytmy i iteracje. Na przykład poszukiwanie przy pomocy wagi szalkowej jednej z kulek, która jest lżejsza (cięższa) od pozostałych wyszukiwanie połówkowe).
8. Zrozumienie idei języka programowania. Obecnie dzieciom łatwo zrozumieć, że ludzie posługują się różnymi językami. Nie stanowi też jakiejś mentalnej bariery to, że do maszyn mówi się także w jakimś języku. Najistotniejszą kwestią jest zrozumienie, że w tym ostatnim przypadku nie ma mowy o jakichkolwiek niedomówieniach – język musi być precyzyjny. Wspomniany na wstępie Baltie jest jednym z wielu narzędzi pozwalających dzieciom tworzyć programy. Spośród wielu podobnych propozycji warto zwrócić uwagę na internetowe scratch (MIT) i lightbot.com (więcej informacji: http://venturebeat.com/2014/06/03/12-games-that-teach-kids-to-code/view-all/). Ważniejsze od opanowania konkretnego języka wydaje się pokazanie tego, że w zasadzie już teraz używamy różnych języków programowania – często bezwiednie. Pisząc zapytanie dla wyszukiwarki internetowej, zadajemy jej proste pytanie, w którym poszukiwane treści są tylko cytowane. Programujemy pisząc reguły w arkuszu kalkulacyjnym, czy budując stroę internetową.
Powyższy wykaz nie ma pretensji do opisania wszystkiego, co musi wiedzieć i umieć programista. Jednak bez którejś z wymienionych umiejętności trudno wykształcić programistę. A są to umiejętności uniwersalne i do opanowania już w wieku dziecięcym. Nauczyciele powinni traktować wszelkie pomoce (takie jak Baltie) wyłącznie jako narzędzie do osiągnięcia celu. Celem zaś powinno być kształtowanie wymienionych umiejętności.