Jak nauczyć dziecko programować? Co ma nauka programowania do nauki języków?
Stało się, wprowadzamy kolejny język. Tak, języki programowania to również języki - mają swoją gramatykę, semantykę i syntaktykę, jak "normalne języki". A jednak raptem 3% Amerykanów jest "piśmienna" jeśli chodzi o kod maszynowy. Programowanie rozwija umiejętność rozumowania, zdolności matematyczne oraz pozwala dziecku nauczyć się determinacji. To ostatnie wynika ze specyfiki pisania kodu - jest to proces typu "trial and error", w którym do zamierzonego celu dochodzimy po wielu testach i korektach tworzonego programu.
Programowanie jest też świetnym pretekstem do nauki języka obcego i jego doskonalenia - większość wiedzy specjalistycznej dostępna jest po angielsku.
O pułapkach uczenia dzieci programowania
Wspomniałam o kodzie i z tym hasłem mam największy problem. Świadomość wartości nauki programowania wśród rodziców jest duża, niestety niejednokrotnie dają się nabić w butelkę. Jako programowanie sprzedaje się kodowanie - czyli odpowiednik szyfrów i tłumaczenia jednych kodów na drugie. Jest to niewątpliwie rozwojowo wartościowa czynność, ale z programowaniem nie ma za wiele wspólnego.
A poniżej, dla kontrastu, zadanie bardziej programistyczne. Opracowujemy sekwencje ruchów, które doprowadzą bohatera do celu.
Ostatnimi czasy przybyło też mnóstwo zabawek, które ponoć uczą programowania. Łatwo wydać na nie naprawdę duże pieniądze, otrzymując w zamian obietnicę przyswojenia przez dziecko wiedzy potrzebnej do budowania własnych algorytmów. Jak się im przyglądam, są to zadania, które działają na zasadzie elektrycznej kolejki i zwrotnic. Mamy poruszający się obiekt, który należy skierować do celu - niestety w dużej mierze zadanie można zrealizować bez planowania czy budowania algorytmów. Pokażę Wam, jak deklarowane umiejętności można zdobyć zupełnie za darmo.
Czym więc jest programowanie?
Programowanie jest to tworzenie takiej sekwencji instrukcji, która umożliwi maszynie uzyskanie postawionego celu.
Patrząc na powyższą definicję mam nadzieję, że już widzicie, że kodowanie i programowanie to dwie różne rzeczy (choć potocznie używamy te dwa słowa zamiennie).
Jakie programistyczne pojęcia może zrozumieć pięciolatek?
Jest kilka fundamentów programowania, które dziecko w wieku przedszkolnym lub wczesnoszkolnym jest w stanie zrozumieć.
Weźmy kolejno na warsztat wymienione przeze mnie pojęcia:
- Sekwencje - aby osiągnąć zamierzony cel musimy wykonać szereg kroków i tylko odpowiednia sekwencja kroków pozwoli nam zrealizować zadanie
- Pętle - powtarzanie sekwencji instrukcji, np. powtórzenie (iteracja) zostanie zrealizowane X razy lub póki dany warunek jest spełniony. Przekładając to na język domowy - możemy powiedzieć dziecku "weź 1 gryz kanapki, weź 1 gryz kanapki, weź 1 gryz kanapki, weź łyk wody" lub "3 razy weź gryz kanapki, a potem 1 łyk wody". Przykład pętli z warunkiem - "dopóki są książki na półce, zdejmuj po jednej i kładź na podłodze".
- Warunki/instrukcje warunkowe - pewne operacje wykonywane są jeśli dany warunek jest spełniony Instrukcję warunkową wykonujemy, gdy sprawdzenie warunku zwróci nam wartość prawda lub fałsz (w zależności od potrzeb). Przykładem może być instrukcja "switch": "jeśli masz na sobie żółtą koszulkę, to podrap się w nos, jeśli masz na sobie zieloną koszulkę, to podrap się w kolano, jeśli masz na sobie koszulkę w dowolnym innym kolorze, to zjedz kawałek czekolady".
- Wejście/wyjście - algorytmy nie działają w próżni, potrzebują danych wejściowych (Input), na których wykonują operacje, a następnie podają na wyjście (Output) wynik operacji
- Arytmetyka - mając dane, wykonujemy na nich operacje - obliczenia: dodaj, odejmij, itp.
- Debugowanie - rzadkością jest, żeby program, który piszemy działał "z marszu". Chlebem powszednim jest więc testowanie działania programu i korygowanie go. W code.org, z którego korzystają moje dzieci, debugowanie jest umożliwione dzięki specjalnemu "guzikowi STEP", gdzie można podejrzeć co się dzieje na planszy roboczej po każdej zrealizowanej instrukcji.
Co musi umieć kilkulatek zanim siądziemy z nim do nauki programowania?
Prawda jest taka, że wystarczy, żeby dziecko potrafiło wykonać proste polecenia, niewykraczające poza to, co można znaleźć w przedszkolnych kartach ćwiczeń. Bardzo pomocna jest dobrze utrwalona umiejętność odróżniania kierunków - prawo/lewo/dół/góra. Jest to konieczne, ponieważ większość stawianych dzieciom zadań polega na przeprowadzeniu bohatera z punktu X do punktu Y.
Umiejętność | Konieczna | Zalecana | Niepotrzebna |
---|---|---|---|
Orientacja w przestrzeni (kierunki lewo/prawo/góra/dół) | X | ||
Czytanie | X | ||
Obsługa myszki | X | ||
Obsługa klawiatury | X | ||
Liczenie w zakresie 10 | X |
Jak widzicie, wymogi na wejściu nie są wygórowane. Twórcy współczesnych aplikacji do nauki programowania zadbali by były to rozwiązania typu 0-entry-level. Przedszkolak, który pierwszy raz siada do nauki programowania zostanie najpierw obsługi myszki: przemieszczania kursora i klikania, a dopiero w drugiej kolejności przejdzie do zadań logicznych.
Jak nauczyć dziecko programować?
Nastały tak piękne czasy, że wybór platform do nauki programowania jest ogromny. Co piękniejsze, są one darmowe i porządnie zrealizowane.
Nasze dzieci (3.5 roku, 5 lat) realizują kursy na stronie code.org. Pokażę Wam na paru przykładach, co robią. Nasz 3.5-latek dopiero zaczyna łapać jak realizować polecenia, a 5-latka śmiga już pięknie, więc gdzieś w tym przedziale wiekowym jest granica, kiedy dziecko będzie w stanie zacząć korzystać z code.org.
Na code.org znajdziecie dwa kursy dla nieczytających przedszkolaków (Pre-K) - kurs A oraz kurs B.
W pierwszej kolejności dzieci uczą się obsługi sprzętu - klikania myszą, przeciągania elementów na ekranie, zatwierdzania wyborów.
Pomiędzy zadania wplecione są filmy uczące dzieci netykiety (jak być kulturalnym w sieci) oraz bezpieczeństwa (nie rozmawiaj z obcymi, korzystaj z zasobów przeznaczonych dla dzieci).
Kolejny etap to budowa algorytmów.
Mam nadzieję, że skusiłam Was do spróbowania nauki programowania. Jeśli tak, to zapraszam:
Code.org - portal do nauki programowania, kursy dla początkujących
Jeśli nie czujecie się gotowi, by posadzić dziecko przed ekranem, to sporo zabaw nawiązujących do programowania można zrealizować analogowo. NASK wraz z Ministerstwem Cyfryzacji przygotował ciekawy darmowy poradnik dla rodziców: "Zabawy w programowanie offline".
Co dalej?
Na chwilę obecną zakładam, że po code.org kolejnym celem będzie ScratchJr. Scratch jest jednym z najczęściej wybieranych języków na początek nauki programowania. Kolejnym logicznym krokiem będzie przesiadka na język Python.
Niezależnie od tego, możliwe, że rozejrzymy się za rzeczami związanymi z hardware'm - ciekawe wydają mi się roboty Ozoboty, a w dalszej przyszłości mikrokomputery Arduino lub RaspberryPi. Wszystko zależy od tego, czy dzieci będą zainteresowane i czy wymyślimy jakiś wciągający projekt do rodzinnej zabawy.
Aha, pewnie się zastanawiacie jaki jest mój pogląd na naukę programowania? Jako osoba spędzająca naprawdę dużo czasu przed komputerem dostrzegam wiele zagrożeń związanych z korzystaniem z tego sprzętu. Dlatego, póki to ja mam największy wpływ na rozwój dzieci, chcę im pokazać, że maszyna służy przede wszystkim do realizacji zadań, a dopiero potem do rekreacji.
Tymczasem dajcie mi znać, czy odważyliście się spróbować programowania?
Podoba Ci się to co robię? Chcesz być na bieżąco? Jeśli zainteresował Cię ten artykuł, to zapraszam do polubienia mojej strony na Facebooku