Czy można uczyć dzieci programowania bez komputera?

Komputer jest narzędziem – tak jak młotek. Ucząc posługiwania się młotkiem możemy co prawda wychować rzeźbiarza, ale możemy też wychować kowala, stolarza czy kamieniarza. Tak, więc nie – mistrzowskie opanowanie młotka nie czyni rzeźbiarza i nie na młotku należy się koncentrować.

Co zatem jest potrzebne? Otóż, aby uczyć dziecko programowania potrzebne są:

Przyda się także kilka rekwizytów w postaci zabawek, poduszek czy kapci. Obecność ruchliwych zwierząt domowych znacznie utrudni operację, a podłoga w kratkę pozwoli zaoszczędzić na taśmie malarskiej 🙂

Zaczynamy zabawę!

taśmą malarską wyznaczamy na podłodze obszar gry
ustalamy, że poruszać można się jedynie skacząc na jednej nodze, tylko o jedno pole na raz i nigdy na skos
wyznaczamy pozycję, z której dziecko wyrusza oraz cel, do którego ma dojść
na podłodze umieszczamy zabawkę i prosimy aby zabrało ją po drodze

Nawet najmłodsze dziecko wykona to zadanie bez trudu. Pobawmy się tak chwilę, poprośmy aby dziecko poszukało dróg alternatywnych, użyjmy większej ilości zabawek, po czym narysujmy na kilku karteczkach strzałki i poprośmy aby dziecko oznaczyło nimi swoją drogę.

Pozbierajmy wszystkie kartki i ułóżmy je w stosik tak aby na wierzchu była ta karteczka, którą dziecko położyło na podłodze jako pierwszą, a na samym spodzie ta, którą położyło jako ostatnią.

Uwaga! Należy bardzo pilnować aby dziecko nie przekręciło kartek w trakcie ich zbierania – w stosiku mają być ułożone dokładnie tak jak leżały na podłodze!

Nasz stosik to przepis na to jak przejść od wejścia do wyjścia zbierając po drodze misia, a dobry przepis jest wtedy gdy do osiągnięcia celu nie potrzeba nic poza przepisem i jedyne co musi zrobić osoba stosująca przepis to dokładnie wykonywać opisane w nim kroki.

Sprawdźmy to – sami stańmy na pozycji startowej, zamknijmy oczy i poprośmy aby dziecko “odczytywało” nam kolejne strzałki przekładając karteczki z wierzchu na spód stosiku…

Uwaga! W czasie wykonywania karteczkowych instrukcji należy zachować kierunek “na wprost” – strzałka “w prawo” nie oznacza obrotu przez prawe ramię lecz krok w prawo bez zmiany kierunku.

Działa? Działa… Właśnie stworzyliśmy nie tylko naszą pierwszą procedurę, ale nawet nasz własny język programowania składający się z czterech instrukcji:

prawo
lewo
do przodu
do tyłu

Dalsza zabawa polega na stawianiu przed dzieckiem kolejnych problemów, które rozwiązuje ono za pomocą “programów”, które układa z karteczek, testuje na sobie lub rodzicu, poprawia i znów testuje, aż do osiągnięcia oczekiwanego rezultatu.

Przykładowy scenariusz mógłby wyglądać następująco:

na planszach nr #1 i #2 dziecko oswaja się z karteczkowym programowaniem – powinno swobodnie planować, testować i układać kartki na podłodze
gdy zrobi się za łatwo i za nudno przechodzimy do planszy #3 i dodajemy kolejny element – zakazane pole na które nie wolno wejść
na planszy #4 pojawia się pole jednokierunkowe, które automatycznie przenosi gracza we wskazanym przez siebie kierunku – to przygotowanie gruntu pod bardziej złożoną zabawę

Tempo rozwoju sytuacji należy dobrać indywidualne do dziecka, tak aby z jednej strony nie zanudzić go niepotrzebnym powtarzaniem w kółko, a z drugiej nie stawiać przed problemem, na który jeszcze nie jest gotowe. To ma być dobra zabawa! Od początku do końca 🙂

Uwaga! Należy zwrócić szczególną uwagę na to aby dziecko rozwiązywało problem samodzielnie i w iteracjach. Chodzi o to aby zawsze po ułożeniu programu został on przetestowany przez ucznia i jeżeli rezultaty są inne od oczekiwanych zmodyfikowany i znów przetestowany.

Gdy dziecko zaczyna poruszać się zupełnie naturalnie w zakresie problemów liniowych, można powoli zacząć wprowadzać takie elementy dynamiczne jak pętle, warunki czy proste struktury danych:

połóżmy na jednym z pól stosik kilku karteczek z różnie skierowanymi strzałkami.
gdy dziecko dotrze na to pole musi wziąć ze stosu jedną karteczkę i wykonać widniejącą na niej instrukcję

W powyższym przykładzie na polu otoczonym czerwoną ramką leży stos karteczek: góra, dół i do przodu, a więc po wejściu na to pole po raz pierwszy gracz zostanie skierowany do górnego miśka, po wejściu na nie po raz drugi do dolnego miśka, a za trzecim razem w kierunku wyjścia z planszy.

Uwaga! Dysponując większą ilością dzieci możemy zorganizować w opisany sposób grę, w której zaprogramowane przez dzieci “roboty” współdziałają i/lub konkurują o zasoby. Pozwala to modelować elementy współbieżności i łagodnie wprowadzać dzieci w świat architektury oprogramowania rozproszonego.

A czy nie lepiej uczyć od razu Logo, Scratch’a czy choćby Pascala?

Absolutnie nie! Pamiętajmy, że w trakcie opisanej powyżej zabawy dziecko staje się zarówno programistą jak i podmiotem sterowania. Spogląda na problem zarówno z boku jak i od środka – jakby “oczami” komputera.

To zupełnie niespotykane doświadczenie wyrabia u dzieci w naturalny sposób umiejętność myślenia proceduralnego i obiektowe spojrzenie na proces, a obydwie te rzeczy stanowią często kłopot dla uczniów i studentów na znacznie późniejszych etapach kształcenia.