W połowie listopada zacząłem prowadzić cotygodniowe zajęcia dodatkowe z podstaw programowania w klasie mojego starszego syna. Czas na małe podsumowanie i historię tego, jak to się zaczęło.

Niektórzy z czytelników z pewnością wiedzą, że sam od początku roku uczę się programować w Swifcie, nowym języku stworzonym przez Apple, w którym pisane są już programy dla iOS i macOS. O mojej przygodzie z nauką programowanie pisałem szerzej w MyApple Magazynie (przedruk na moim blogu MyApple dostępny jest tutaj). I choć jestem już w stanie stworzyć proste aplikacje, takie jak lista rzeczy do zrobienia, prosty przewodnik po mieście i jakąś naprawdę prymitywną grę 2D, to nie nazwałbym siebie deweloperem. Wciąż jestem żółtodziobem, początkującym, który zgłębia tajniki programowania. Rozumiem więc, że może pojawić się pytanie, jak ktoś, kto sam uczy się programowania, może uczyć innych?

Tak, może. Podczas mojej nauki spotkałem się kilkukrotnie z radami twórców podręczników czy samouczków, by dzielić się zdobytą wiedzą. Twierdzili oni, że nauczanie innych tego, czego samemu się nauczyło chwilę wcześniej, jest jedną z lepszych metod utrwalania zdobytej wiedzy. W przypadku klasy mojego syna złożonej z samych siedmiolatków, mowa jest o zupełnych podstawach programowania: pojęciach komend, tworzeniu własnych funkcji, pętlach, warunkach, zmiennych itp.

Do szczegółów wrócę w dalszej części tekstu. Zacznę jednak od początku, czyli jak wpadłem na pomysł, by uczyć dzieci podstaw programowania.

Ponad dwa lata temu, podczas zabawy klockami Lego z moim starszym synem zupełnie przypadkiem zacząłem uczyć go programowania. Ułożyłem w prostej linii kwadratowe klocki w różnych kolorach, a jeden osobny - czerwony - ustawiłem przed nimi. Wytłumaczyłem synowi, że ten czerwony klocek jest robotem, który musi zebrać - przyczepiając do siebie - wszystkie pozostałe czerwone klocki, znajdujące się w ułożonej przeze mnie linii. Szybko na kartce napisałem mu prostą instrukcję zawierającą kilka komend oraz prostą pętlę i instrukcje warunkowe:

  1. Idź do przodu
  2. Sprawdź jaki klocek znajduje się pod tobą
  3. Jeśli jest to klocek czerwony to podczep go pod siebie, w innym przypadku nic nie rób
  4. Sprawdź czy przed sobą masz jeszcze jakiś klocek, jeśli tak, to zacznij czytać instrukcję od punktu 1.
  5. Ukończyłeś grę.

Zdaję sobie sprawę, że nie jest to imponujący kod, jednak mimo wszystko byłem zaskoczony, gdy mój 4,5 letni syn, który kilka miesięcy wcześniej nauczył się pisać i czytać, wykonał zadanie bez żadnych problemów. Później stworzyłem jeszcze kilka takich programów, jednak z różnych powodów, przede wszystkim natłoku spraw, które miałem na głowie, te zabawy w programowanie klockami zostały przeze mnie zarzucone, czego trochę żałuję.

Następnie przyszły lekcje na komputerze, a dokładnie prosty kurs programowania dla dzieci na stronie Code.org, w którym programuje się robota BB-8 z Gwiezdnych Wojen. Wreszcie, wraz z betą iOS 10 pojawiła się aplikacja Swift Playgrounds, którą mój starszy syn zaczął się bawić.

Swift Playgrounds

Kika miesięcy wcześniej, jeszcze w ubiegłym roku szkolnym, miałem okazję prowadzić w jego klasie całodniową lekcję, na której pokazywałem dzieciom hologramy, prostą rzeczywistość wirtualną w okularach Google Cardboard oraz sterowane i programowalne zabawki Sphero. Przyjęcie ze strony dzieci było fenomenalne. Właściwie nie chciały mnie wypuścić z klasy. Pamiętając o tym, pomyślałem, że skoro uczę mojego syna podstaw programowania w Swift Playgrounds, to równie dobrze mógłbym to robić pro bono w jego klasie.

Dzieci mają co prawda lekcje tzw. informatyki, ale jest to tak naprawdę prosta i dość odtwórcza obsługa komputera, co oczywiście też jest potrzebne (choćby mojemu synowi, który tylko w klasie ma kontakt z Windowsem). Uważam jednak, że większość z nich i tak całkiem nieźle radzi sobie z komputerami, smartfonami i tabletami, a to czego powinny uczyć się zaraz po zdobyciu umiejętności czytania i pisania, to właśnie podstawy programowania. Programista to wciąż jeden z najbardziej poszukiwanych fachowców na rynku (na europejskim brakuje kilkudziesięciu tysięcy deweloperów).

Pomysł rzuciłem na facebookowej grupie założonej przez rodziców dzieci z klasy mojego syna, podsunąłem go też wychowawczyni klasy, a wróciłem do niego na pierwszym wrześniowym zebraniu, potrzeba było jednak dwóch kolejnych miesięcy, by uzyskać zgodę dyrekcji szkoły i napisać prosty program dla tychże lekcji, choć nie ukrywam, że poza bardzo ogólnymi ramami, dużo w tej mojej nauce jest improwizacji i rzeczy wymyślanych ad hoc, na kilka godzin przed zajęciami lub w ich trakcie.

Zdecydowałem się nie korzystać z klasowych komputerów z kilku powodów. Lekcje programowania miały być zabawą, a nie od razu wklepywaniem kodu na klawiaturze komputera - na to dzieci będą miały jeszcze czas. Dodam do tego, że komputery w klasie mojego syna są dość stare i obecnie nie są nawet podłączone do sieci.

Wybór narzędzia i aplikacji do nauki był dla mnie oczywisty, gdyż już wcześniej uczyłem mojego syna podstaw programowania na iPadzie w aplikacji Swift Playgrounds. Miałem ją przetestowaną. Postać stworka zwanego Byte (starsi czytelnicy pewnie bedą kojarzyć ją z Bajtkiem), jest przyjazna, całość ma formę prostej gry, a same zadania nie są początkowo zbyt skomplikowane.

Miałem oczywiście świadomość, że większość dzieci nie ma swoich iPadów, dlatego postanowiłem skorzystać z rzutnika. Na lekcje zabieram router mobilny, Apple TV trzeciej generacji i rzutnik, który pożyczył mi znajomy (jeszcze raz dziękuję Michałowi Hejdukowi). Obraz z iPada przesyłany jest do Apple TV za pośrednictwem AirPlay, a następnie do rzutnika przez który wyświetlany jest na ekranie.

Na każdej lekcji schemat jest mniej więcej podobny. Omawiamy każdą kolejną planszę, oglądając ją z różnych stron, a następnie dzieci zgłaszają się i proponują kolejne komendy do wprowadzenia na iPadzie - to ostatnie robi mój syn, który prowadzi ze mną zajęcia. Na końcu uruchamiamy kod i sprawdzamy czy stworek faktycznie robi to co powinien i ewentualnie korygujemy błędy. Zwykle na jednej lekcji jesteśmy w stanie przerobić od dwóch do czterech plansz, w zależności od stopnia komplikacji. Oczywiście lepiej byłoby, gdyby każde dziecko mogło pracować na swoim iPadzie. Staram się jednak nie przejmować ograniczeniami, które na obecnym etapie są nie do przeskoczenia.

Chylę tutaj czoła przed twórcami aplikacji Swift Playgrounds. Postać stworka, którym za pomocą prostych programów sterują dzieci, jest niezwykle przyjazna. Na pierwszej lekcji dostałem już kilka rysunków tej postaci. Na drugiej cała klasa zdecydowała jakie imię mu nadać - stanęło na Panie Jednooczku.

Nauka programowania nie ogranicza się tylko do klasy. Dzieci dostają też pracę domową. Wydrukowałem na kartkach proste mapki, na siatce 6 x 6, pod którymi wypisałem dostępne komendy. Dzieci mogą też tworzyć własne. Przerobiliśmy już temat tworzenia funkcji i ich wykorzystywania we własnym kodzie. Jak dotąd praca domowa ograniczała się do napisania kodu, który przeprowadza stworka po wyrysowanej na mapce trasie. Mam też pewne wrażenie, że część dzieci radzi sobie lepiej z tymi zadaniami niż ich rodzice.

Zdałem też sobie sprawę z tego, że nie zawsze sposób, w jaki zadanie jest wykonane do końca odpowiada temu, co sobie wyobrażałem. Często jest to zwyczajnie moja wina, bo na przykład nie wytłumaczyłem na tyle dobrze tego, jak dane zadanie ma być wykonane, bo zakładałem, że skoro ja wiem, to i dzieci będą to wiedzieć. Praca z dziećmi jest więc dla mnie nauką komunikacji.

Tutaj chciałbym podzielić się z Wami ważnym spostrzeżeniem.

Dzieci można uczyć podstaw programowania tak, jak robiłem to na początku, bez komputera, tabletu czy smartfona. Odpowiednie podanie tematu, ubranie go w ciekawą historię, a wystarczy kilkanaście klocków, a czasem tylko kartka, kredki lub długopis. Liczy się przede wszystkim pomysł i inwencja prowadzącego.

Zajęcia prowadzone są raz w tygodniu na dodatkowej godzinie po ostatniej lekcji. Pomimo zmęczenia, dzieci w klasie mojego syna reagują żywiołowo. Masowo zgłaszają się z propozycjami kolejnych komend do wpisania w tworzonych programach. Oczywiście ich zapał i energia nie jest niewyczerpana. Zauważyłem, że wystarcza im jej na około 40 minut. Zwykle na pięć minut przed dzwonkiem kilkoro dzieci zaczyna wykazywać zmęczenie i znudzenie. NIe ma co przeginać z czasem, a myślę, że i tak 40 minut w skupieniu w przypadku 7-latków to naprawdę niezły wynik.

W przyszłości nie zamierzam ograniczać się tylko do Swift Playgrounds. Mam zamiar wrócić do tematu programowania robotów Sphero. Ich producent udostępnia specjalną aplikację edukacyjną pozwalającą na naukę ich programowania. Zamierzam też skorzystać z innych pomocy naukowych, także i tych, które opracowane zostały i produkowane są w naszym kraju.

Jeśli myśleliście o tym, by uczyć wasze dzieci programowania, ale nie wiedzieliście jak się do tego zabrać, to oczywiście służę własnymi doświadczeniami. Warto spróbować, zarówno Wasze pociechy, jak i Wy sami będziecie mieli z tego dużo radości.

Patronite

MyApple Daily w iTunes Store.