Jak uczę dzieci Pythona

Jak uczę dzieci Pythona

Moja główna praca związana jest z danymi i programowaniem w R, ale w tym artykule chciałbym opisać swoje hobby, które przynosi mi nawet jakiś dochód. Zawsze lubiłem opowiadać i wyjaśniać różne rzeczy przyjaciołom, kolegom z klasy i studiami. Zresztą, zawsze łatwo mi było znaleźć wspólny język z dziećmi, nie wiem dlaczego. Uważam, że wychowanie i nauczanie dzieci to jedno z najważniejszych zadań, a moja żona jest nauczycielką. W każdym razie, mniej więcej rok temu zamieściłem ogłoszenie w lokalnej grupie na Facebooku, zrekrutowałem grupę i zacząłem uczyć Scratcha i Pythona raz w tygodniu. Teraz mam pięć grup, swoją klasę w domu oraz zajęcia indywidualne. Jak do tego doszedłem i jak dokładnie uczę dzieci, opowiem w tym artykule.

Mieszkam w Kanadzie, w Calgary, prowincja Alberta, więc niektóre aspekty będą związane z lokalnymi specyfikami.

Pomieszczenie

Dostępność miejsca na zajęcia była od samego początku głównym problemem. Starałem się wynajmować biura i sale na godziny, ale bez większych sukcesów. Nasz uniwersytet i SAIT — lokalny odpowiednik MIT — wynajmują sale z komputerami i bez. W końcu okazało się, że ceny są tam dość wysokie, a na dodatek uniwersytet nie wpuszcza nieletnich, a SAIT wynajmuje wyłącznie swoim studentom. Więc ten wariant odpadł. Jest wiele centrów biurowych, które wynajmują sale konferencyjne i biura na godziny, a nawet całe firmy, które oferują mnóstwo opcji — od pełnoprawnej klasy po małe pomieszczenia dla czterech osób. Miałem nadzieję, ponieważ Alberta to prowincja naftowa, mamy od 2014 roku przewlekły kryzys, więc wiele powierzchni biurowych stoi pustych. Na próżno jednak miałem nadzieje, ceny okazały się tak wygórowane, że na początku nawet w to nie uwierzyłem. Właścicielom łatwiej jest siedzieć w pustych biurach i opłacać koszty, niż obniżać ceny.

W tej chwili przypomniałem sobie, że regularnie płacę podatki i czy nie ma czegoś od naszego drogiego państwa, a dokładniej – od miasta Calgary. Okazało się, że jak najbardziej jest. Miasto ma areny do gry w hokeja i innych sportów łyżwiarskich, a w tych arenach znajdują się pomieszczenia, gdzie surowi lodowi wojownicy omawiają strategie przyszłych starć. Krótko mówiąc, przy każdej arenie znajduje się kilka pomieszczeń ze stołami, krzesłami, białą tablicą, a nawet zlewem z czajnikiem. Cena jest całkiem przyzwoita – 25 kanadyjskich dolarów za godzinę. Początkowo zdecydowałem się prowadzić zajęcia przez półtorej godziny, więc ustaliłem cenę za zajęcia na 35 dolarów od osoby w grupie pięcioosobowej, aby pokryć wynajem, a także coś dla siebie odłożyć. Generalnie podobało mi się prowadzenie zajęć na arenach, ponieważ rozwiązywało to jeden z problemów – większość ruskojęzycznych osób mieszka na południu, a ja mieszkam na północy miasta, więc wybrałem arenę mniej więcej w połowie drogi. Jednak były też niedogodności. Kanadyjska biurokracja jest dobra i przyjazna, ale, żeby delikatnie to ująć, bywa dość powolna. Nie ma problemu, kiedy przyzwyczajasz się do rytmu i planujesz z wyprzedzeniem, ale czasami pojawiają się nieprzyjemne sytuacje. Na przykład na stronie miasta można wygodnie wybrać czas i miejsce, zarezerwować pokój, ale nie można zapłacić, w żaden sposób. Oni sami dzwonią i przyjmują płatności kartą. Można też pojechać do biura i zapłacić gotówką. Był zabawny, ale nieprzyjemny moment, kiedy czekałem na ich telefon, żeby zapłacić za drugie zajęcia, nie doczekałem się, a w ostatnim dniu spóźniłem się do biura o piętnaście minut. Musiałem z bezczelną miną podejść do ochrony i skłamać, że pokój jest zarezerwowany. My, Kanadyjczycy, wierzymy na słowo, spokojnie mnie wpuścili i nie sprawdzali nic, ale nie zrobiłbym tego, gdyby ludzie już nie jechali na zajęcia.

Tak więc pracowałem zimą i wiosną, a potem wydarzyły się zmiany, które stały się kroplą przepełniającą czarę. Po pierwsze, biuro zostało zamknięte dla odwiedzających i zaproponowano przyjmowanie płatności przez telefon za rogiem. Spędziłem co najmniej pół godziny w korytarzu, zanim udało mi się dodzwonić. Po drugie, jeśli wcześniej miła ciocia brała ode mnie płatność za półtorej godziny, to teraz odebrała telefon jakaś dziewczyna i ogłosiła, że płatność jest możliwa tylko za godzinę. W tamtym czasie miałem grupę, która liczyła od trzech do dwóch osób, a dodatkowe 12,50 USD było jak najbardziej potrzebne. Oczywiście jestem z przekonania, ale jeśli żona wyrzuci mnie na ulicę, to nikt nie będzie mnie uczył. Wtedy jeszcze byłem bez pracy.

Postanowiłem pójść do biblioteki. Biblioteki oferują piękne sale całkowicie za darmo, ale jest jedno „ale” — nie można prowadzić działalności komercyjnej. Nawet organizacje charytatywne nie mają prawa zbierać tam pieniędzy. Mówiono mi, że nie jest to szczególnie kontrolowane, ważne jest, aby nie pobierać pieniędzy bezpośrednio przy wejściu, ale bardzo nie lubię łamać zasad. Kolejnym problemem jest to, że sale są często zajęte i trudno jest prowadzić zajęcia zgodnie z harmonogramem w jednym miejscu. Uczyłem w bibliotekach latem i na początku zimy, musiałem wybierać te, w których były wolne miejsca, w rezultacie zmieniłem pięć lub sześć bibliotek. Potem zacząłem rezerwować miejsca z miesięcznym wyprzedzeniem i to udało się tylko w jednej małej bibliotece, w innych regularnie nie było miejsc na potrzebny czas. I wtedy postanowiłem urządzić klasę komputerową w domu. Powiesiłem tablicę, kupiłem z ogłoszenia drugi stół i kilka starych monitorów. Firma kupiła mi nowy mocny laptop do pracy, ponieważ na moim komputerze analiza zajmowała niemal 24 godziny. W sumie miałem nowy stary komputer, stary komputer, laptop, którego ekran zniszczył mój syn, i starożytny netbook, którego ekran w ten sposób zepsułem sam. Wszystkie je podłączyłem do monitorów i wszędzie zainstalowałem Linux Mint, poza netbookiem, na który wgrałem bardzo lekki dystrybucyjny system, wydaje mi się, że to był Puppy. Mam też stary nowy laptop, zakupiony za 200 dolarów, podłączyłem go do telewizora. Co ważne, nasz właściciel niedawno wymienił okna, więc w pokoju zamiast okropnych zniszczonych ram mamy nowe białe okna. Salon, kuchnia i druga sypialnia są wykorzystywane przez żonę na przedszkole, więc całe piętro stało się typowo pedagogiczne. Tak więc, teraz z pomieszczeniem wszystko jest w porządku, przejdźmy do nauczania.

Scratch

Rozpoczynam nauczanie podstaw programowania od języka Scratch. To język, który wykorzystuje gotowe bloczki, wymyślony jakiś czas temu w MIT. Większość dzieciaków widziała już Scratch w szkole, dlatego szybko go opanowują. Są gotowe programy i plany zajęć, ale zupełnie mi się nie podobają. Niektóre są dziwne — stwórz swoją historię, na przykład. Cały program składa się z niezliczonych bloków. say '' for 2 secondsWidać, że zostały wymyślone przez bardzo kreatywne osoby, ale z takim podejściem można nauczyć się pisać klasyczny indyjskie spaghetti code. Ja od samego początku opowiadam o zasadach typu D.R.Y. Inne zbiory zadań są całkiem dobre, ale dzieci szybko wnikają w temat i zaczynają je rozwiązywać jak z karabinu. W efekcie, w jednej lekcji robią to, co powinny były wykonać w pięciu. A na znalezienie i selekcję zadań przeznaczam wiele osobistego czasu. W ogóle, Scratch bardziej przypomina nie język, a IDE, gdzie trzeba tylko zapamiętać, gdzie kliknąć i co gdzie znaleźć. Gdy tylko uczniowie mniej więcej się oswajają, staram się przenieść ich na Pythona. Nawet siedmioletnia dziewczynka pisze proste programy w Pythonie. W czym widzę zaletę Scratcha — są w nim podstawowe pojęcia, które przyswajane są w formie gry. Dlaczegoś wszystkim bez wyjątku bardzo trudno zrozumieć ideę zmiennej. Na początku szybko przebiegałem przez ten temat i szedłem dalej, aż natrafiałem na to, że w ogóle nie wiedzą, co z tym zrobić. Teraz poświęcam zmiennym dużo czasu i regularnie do nich wracam. Muszę zajmować się nudnym wkuwaniem. Na ekranie zmieniam różne zmienne i zmuszam do mówienia ich wartość. W Scratchu są również struktury kontrolne i sprawdzanie wartości, typu while, for lub if w Pythonie. Są stosunkowo łatwe, tylko z zagnieżdżonymi pętla bywa problem. Staram się podawać kilka zadań z zagnieżdżoną pętlą, aby ich działanie było widoczne. Po tym przechodzę do funkcji. Nawet dla dorosłych pojęcie funkcji bywa nieoczywiste, a dla dzieci tym bardziej. Długo tłumaczę, czym jest funkcja w ogóle, opowiadam o fabryce, która przyjmuje na wejściu przedmioty, a wydaje towar, o kucharzu, który ze surowych produktów robi jedzenie. Potem robimy program „zrób kanapkę” z produktami, a później zamieniamy go w funkcję, której produkty są przekazywane jako parametry. Na nauce funkcji kończę z Scratch.

Python

Z Pythonem jest łatwiej. Jest dobra książka „Python for Kids”, według niej uczę. Wszystko jest standardowe — ciągi, kolejność działań, print(), input() itd. Napisana prostym językiem, z humorystycznym akcentem, dzieciom się podoba. Ma jednak pewną wadę, charakterystyczną dla wielu książek o programowaniu. Jak w znanym żarcie — jak narysować sowę. Owal — koło — sowa. Z prostych pojęć zbyt nagły przeskok do dość skomplikowanych koncepcji. Poświęcam kilka zajęć na wyjaśnienie, że obiekt łączy się z metodą kropką. Z drugiej strony, nie spieszę się, powtarzam to samo na różne sposoby, aż powstaje jakikolwiek obraz. Zaczynam od zmiennych i wciąż je przerabiam, już na Pythonie. Zmienne to jakieś przekleństwo.

Bystry student, który kilka miesięcy temu z łatwością klikał w zmienne na scratchu, teraz patrzy jak baran na nowe wrota i nie potrafi zsumować x z y, które wyraźnie są napisane na tablicy. Powtarzamy! Co ma zmienna? Nazwę i wartość! Co oznacza znak równości? Przypisanie! A jak sprawdzimy równość? Podwójny znak równości! I tak powtarzamy raz za razem, aż do pełnego oświecenia. Potem przechodzimy do funkcji, gdzie najwięcej czasu zajmuje wyjaśnienie argumentów. Argumenty nazwane, po pozycjach, domyślne i tak dalej. Do klas jeszcze w żadnej grupie nie dotarliśmy. Oprócz Pythona z książki uczymy się popularnych algorytmów, o tym więcej później.

Właściwie, nauczanie

Moja lekcja jest zorganizowana w ten sposób — przez pół godziny daje teorię, sprawdzam wiedzę, utrwalam to, co przerobiliśmy. Godzina — laboratoria. Często się zapalam i mówię przez godzinę, wtedy na praktykę zostaje pół godziny. Kiedy uczyłem się Pythona, przeszedłem kurs Algorytmy i Struktury Danych Chirjanow z MFTI. Bardzo podobała mi się jego prezentacja i struktura wykładów. Jego pomysł jest taki — frameworki, składnia, biblioteki — stają się przestarzałe. Architektura, praca zespołowa, systemy kontroli wersji — na to jeszcze za wcześnie. Ostatecznie zostają algorytmy i struktury danych, które są znane od dawna i będą zawsze w podobnej formie. Sam pamiętam z instytutowego Pascala tylko integer. Ponieważ moi uczniowie to w większości młodzi ludzie, w wieku od siedmiu do piętnastu lat, uważam, że dla ich przyszłości ważniejsze jest, aby zbudować solidne podstawy, niż szybko napisać platformówkę w Pythonie. Choć oni chcą bardziej platformówki, i rozumiem ich. Daję im proste algorytmy — sortowanie bąbelkowe, wyszukiwanie binarne w posortowanej liście, odwrotna notacja polska przy użyciu stosu, ale każdy z nich dokładnie omawiamy. Okazało się, że współczesne dzieci nie wiedzą w ogóle, jak działa komputer, także o tym opowiadam. Staram się w każdym wykładzie połączyć kilka pojęć razem. Na przykład komputer — pamięć/procesor — pamięć z komórek (daje im, żeby trzymali moduł pamięci, zgadnijcie, ile tu jest komórek) — każda komórka jak żarówka — ma dwa stany — true/false — and/or — binarny/ dziesiętny — 8 bitów = 1 bajt — bajt = 256 wariantów — typ danych logicznych na jednym bicie — liczby całkowite na jednym bajcie — float na dwóch bajtach — string na jednym bajcie — największa liczba na 64 bitach — lista i krotka z poprzednich typów. Zastrzegam, że w prawdziwym komputerze wszystko jest nieco inaczej i inne ilości pamięci dla tych typów danych, ale najważniejsze, że sami w procesie tworzymy bardziej złożone typy danych z prostszych. Typy danych to, być może, najtrudniejsza rzecz, którą trzeba zapamiętać. Dlatego każde zajęcia zaczynam od szybkiej rozgrzewki — jeden uczeń nazywa typ danych, następny podaje dwa przykłady, i tak w kółko. Ostatecznie osiągnąłem to, że nawet najmłodsze dzieci krzyczą entuzjastycznie — float! boolean! seven, five! pizza, car! Podczas wykładu ciągle wołam to jednego, to drugiego, inaczej szybko zaczynają grzebać w nosie i patrzeć w sufit. A poziom wiedzy każdego trzeba między innymi sprawdzać.

Moi uczniowie nie przestają mnie zaskakiwać zarówno swoją głupotą, jak i niespodziewaną bystrością. Bystrość, na szczęście, zdarza się częściej.

Chciałem napisać więcej, ale i tak wyszedł cały elaborat. Z przyjemnością odpowiem na wszystkie pytania. Każdą krytykę chętnie przyjmuję, ale proszę — bądźmy dla siebie bardziej wyrozumiali w komentarzach. To dobra artykuł.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster