Як я навчаю дітей Пітону

Як я навчаю дітей Пітону

Моя основна робота пов'язана з даними та програмуванням на RАле в цій статті я хочу розповісти про своє захоплення, яке навіть приносить якийсь дохід. Мені завжди було цікаво розповідати та пояснювати щось друзям, однокласникам та однокурсникам. Ще мені завжди просто було знаходити спільну мову з дітьми, не знаю чому. Взагалі, я вважаю, що виховання та навчання дітей це одне з найважливіших занять із усіх, та й дружина у мене педагог. Загалом приблизно рік тому я дав оголошення в місцевій групі на фейсбуці, набрав групу і почав викладати скратч і пітон раз на тиждень. Зараз у мене п'ять груп, свій клас у домі та індивідуальні заняття. Як я дійшов до такого життя і як саме я навчаю дітей, я розповім у цій статті.

Я живу в Канаді, місті Калгарі, провінція Альберта, тому деякі моменти будуть пов'язані з місцевою специфікою.

Приміщення

Наявність місця для занять була від початку основною проблемою. Я намагався шукати офіси та класи в оренду щогодини, але не дуже успішно. Наш університет та SAIT – місцевий аналог MIT – здають класи з комп'ютерами та без. Ціни виявилися там не дуже гуманними, а зрештою з'ясувалося, що універ не пускає неповнолітніх, а SAIT взагалі здає лише своїм студентам. Так що цей варіант відпав. Є багато офісних центрів, які здають кімнати для нарад та офіси щогодини, є цілі компанії, які пропонують купу варіантів від повноцінного класу до кімнатки на чотири особи. У мене були надії, оскільки Альберта нафтова провінція, у нас з 2014 року млява криза, і багато бізнес-площ порожні. Даремно я сподівався, ціни виявилися настільки кінськими, що я навіть спочатку не повірив. Власникам простіше сидіти на порожніх офісах та платити витрати, ніж демпінгувати.

У цей момент я згадав, що справно сплачую податки, і чи нема чого там у нашої дорогої держави, точніше — у міста Калгарі. Виявилося, що навіть є. Місто має арени для гри в хокей та інших фігурних катань, а в цих аренах є кімнати, де суворі льодові воїни обговорюють стратегії майбутніх битв. Коротше, при кожній арені є кілька кімнат зі столами, стільцями, білою дошкою і навіть мийкою з чайником. Ціна цілком божа — 25 канадських тугриків за годину. Я спочатку вирішив робити заняття по півтори години, тому призначив ціну за заняття $35 з носа в групі на п'ять осіб, щоб компенсувати оренду, та й собі щось у кишеню покласти. Загалом мені подобалося займатися в аренах, це вирішувало одну з проблем — більшість російськомовних живуть на півдні, а я живу на півночі міста, тому я вибрав арену приблизно посередині. Але були й незручності. Канадська бюрократія хороша і доброзичлива, але, як би м'якше сказати, буває дещо неповороткою. Немає проблем, коли звикаєш до ритму та плануєш заздалегідь, але іноді виникають неприємні моменти. Наприклад, на сайті міста можна зручно вибрати час та місце, зарезервувати кімнату, але заплатити не можна, ніяк. Вони самі телефонують і приймають оплату карткою. Можна поїхати в офіс та заплатити готівкою. Був кумедний, але не дуже приємний момент, коли я чекав їхнього дзвінка, щоб заплатити за друге заняття, не дочекався, а в офіс в останній день запізнився на п'ятнадцять хвилин. Довелося з нахабною мордою підходити до охорони та брехати, що кімната заброньована. Ми, канадці, віримо на слово, мене спокійно пустили і не стали нічого перевіряти, але я не став би так робити, якби люди вже не їхали на заняття.

Так я займався зиму та весну, а потім відбулися зміни, які стали останньою краплею. По-перше, офіс закрили для відвідувачів та запропонували приймати оплату по телефону за рогом. Я просидів щонайменше півгодини на проході, перш ніж додзвонився. По-друге, якщо раніше мила тітонька брала в мене оплату за півтори години, то тепер слухавку взяла якась дівка і заявила, що оплата лише за годину. У мене на той момент гурт був то три, то двоє людей, і зайві $12.5 були зовсім не зайвими. Я, звичайно, ідейний, але якщо дружина мене вижене надвір, то викладати не буде кому. Я був ще без роботи.

І я вирішив піти до бібліотеки. Бібліотеки здають прекрасні кімнати абсолютно безкоштовно, але там є одне, але не можна вести комерційну діяльність. Навіть благодійні організації не мають права збирати там гроші. Мені казали, що це особливо не контролюється, головне прямо там не брати гроші на вході, але я не дуже люблю порушувати правила. Ще одна проблема - кімнати часто зайняті і складно проводити заняття за розкладом одночасно в одному місці. Я викладав у бібліотеках літо та початок зими, доводилося обирати ті, де є місце, у результаті я змінив п'ять-шість бібліотек. Потім почав бронювати місце за два місяці, і те, вийшло так зробити тільки в одній маленькій бібліотечці, в інших регулярно не було місць на потрібний час. І тоді я вирішив зробити комп'ютерний клас удома. Повісив дошку, купив за оголошенням другий стіл і пару старих моніторів. По роботі мені фірма купила новий потужний ноутбук, тому що на комп'ютері аналіз займав майже 24 години. У мене був новий старий комп'ютер, старий старий комп'ютер, лаптоп, у якого мій дрібний розчавив екран і стародавній нетбук, на якому я роздавив екран. Я їх все підключив до моніторів і поставив скрізь лінукс мінт, крім нетбука, на який поставив легкий дистрибутив, здається, паппі. У мене є ще старий новий лаптоп, куплений за $200, я його підключив до телевізора. Ще, що важливо, наш господар нещодавно поміняв нам віконця, і в кімнаті тепер замість жахливого розваленого убожества нові білі рами. Вітальню, кухню та другу спальню дружина тримає під дитячий садок, тому весь поверх вийшов чисто педагогічний. Отже, тепер із приміщенням все добре, перейдемо безпосередньо до викладання.

Скратч

Я починаю давати основи програмування з мови скратч. Це мова, яка використовує готові блоки, придумана свого часу в MIT. Більшість дітлахів вже бачила скратч у школі, тому досить швидко освоюється. Є готові програми та плани занять, але мені вони зовсім не подобаються. Одні дивні – створи свою історію, наприклад. Уся програма складається з незліченних блоків say '<...>' for 2 seconds. Видно, що її вигадали дуже творчі особистості, але з таким підходом можна навчити писати класичний індійський спагетті-код. Я ж від початку розповідаю про принципи типу DRY Інші збірники завдань цілком хороші, але дітки швидко вникають у суть і починають робити їх як із кулемету. У результаті за один урок роблять те, що мали за п'ять. А на пошук та відбір завдань йде багато особистого часу. Взагалі, скратч більше нагадує не мову, а IDE, де треба просто запам'ятати, куди натиснути і де що шукати. Як тільки учні більш-менш освоюються, я намагаюся перевести їх на пітон. У мене навіть семирічна дівчинка на пітоні прості програми пише. У чому я бачу користь скратча - у ньому такі є основні поняття, які засвоюються в ігровій формі. Чомусь усім без винятку дуже важко зрозуміти ідею змінної. Я спочатку швидко пробігав цю тему і йшов далі, доки стикався з тим, що вони взагалі не знають, що з цим робити. Тепер я приділяю багато часу змінним і постійно до них повертаюся. Доводиться займатися тупим довбанням. Я на екрані змінюю різні змінні і змушую говорити їхнє значення. Також у скратч є контрольні структури та перевірки значень, типу while, for або if у пітоні. Вони даються досить легко, тільки із вкладеними циклами бувають проблеми. Я намагаюся давати кілька завдань із вкладеним циклом, і щоб дія його була наочною. Після цього я переходжу до функцій. Навіть для дорослих поняття функції буває неочевидним, а для дітей — тим більше. Я довго розпинаюсь, що таке функція взагалі, розповідаю про заводик, який отримує на вхід предмети, а видає товари, про кухаря, який із сирих продуктів робить їжу. Потім ми робимо програму "зроби сендвіч" з продуктами, а потім робимо з неї функцію, якою продукти передаються як параметри. На вивченні функцій закінчую зі скратчем.

пітон

З пітон все простіше. Є хороша книжка Python for Kids, за нею я й навчаю. Там все стандартно - рядки, порядок операцій, print(), input() і т.д. Написана легкою мовою, з гумором, дітям подобається. Вона має недолік, властивий багатьом книгам з програмування. Як у відомому жарті – як намалювати сову. Овал – коло – сова. Від простих понять надто різкий перехід до досить складних концепцій. У мене на те, що об'єкт скріплюється з методом крапкою, йде кілька занять. З іншого боку, я не поспішаю, повторюю те саме на різний лад поки не складеться хоч якась картина. Я починаю зі змінних і знову довбаю їх, вже на пітоні. Змінні це якесь прокляття.

Кмітливий студент, який пару місяців тому спритно клацав змінні на короткий, дивиться, як баран на нові ворота і не може скласти ікс з греком, які рядком вище явно на дошці написані. Повторюємо! Що має змінна? Ім'я та значення! Що означає знак рівності? Присвоєння! А як ми перевіримо рівність? Подвійний знак рівності! І так повторюємо знову і знову, до повного просвітлення. Потім переходимо до функцій, там найдовше займає пояснення про аргументи. Іменовані аргументи, за позиціями, за умовчанням тощо. До класів ми ще в жодній групі не дійшли. Крім пітона по книжці, ми вивчаємо популярні алгоритми, про це далі.

Власне, навчання

Урок у мене влаштований так – півгодини я даю теорію, перевіряю знання, закріплюю пройдене. Година – лаби. Часто я захоплююсь і говорю до години, тоді на практику залишається півгодини відповідно. Коли я вчив пітон, я переглянув курс Алгоритми та структури даних Хір'янова з МФТІ. Мені дуже сподобався його виклад та структура лекцій. Його ідея така – фреймворки, синтаксис, бібліотеки – старіють. Архітектура, командна робота, системи контролю версій поки що зарано. У результаті залишаються алгоритми та структури даних, які давно відомі та будуть завжди у схожому вигляді. Я сам із інститутського паскаля лише інтежери та пам'ятаю. Так як у мене учні здебільшого юні, від семи до п'ятнадцяти років, я вважаю, що для їхнього майбутнього важливіше закласти основи, ніж скоріше написати платформер на пітоні. Хоча їм більше хочеться платформер, і я їх розумію. Алгоритми я їм даю прості — бульбашка, бінарний пошук у списку, зворотна польська нотація за допомогою стека, але ми кожен розбираємо дуже докладно. З'ясувалося, що сучасні діти не знають у принципі, як влаштований комп'ютер, теж розповідаю. Я намагаюся у кожній лекції зв'язати кілька понять разом. Наприклад, комп'ютер — пам'ять/проц — пам'ять із осередків (даю потримати плашку пам'яті, вгадайте, скільки тут осередків) — кожен осередок як лампочка — є два стани — true/false — and/or — бінарний/десятковий — 8біт = 1байт — байт = 256 варіантів - логічний тип даних на одному біті - цілі числа на одному байті - float на двох байтах - string на одному байті - найбільше на 64 бітах - список і кортеж з попередніх типів. Я обговорююсь, що в реальному комп'ютері дещо інакше й інша кількість пам'яті для цих типів даних, але головне, що ми самі в процесі створюємо складніші типи даних з більш простих. Типи даних це, мабуть, найскладніше, що треба запам'ятати. Тому я кожне заняття починаю з швидкої розминки – один учень називає тип даних, наступний наводить два приклади, і так по колу. У результаті я досяг того, що навіть наймолодші діти бадьоро кричать - float! boolean! seven, five! pizza, car! Під час лекції постійно смикаю то одного, то іншого, інакше вони швидко починають колупати в носі і дивитися в стелю. Та й рівень знань кожного треба перевіряти між ділом.

Мої учні не перестають мене дивувати як своєю тупістю, так і несподіваною кмітливістю. Кмітливістю, на щастя, частіше.

Хотів написати більше, але й так простирадло вийшло. Відповім із задоволенням на всі запитання. Будь-яку критику всіляко вітаю, тільки прохання — бути терпимішими один до одного в коментарях. Це добра стаття.

Джерело: habr.com

Додати коментар або відгук