Как да преподавам Python на деца?

Как да преподавам Python на деца?

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

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

Стаята

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

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

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

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

Драскотина

Започвам да преподавам основите на програмирането с помощта на езика Scratch. Това е език, който използва готови блокове, измислени по едно време в MIT. Повечето деца вече са гледали Scratch в училище, така че го възприемат доста бързо. Има готови програми и планове на уроци, но изобщо не ги харесвам. Някои са странни - създайте своя собствена история, например. Цялата програма се състои от безброй блокове say '<...>' for 2 seconds. Вижда се, че е измислен от много креативни личности, но с този подход можете да научите как да пишете класически индийски спагети код. От самото начало говоря за принципи като DRY.Другите сборници със задачи са доста добри, но децата бързо схващат същността и започват да ги изпълняват като картечница. В резултат на това те правят в един урок това, което е трябвало да направят в пет. А търсенето и избирането на задачи отнема много лично време. Като цяло Scratch напомня повече не на език, а на IDE, където просто трябва да запомните къде да щракнете и къде да търсите какво. Веднага щом учениците се чувстват повече или по-малко удобно, се опитвам да ги прехвърля на Python. Дори моето седемгодишно момиче пише прости програми на Python. Това, което виждам като полза от Scratch е, че съдържа основни понятия, които се научават по игрив начин. По някаква причина е много трудно за всички, без изключение, да разберат идеята за променлива. Отначало бързо прегледах темата и продължих напред, докато не се сблъсках с факта, че те дори не знаят какво да правят по въпроса. Сега отделям много време на променливи и постоянно се връщам към тях. Трябва да направиш някакво глупаво чукане. Променям различни променливи на екрана и ги карам да изричат ​​стойностите си. Scratch също има контролни структури и проверки на стойността, като напр while, for или if в python. Те са доста лесни, но има проблеми с вложените цикли. Опитвам се да дам няколко задачи с вложен цикъл и така, че действието му да е ясно. След това преминавам към функциите. Дори за възрастни понятието функция не е очевидно, а още повече за децата. Продължавам дълго за това какво е функция като цяло, говоря за фабрика, която получава артикули като вход и издава стоки, за готвач, който прави храна от суровини. След това правим програма „make a sandwich“ с продукти и след това правим функция от нея, на която продуктите се подават като параметри. Завършвам изучаването на функции със Scratch.

питон

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

Умен студент, който преди няколко месеца ловко щракаше променливи на Skratch, изглежда като овен пред новата врата и не може да събере X с Y, което е ясно написано на дъската един ред по-горе. Повтаряме! Какво има една променлива? Име и значение! Какво означава знакът за равенство? Задание! Как да проверим равенството? Двоен знак за равенство! И повтаряме това отново и отново до пълното просветление. След това преминаваме към функциите, където обяснението за аргументите отнема най-дълго. Именувани аргументи, по позиция, по подразбиране и т.н. Все още не сме стигнали до часовете в нито една група. В допълнение към Python, ние изучаваме популярни алгоритми от книгата, повече за това по-късно.

Всъщност обучение

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

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

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

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

Добавяне на нов коментар