Как уча децата на Python

Как уча децата на Python

Моя основна работа е свързана с данни и програмиране на R, но в тази статия искам да разкажа за своето хоби, което дори носи известен доход. Винаги ми е било интересно да разказвам и обяснявам нещо на приятели, съученици и колеги. Също така, винаги съм имал лесни отношения с деца, не знам защо. Всъщност, смятам, че възпитанието и обучението на деца е едно от най-важните занимания, а и съпругата ми е педагог. Общo взето, преди около година публикувах обява в местната фейсбук група, събрах група и започнах да преподавам Scratch и Python веднъж седмично. Сега имам пет групи, собствен клас у дома и индивидуални занятия. Как стигнах до тук и как именно уча децата, ще разкажа в тази статия.

Живея в Канада, град Калгари, провинция Алберта, така че някои моменти ще бъдат свързани с местната специфика.

Помещение

Наличието на място за занятия от самото начало беше основен проблем. Опитвах се да търся офиси и класове за наем по часове, но не много успешно. Нашият университет и SAIT — местният аналог на MIT — отдават класове с компютри и без. Цените там се оказаха не много разумни, а накрая се изясни, че университетът не допуска непълнолетни, а SAIT изобщо отдава само на свои студенти. Така че този вариант отпадна. Има много офисни центрове, които наемат стаи за заседания и офиси по часове, има цели компании, които предлагат разнообразие от варианти от пълноценен клас до стая за четирима души. Имах надежди, тъй като Алберта е нефтена провинция, при нас от 2014 година има забавена криза, и много бизнес площи остават празни. Напразно се надявах, цените се оказаха толкова високи, че в началото не повярвах. На собствениците им е по-лесно да седят в празни офиси и да плащат разходите, отколкото да демпингуват.

В този момент си спомних, че редовно плащам данъци и дали нещо не дължим на нашето скъпо правителство, по-точно — на град Калгари. Оказа се, че определено има. Градът разполага с арени за хокей и други фигурни спортове, а в тези арени има стаи, където сурови ледени войни обсъждат стратегии за предстоящи битки. С една дума, до всяка арена има по две стаи с маси, столове, бяла дъска и дори мивка с чайник. Цената е напълно разумна — 25 канадски долара на час. Първоначално реших да правя занятия по един половин час, затова назначих цена от 35 долара на човек за група от пет души, за да компенсирам наема и да оставя нещо и за себе си. В общи линии, ми харесваше да провеждам занятия в арените, това решаваше един от проблемите — повечето русоговорящи живеят на юг, а аз живея на север от града, затова избрах арена, която е горе-долу по средата. Но имаше и неудобства. Канадската бюрокрация е добра и приятелска, но, как да кажа по-меко, понякога е малко тромава. Няма проблем, когато свикнеш с ритъма и планираш напред, но понякога се налагат неприятни моменти. Например, на сайта на града е удобно да избереш време и място, да резервираш стая, но не можеш да платиш, по никакъв начин. Те сами звънят по телефона и приемат плащане с карта. Можеш да отидеш в офиса и да платиш в брой. Имаше един забавен, но не особено приятен момент, когато чаках техния телефонен разговор, за да платя за второто занятие, не дочаках, а в офиса закъснях с петнадесет минути на последния ден. Приходеше ми се от нагла фронтална перспектива да подходим към охраната и да лъжа, че стаята е резервирана. Ние, канадците, вярваме на дума, спокойно ме пуснаха и не направиха проверки, но не бих сторил това, ако хората вече не идваха на занятието.

Така прекарах зимата и пролетта, но след това настъпиха промени, които станаха последната капка. Първо, офисът затвори за посетители и предложиха да се приема плащане по телефона на ъгъла. Прекарах не по-малко от половин час в чакане, преди да се свържа. Второ, ако преди мила леличка приемаше плащанията ми за един час и половина, сега вдигна слушалката някаква момиче и заяви, че плащането е само за един час. В този момент групата ми беше три или две лица и излишните $12.5 съвсем не бяха излишни. Разбира се, аз съм идеалист, но ако жена ми ме изгони на улицата, няма да има кой да преподава. Тогава все още бях без работа.

И реших да отида в библиотеката. Библиотеките предлагат прекрасни стаи напълно безплатно, но има едно но — не е позволено да се извършва търговска дейност. Дори благотворителните организации нямат право да събират пари там. Казваха ми, че това не се контролира особено, важното е да не вземаш пари на входа, но аз много не обичам да нарушавам правилата. Още една проблема — стаите често са заети и е трудно да се проведат занятия по разписание на едно място в едно и също време. Преподавах в библиотеки през лятото и началото на зимата, налагаше се да избера тези, където има място, в крайна сметка смених пет-шест библиотеки. После започнах да резервирам място два месеца предварително, а и то успях да направя само в една малка библиотека, в другите редовно нямаше места в нужното време. И тогава реших да направя компютърен клас у дома. Закачих дъска, купих второ бюро и няколко стари монитора от обява. По работа ми фирмата купи нов мощен лаптоп, защото на моят компютър анализът отнемаше почти 24 часа. В крайна сметка, имах нов стар компютър, стар стар компютър, лаптоп, на който малкият ми счупи екрана и древен нетбук, на който сам си счупих екрана. Свързах всичко към мониторите и сложих линукс минт навсякъде, освен на нетбука, на който сложих много лек дистрибутив, май беше папи. Имам още един стар нов лаптоп, купен за $200, свързах го към телевизора. И, не на последно място, нашият хазяин наскоро ни смени прозорците, и в стаята сега вместо ужасното разпаднало се съоръжение са нови бели рамки. Всекидневната, кухнята и втората спалня жена ми ги поддържа като детска градина, затова целият етаж се оказа чисто педагогически. И така, с помещението всичко е наред, преминаваме направо към преподаването.

Скратч

Започвам да дам основите на програмирането с езика скратч. Това е език, който използва готови блокове, създаден някога в MIT. Повечето деца вече са виждали скратч в училище, затова бързо се усвоява. Има готови програми и планове за занятия, но те изобщо не ми харесват. Някои са странни — например, създай своя история. Цялата програма се състои от безброй блокове. say '' for 2 seconds. Ясно е, че е измислено от много креативни личности, но с такъв подход може да се научи да се пише класически индийски спагети-код. Аз от самото начало разказвам за принципите като D.R.Y. Другите сборници със задачи са доста добри, но децата бързо вникват в същността и започват да ги решават като от автомат. В крайна сметка, за един урок те правят това, което трябваше да направят за пет. А за търсенето и подбора на задачи отнема много лично време. Всъщност, Scratch повече напомня на IDE, където просто трябва да запомниш къде да кликнеш и какво да търсиш. Веднага щом учениците по-горе-надолу се усвоят, се опитвам да ги прехвърля на Python. Имам дори седемгодишно момиче, което пише прости програми на Python. Виждам ползата от Scratch в основните концепции, които се усвояват по игрив начин. По някаква причина на всички им е много трудно да разберат идеята за променливата. Първоначално бързо минавах през тази тема и отивах по-нататък, докато не се сблъсках с факта, че те изобщо не знаят какво да правят с това. Сега отделям много време за променливите и постоянно се връщам към тях. Наложи се да се занимавам с глупаво натискане. На екрана променям различни променливи и ги карам да казват стойността им. Освен това в Scratch има контролни структури и проверки на стойности, като докато, for или ако в Python. Те се дават доста лесно, само с вложените цикли имам проблеми. Опитвам се да дам няколко задачи с вложен цикъл, като действието му да е разграничено. След това преминавам към функции. Дори за възрастни понятието функция е трудно за разбиране, а за деца — още повече. Дълго време обяснявам какво представлява функция, разказвам за фабрика, която получава предмети на входа и издава стоки, и за готвач, който прави храна от сурови продукти. След това правим програма „направи сандвич“ с продукти, а след това я превръщаме във функция, на която продуктите се предават като параметри. С изучаването на функциите завършвам със Scratch.

Python

С Python всичко е по-просто. Има добра книга Python for Kids, по която уча. Там всичко е стандартно — низове, ред на операциите, print(), input() и т.н. Написано на прост език, с хумор, децата харесват. Има недостатък, характерен за много книги по програмиране. Както е в известния виц — как да нарисуваш сова. Овал — кръг — сова. От простите понятия има рязък преход към доста сложни концепции. Отнема ми няколко занятия да обясня, че обектът се свързва с метода с точка. От друга страна, не бързам, повтарям едно и също по различен начин, докато не се формира поне някаква представа. Започвам с променливи и отново ги мачкам, вече на Питон. Променливите са някакво проклятие.

Изобретателен студент, който преди няколко месеца сръчно боравеше с променливи на скратче, сега гледа като телец на нови врати и не може да събере икс с игрек, които ясно са записани на дъската малко по-горе. Повтаряме! Какво има при променливата? Име и стойност! Какво означава знакът на равенство? Присвояване! А как ще проверим равенството? С двойния знак на равенството! И така повтаряме отново и отново, докато не дойде просветлението. После преминаваме към функции, където най-дълго отнема обяснението на аргументите. Именовани аргументи, по позиции, по подразбиране и т.н. Още не сме стигнали до класове в нито една група. Освен Питон от книгата изучаваме популярни алгоритми, за това по-късно.

Същинското обучение

Урокът ми е организиран така — половин час давам теория, проверявам знанията, затвърдявам пройденото. Час — лаборатории. Често се увлекателно и говоря до час, тогава за практика остават половин час съответно. Когато учех Питон, прегледах курс Алгоритми и Структури от Данни Хирьянова от МФТИ. Много ми хареса лекцията и структурата на лекциите му. Идеята му е такава - фреймворците, синтаксисът, библиотеките - остаряват. Архитектура, екипна работа, системи за контрол на версиите - все още не е време за тях. В крайна сметка остават алгоритми и структури от данни, които отдавна са известни и ще останат в подобен вид. Аз самият запомням само целите числа от студентския Pascal. Тъй като учениците ми са основно млади, на възраст между седем и петнадесет години, смятам, че за тяхното бъдеще е по-важно да заложим основите, отколкото да напишем платформа на Python. Въпреки това, те повече искат платформа, и аз ги разбирам. давам им прости алгоритми - пузырък, двоен преглед в подреден списък, обратна полска нотация с помощта на стека, но ние всеки един разглеждаме много подробно. Оказа се, че съвременните деца принципно не знаят как е устроен компютърът, и за това също им разказвам. Стремя се във всяка лекция да свържа няколко понятия заедно. Например, компютър - памет/процес - памет от клетки (да давам да подържат модул с памет, да познаят колко клетки има тук) - всяка клетка като лампичка - има две състояния - вярно/невярно - и/или - двоичен/десятичен - 8бит = 1байт - байт = 256 варианта - логически тип данни на един бит - цели числа на един байт - float на два байта - стринг на един байт - най-голямото число на 64 бита - списък и кортеж от предходните типове. Уточнявам, че в реален компютър всичко е малко по-различно и количеството памет за тези типове данни е различно, но основното е, че сами в процеса създаваме по-сложни типове данни от по-прости. Типовете данни са, вероятно, най-сложните неща, които трябва да запомните. Затова всяко занятие започвам с бърза разминка - един ученик назовава тип данни, следващият дава два примера, и така на кръг. В крайна сметка успях да постигна, че дори най-малките деца бързо извикват - float! boolean! седем, пет! пица, кола! По време на лекцията постоянно закачам то един, то друг, иначе бързо започват да си ровят в носа и да гледат в тавана. Трябва да проверявам и нивото на знания на всеки между другото.

Учениците ми не спират да ме изненадват както с глупостта си, така и с неочакваната си находчивост. За щастие, находчивостта се среща по-често.

Исках да напиша повече, но и така се получи дълъг текст. Ще отговоря с удоволствие на всички въпроси. Всяка критика е добре дошла, само молба — бъдете по-толерантни един към друг в коментарите. Това е положителна статия.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster