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 chcę porozmawiać o moim hobby, które przynosi nawet pewien dochód. Zawsze lubiłem opowiadać i wyjaśniać różne rzeczy przyjaciołom, kolegom z klasy i innym uczniom. Mnie też zawsze łatwo było znaleźć wspólny język z dziećmi, nie wiem dlaczego. Ogólnie rzecz biorąc, uważam, że wychowywanie i nauczanie dzieci to jedno z najważniejszych zajęć, a moja żona jest nauczycielką. Tak więc około rok temu zamieściłem ogłoszenie w lokalnej grupie na Facebooku, założyłem grupę i raz w tygodniu zacząłem uczyć Scratcha i Pythona. Teraz mam pięć grup, własne zajęcia w domu i lekcje indywidualne. Jak doszłam do takiego życia i jak dokładnie uczę dzieci, opowiem Wam w tym artykule.

Mieszkam w Calgary, Alberta, Kanada, więc niektóre rzeczy będą zależne od lokalnej specyfiki.

Pokój

Od początku głównym problemem była dostępność przestrzeni do ćwiczeń. Próbowałem szukać biur i sal lekcyjnych do wynajęcia na godziny, ale bez większego powodzenia. Nasza uczelnia oraz SAIT, lokalny odpowiednik MIT, oferują zajęcia z komputerem i bez. Ceny tam okazały się mało humanitarne, a na koniec okazało się, że uczelnia nie przyjmuje nieletnich, a SAIT na ogół wynajmuje tylko swoim studentom. Dlatego ta opcja została wyeliminowana. Istnieje wiele centrów biurowych, które wynajmują sale konferencyjne i biura na godziny, są całe firmy, które oferują szereg opcji, od pełnej sali lekcyjnej po pokój dla czterech osób. Miałem nadzieję, ponieważ Alberta jest prowincją naftową, od 2014 r. pogrążamy się w powolnym kryzysie, a wiele przestrzeni biznesowych jest pustych. Nie powinnam była mieć nadziei, ceny okazały się tak odstraszające, że w pierwszej chwili nawet w nie nie uwierzyłam. Właścicielom łatwiej jest siedzieć w pustych biurach i płacić koszty, niż wyrzucać.

W tym momencie przypomniałam sobie, że regularnie płacę podatki i czy nasz kochany stan, a raczej miasto Calgary, ma tam coś. Okazało się, że rzeczywiście tak jest. W mieście znajdują się areny do hokeja i innych sportów łyżwiarstwa figurowego, a na tych arenach znajdują się sale, w których surowi lodowi wojownicy omawiają strategie przyszłych bitew. Krótko mówiąc, każda arena ma kilka sal ze stołami, krzesłami, białą tablicą, a nawet zlewem i czajnikiem. Cena jest wręcz boska – 25 kanadyjskich tugrików za godzinę. Początkowo zdecydowałam się na półtorej godziny zajęć, dlatego ustaliłam cenę za lekcję na 35 dolarów za zajęcia w grupie pięciu osób, aby zrekompensować czynsz i coś dołożyć do kieszeni. Ogólnie lubiłem ćwiczyć na arenach, rozwiązało to jeden z problemów - większość rosyjskojęzycznych ludzi mieszka na południu, a ja mieszkam na północy miasta, więc wybrałem arenę mniej więcej pośrodku. Ale były też niedogodności. Kanadyjska biurokracja jest dobra i przyjazna, choć delikatnie mówiąc, potrafi być nieco niezdarna. Nie ma problemów, gdy przyzwyczaisz się do rytmu i zaplanujesz z wyprzedzeniem, ale czasami zdarzają się nieprzyjemne chwile. Przykładowo na stronie internetowej miasta można wygodnie wybrać termin i miejsce oraz zarezerwować pokój, ale nie można w żaden sposób za to zapłacić. Sami wykonują połączenia telefoniczne i przyjmują płatności kartą. Można udać się do urzędu i zapłacić gotówką. Był zabawny, ale niezbyt przyjemny moment, kiedy czekałam na telefon z prośbą o zapłatę za drugą lekcję, ten nie przyszedł, a ostatniego dnia spóźniłam się do biura piętnaście minut. Musiałem z bezczelną miną podejść do ochrony i skłamać, że pokój był zarezerwowany. My, Kanadyjczycy, wierzymy mi na słowo, wpuścili mnie spokojnie i niczego nie sprawdzali, ale nie robiłabym tego, gdyby ludzie nie byli już w drodze na zajęcia.

Tak przepracowałem zimę i wiosnę, a potem nastąpiły zmiany, które były ostatnią kroplą. Po pierwsze, biuro było zamknięte dla zwiedzających, a za rogiem oferowano przyjmowanie płatności telefonem. Siedziałem w przejściu przez co najmniej pół godziny, zanim dotarłem. Po drugie, jeśli wcześniej moja kochana ciocia brała ode mnie zapłatę za półtorej godziny, to teraz jakaś dziewczyna odebrała telefon i powiedziała, że ​​płatność jest tylko za godzinę. W tamtym czasie moja grupa składała się z trzech lub dwóch osób, a dodatkowe 12.5 dolara nie było wcale zbędne. Jestem oczywiście ideologiczny, ale jeśli żona wyrzuci mnie na ulicę, to nie będzie już kogo uczyć. Byłem wtedy jeszcze bezrobotny.

I postanowiłam pójść do biblioteki. Biblioteki wynajmują wspaniałe sale całkowicie bezpłatnie, jest jednak jeden haczyk – nie można prowadzić działalności komercyjnej. Nawet organizacje charytatywne nie mogą tam zbierać pieniędzy. Powiedziano mi, że nie jest to szczególnie kontrolowane, najważniejsze jest, aby nie brać pieniędzy przy wejściu, ale bardzo nie lubię łamać zasad. Kolejnym problemem jest to, że sale są często zajęte i trudno jest prowadzić zaplanowane zajęcia w jednym miejscu. Uczyłem w bibliotekach latem i wczesną zimą, musiałem wybierać te, które mają miejsce, i ostatecznie zmieniłem pięć lub sześć bibliotek. Potem zacząłem rezerwować miejsce z dwumiesięcznym wyprzedzeniem i nawet wtedy udało mi się to zrobić tylko w jednej małej bibliotece, w pozostałych regularnie nie było miejsc na wymagany czas. A potem postanowiłem zrobić zajęcia komputerowe w domu. Odwiesiłem tablicę, kupiłem drugi stolik i kilka starych monitorów z ogłoszenia. W pracy firma kupiła mi nowy, mocny laptop, ponieważ analiza na moim komputerze trwała prawie 24 godziny. Miałem więc nowy stary komputer, stary stary komputer, laptop, w którym mój maluch zmiażdżył ekran i starego netbooka, w którym sam zmiażdżyłem ekran. Podłączyłem je wszystkie do monitorów i wszędzie zainstalowałem Linux Mint, z wyjątkiem netbooka, na którym zainstalowałem, zdaje się, bardzo lekki zestaw dystrybucyjny Pappy. Mam jeszcze starego, nowego laptopa, kupionego za 200 dolarów, podłączyłem go do telewizora. Co ważne, nasza właścicielka niedawno wymieniła nam okna i zamiast strasznej, niszczejącej nędzy w pokoju, mamy teraz nowe, białe ramy. Żona trzyma salon, kuchnię i drugą sypialnię na potrzeby przedszkola, więc całe piętro okazało się czysto pedagogiczne. Więc teraz wszystko jest w porządku z lokalami, przejdźmy do nauczania.

Zadrapanie

Zaczynam uczyć podstaw programowania z wykorzystaniem języka Scratch. Jest to język wykorzystujący gotowe bloki, wynalezione kiedyś na MIT. Większość dzieci widziała już Scratcha w szkole, więc dość szybko go łapie. Są gotowe programy i scenariusze zajęć, ale wcale mi się nie podobają. Niektóre są dziwne – stwórz na przykład własną historię. Cały program składa się z niezliczonej ilości bloków say '<...>' for 2 seconds. Widać, że wymyślili go bardzo kreatywni ludzie, ale dzięki takiemu podejściu można nauczyć się pisać klasyczny indyjski kod spaghetti. Od samego początku mówię o zasadach typu DRY.Inne zbiory zadań są całkiem niezłe, ale dzieci szybko łapią istotę i zaczynają je wykonywać jak karabin maszynowy. W efekcie na jednej lekcji robią to, co powinni byli zrobić na pięciu. A wyszukiwanie i wybieranie zadań zajmuje dużo czasu osobistego. Ogólnie rzecz biorąc, Scratch bardziej przypomina nie język, ale IDE, w którym wystarczy pamiętać, gdzie kliknąć i gdzie czego szukać. Gdy tylko uczniowie poczują się mniej lub bardziej komfortowo, próbuję przenieść ich do Pythona. Nawet moja siedmioletnia dziewczynka pisze proste programy w Pythonie. Za zaletę Scratcha uważam to, że zawiera podstawowe pojęcia, których można się nauczyć w zabawny sposób. Z jakiegoś powodu każdemu, bez wyjątku, bardzo trudno jest zrozumieć ideę zmiennej. Na początku szybko przeleciałem wzrokiem po temacie i szedłem dalej, aż spotkałem się z faktem, że nawet nie wiedzą, co z tym zrobić. Teraz spędzam dużo czasu na zmiennych i ciągle do nich wracam. Trzeba zrobić jakieś głupie wbijanie młotka. Zmieniam różne zmienne na ekranie i każę im wypowiadać swoje wartości. Scratch ma również struktury kontrolne i kontrole wartości, takie jak while, for lub if w Pythonie. Są dość proste, ale są problemy z zagnieżdżonymi pętlami. Staram się dawać kilka zadań za pomocą zagnieżdżonej pętli, tak aby jej działanie było jasne. Następnie przechodzę do funkcji. Nawet dla dorosłych koncepcja funkcji nie jest oczywista, a dla dzieci tym bardziej. Długo mówię o tym, czym w ogóle jest funkcja, mówię o fabryce, która przyjmuje przedmioty jako wsad i wydaje towary, o kucharzu, który przygotowuje jedzenie z surowców. Następnie robimy program „zrób kanapkę” z produktami, a następnie robimy z niego funkcję, do której produkty przekazywane są jako parametry. Naukę funkcji kończę w Scratchu.

Python

Z Pythonem wszystko jest prostsze. Istnieje dobra książka Python dla dzieci, z której uczę. Wszystko tam jest standardowe - linie, kolejność operacji, print(), input() itp. Napisana łatwym językiem, z humorem, podoba się dzieciom. Ma wadę typową dla wielu książek o programowaniu. Jak w słynnym dowcipie - jak narysować sowę. Owal - okrąg - sowa. Przejście od prostych koncepcji do dość złożonych koncepcji jest zbyt gwałtowne. Dołączenie obiektu do metody kropkowej zajmuje mi kilka sesji. Z drugiej strony nie spieszę się, powtarzam to samo na różne sposoby, aż chociaż jakiś obraz się połączy. Zaczynam od zmiennych i poprawiam je ponownie, tym razem w Pythonie. Zmienne są swego rodzaju przekleństwem.

Sprytny student, który kilka miesięcy temu zręcznie kliknął zmienne na Skratchu, wygląda jak baran przy nowej bramce i nie potrafi dodać X z Y, co jest wyraźnie napisane na tablicy linijkę powyżej. My powtarzamy! Co ma zmienna? Imię i znaczenie! Co oznacza znak równości? Zadanie! Jak sprawdzić równość? Podwójny znak równości! I powtarzamy to raz po raz, aż do całkowitego oświecenia. Następnie przechodzimy do funkcji, gdzie wyjaśnienie argumentów zajmuje najwięcej czasu. Domyślnie nazwane argumenty, według pozycji i tak dalej. Nie dotarliśmy jeszcze do zajęć w żadnej grupie. Oprócz Pythona studiujemy popularne algorytmy z książki, o czym później.

A właściwie trening

Moja lekcja ma następującą strukturę: przez pół godziny wykładam teorię, sprawdzam wiedzę i utrwalam zdobytą wiedzę. Czas na laboratoria. Często daję się ponieść emocjom i mówię nawet godzinę, a potem zostaje pół godziny na praktykę. Kiedy uczyłem się Pythona, oglądałem kurs Algorytmy i struktury danych Chiryanow z MIPT. 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 jest wcześnie. W rezultacie pozostają algorytmy i struktury danych, które są znane od dawna i zawsze będą miały podobną formę. Ja sam pamiętam tylko liczby całkowite z instytutu Pascal. 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 położenie fundamentów, niż szybkie pisanie gry platformowej w Pythonie. Chociaż bardziej chcą platformówki i rozumiem ich. Podaję im proste algorytmy – bąbelek, wyszukiwanie binarne na posortowanej liście, odwrócenie notacji polskiej za pomocą stosu, ale każdy z nich analizujemy bardzo szczegółowo. Okazało się, że współczesne dzieci w zasadzie nie wiedzą, jak działa komputer, też ci powiem. Na każdym wykładzie staram się powiązać ze sobą kilka koncepcji. Na przykład komputer - pamięć/procent - pamięć zbudowana z komórek (pozwolę ci potrzymać chip pamięci, zgadnij, ile jest komórek) - każda komórka jest jak żarówka - są dwa stany - prawda/fałsz - i/lub - binarny/dziesiętny - 8 bitów = 1 bajt - bajt = 256 opcji - logiczny typ danych 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 na prawdziwym komputerze wszystko jest nieco inne i ilość pamięci na te typy danych jest inna, ale najważniejsze jest to, że sami w tym procesie tworzymy bardziej złożone typy danych z prostszych. Typy danych są prawdopodobnie najtrudniejszą rzeczą do zapamiętania. Dlatego każdą lekcję zaczynam od krótkiej rozgrzewki – jeden uczeń podaje typ danych, drugi podaje dwa przykłady i tak dalej w kółku. W efekcie udało mi się osiągnąć to, że nawet najmłodsze dzieci radośnie krzyczą – pływaj! wartość logiczna! siedem, pięć! pizza, samochód! Na wykładzie ciągle ciągnę najpierw jednego, albo drugiego, bo inaczej szybko zaczną dłubać w nosie i patrzeć w sufit. A poziom wiedzy każdego człowieka należy co jakiś czas sprawdzać.

Moi uczniowie nie przestają mnie zadziwiać, zarówno swoją głupotą, jak i nieoczekiwaną inteligencją. Na szczęście częściej z inteligencją.

Chciałem napisać więcej, ale okazało się, że to tylko kartka. Chętnie odpowiem na wszystkie pytania. Z radością przyjmę każdą krytykę w każdy możliwy sposób, proszę tylko o większą tolerancję wobec siebie w komentarzach. To jest dobry artykuł.

Źródło: www.habr.com

Dodaj komentarz