Pod okiem mentorów - ING Coder Dojo #1
24.08.2020 | Roman Tyszkowski
Od 12 maja 2018 roku w ING wraz z Fundacją CoderDojo uruchomiliśmy nasze zajęcia CoderDojo, na których najmłodsze talenty mogą, pod czujnym okiem mentorów, rozwijać swoje umiejętności w zakresie robotyki i programowania. Przeczytajcie relację Romka Tyszkowskiego, naszego Dyrektora Banku - Head of Resilience.
Wstęp
Nowy rok szkolny i nowa grupa to nowe wyzwanie. Na zajęciach pojawili się licealiści i kilku uczniów ostatnich klas podstawówki. Do tej pory pracowaliśmy z dużo młodszymi uczestnikami.
Zaczęliśmy w październiku tradycyjnie od programowania robotów z wykorzystaniem platformy Micro:bit, no może nie tak zupełnie jak z młodszymi… "Starszaki" nie chciały kodować używając bloczków, czuli się na siłach sterować robotami przy pomocy języka JavaScript. Wyzwania i problemy okazały się całkiem podobne, jak z innymi grupami - główna trudność polegała na tym, jak podzielić większy problem na mniejszy.
Zadania, które stały przed uczestnikami to poruszanie robotem we wszystkich kierunkach, implementacja zdalnego sterowania z wykorzystaniem joysticka (tutaj ku zdziwieniu młodzieży przydała się znajomość twierdzenia Pitagorasa) i finalnie trochę "inteligencji", czyli jak zmusić robota posiadającego tylko dwa czujniki światła odbitego od podłoża do jazdy wzdłuż narysowanej czarnej linii z wieloma zakrętami. Tak dotrwaliśmy do ferii zimowych w miarę stałym składzie grupy, czyli 9 osób pojawiających się regularnie, co sobotę na Sokolskiej (Centrala w Katowicach), mimo tego, że dla wielu oznaczało to ponad godzinną podróż komunikacją miejską.
Kółko i krzyżyk
Po feriach wyglądało na to, że będziemy kontynuować naszą przygodę z robotami, ale podczas pierwszych zajęć konwersacja zeszła na tematy szkolne i okazało się, że młodzi ludzie mają spory problem z wykonaniem projektu zadanego przez nauczyciela informatyki w liceum.
Projekt polegał na napisaniu programu do gry w kółko i krzyżyk na planszy o zadanym dowolnym rozmiarze (z przedziału 3x3 do 10x10). Dodatkowe punkty przyznawane były za implementację algorytmu umożliwiającego grę z komputerem jako przeciwnikiem. Wspólnie ustaliliśmy, że spróbujemy rozwiązać to zadanie na zajęciach. Z tego powodu musieliśmy zmienić język programowania: z Javascript przesiedliśmy się na C++. Może nie tak od razu… bo szybko zorientowałem się, że w programie językiem wykładowym jest C++, ale w praktyce sprowadza się on do C i biblioteki we/wy z C++. Nikt z grupy nie miał najmniejszego pojęcia o programowaniu obiektowym. Postanowiłem to zmienić i wprowadzić pewne elementy obiektowości do gry w kółko i krzyżyk, którą właśnie pisali. Końcowy efekt możecie zobaczyć na zrzucie ekranu poniżej.
Spędziliśmy nad nim cztery kolejne tygodnie - termin zakończenia był z góry ustawiony przez termin oddania projektu zaliczeniowego. Główne wyzwanie dydaktyczne dla mnie to walka z pokusą, pisania i dyktowania kodu uczestnikom, prawie się udało - jedynie algorytm automatycznej rozgrywki napisałem sam "po godzinach" (czyli pewnego wtorkowego wieczoru). Jeden projekt skończony i oddany do oceny.
Minesweeper
Oczywiście natura nie znosi próżni i licealiści dostają nowe zadanie. Tym razem mają zaimplementować rozgrywkę w doskonale znanego z Windows - MineSweepera, oczywiście na planszy o dowolnej wielkości i ilości min. Gra ma być tekstowa ale podnosimy poprzeczkę i postanawiamy spróbować umożliwić używanie myszki podczas gry (w okienku tekstowym). Kończymy po kilku tygodniach a efekt można zobaczyć poniżej.
Pora na GUI
Projekt skończony, nowego zadania ze szkoły nie ma, apetyt wzrósł i nikt nie chce wrócić do Microbita. Ustalamy, że spróbujemy przeskoczyć z programów działających w trybie tekstowym na programowanie w środowisku graficznym. Jako, że w szkole używana jest platforma CodeBlocks oparta o wieloplatformową bibliotekę wxWidgets to wybór narzędzi jest prosty. Prosto powiedziane, ale ja nie pisałem programów w środowisku "okienkowym" od jakiś 20 lat, a samej biblioteki nie widziałem nigdy na oczy. Ale do odważnych świat należy, mam tydzień aby przed następną sobotą nauczyć się narzędzia w takim stopniu, by móc prowadzić zajęcia. Dałem radę, ale okazało się, że aby móc zacząć programować muszę przygotować instrukcję instalacji nowej wersji IDE i bibliotek.
Żeby nie było za łatwo, to pierwsze zajęcia z programowania graficznego wypadły 21 marca – jak wszyscy pamiętają, właśnie zamknęliśmy nasze biura i musieliśmy przełączyć się na zajęcia wirtualne. Miałem dużo obaw, czy dam radę, czy młodzież będzie chętna, czy technologia nas nie zawiedzie. Okazało się, że obawy nie potwierdziły się w najmniejszym zakresie. Zdalne prowadzenie okazało się całkiem efektywne, młodzi ludzie tak chętni, że od drugiego tygodnia zaczęliśmy się spotykać nie raz, ale dwa razy w tygodniu - tradycyjnie w sobotę o godzinie 10:00 i dodatkowo w każdy wtorek o godzinie 18:00. Technologia w postaci Google Hangouts też działała bez zarzutu.
Wracając do zajęć, po zainstalowaniu środowiska poświęciliśmy kilka tygodni na poznawanie działania środowiska, sposobu użycia kontrolek i ich dynamicznego rozmieszczenia na ekranie, czego kulminacją był program miniPaint do rysowania myszką na ekranie. Przyszedł czas na wykorzystanie zdobytej wiedzy w bardziej ambitnym zadaniu. Zaproponowałem napisanie programu implementującego grę/symulację Conway's Life, symulującą zachowanie się grupy komórek o ściśle określonym algorytmie przeżycia.
Efekt trzech tygodni naszych zajęć poniżej.
Zadania programistyczne
Po kolejnym skończonym projekcie, młodzież szukała nowych wyzwań. Zaproponowałem skorzystanie rozwiązywanie zadań programistycznych na platformie CodinGames.com. Platforma umożliwia rozwiązywanie "zagadek" informatycznych osadzonych zwykle w szerszym kontekście. Jej dużą zaletą są z jednej strony ciekawe i zróżnicowane zadania, a z drugiej możliwość ich rozwiązywania w wielu językach programowania. Poniżej zrzut z rozwiązania jednego z naszych zadań "Power of Thor”.
Na rozwiązywaniu zadań na platformie upłynęły nam zajęcia w każdy wtorek i sobotę maja i czerwca. Rozwiązywaliśmy zadania takie jak:
- wylądowanie na marsie z jak największym zapasem paliwa,
- rozwiązanie japońskiego sudoku,
- określenie kolejności sukcesji w brytyjskiej rodzinie królewskiej.
Do końca wytrwało siedem osób, które regularnie meldowały się praktycznie na każdych zajęciach.
Trochę liczb!
- Ilość zajęć stacjonarnych: 16
- Ilość zajęć wirtualnych: 25
- Ilość uczestników: 14 w tym stałych przez cały rok 7
Jeżeli chcecie zobaczyć nasz kod dla kółka i krzyżyk - to zapraszam na:
https://github.com/rotysz/KolkoiKrzyzyk i dla MineSweeper:
https://github.com/rotysz/MineSweep1
Podsumowując dla mnie to bardzo udany rok, również dla ING Coder Dojo i ogromna satysfakcja z pracy z młodszym pokoleniem i możliwości zaszczepienia im pasji technologicznej :)