Men bolalarga Pythonni qanday o'rgataman

Men bolalarga Pythonni qanday o'rgataman

Mening asosiy ishim ma'lumotlar va dasturlash bilan bog'liq R, lekin bu maqolada men o'zimning sevimli mashg'ulotim haqida gapirmoqchiman, bu hatto bir oz daromad keltiradi. Men har doim do'stlarim, sinfdoshlarim va kursdoshlarimga narsalarni aytib berishga va tushuntirishga qiziqqanman. Bolalar bilan umumiy til topish men uchun ham doim oson bo'lgan, nega buni bilmayman. Umuman olganda, farzand tarbiyasi va o‘qitilishi eng muhim ishlardan biri, deb hisoblayman, turmush o‘rtog‘im esa o‘qituvchi. Shunday qilib, taxminan bir yil oldin men mahalliy Facebook guruhida reklama qildim, guruh tuzdim va haftada bir marta Scratch va Python tillarini o'rgatishni boshladim. Hozir menda beshta guruh, uyda o'z sinfim va individual darslar bor. Qanday qilib men shunday yashashga kelganman va bolalarga qanday o'rgatganimni ushbu maqolada aytib beraman.

Men Kalgari, Alberta, Kanadada yashayman, shuning uchun ba'zi narsalar mahalliy xususiyatlarga ega bo'ladi.

Xona

Mashq qilish uchun joy mavjudligi boshidanoq katta tashvish edi. Men soatlab ijaraga beriladigan ofis va sinf xonalarini qidirishga harakat qildim, lekin unchalik muvaffaqiyatga erishmadim. Bizning universitetimiz va MITning mahalliy ekvivalenti bo'lgan SAIT kompyuterli va kompyutersiz darslarni taklif qiladi. U erdagi narxlar unchalik insonparvar emasligi ma'lum bo'ldi va oxirida ma'lum bo'ldiki, universitet voyaga etmaganlarga ruxsat bermaydi va SAIT odatda faqat o'z talabalariga ijaraga beradi. Shunday qilib, bu variant bekor qilindi. Uchrashuv xonalari va ofislarni soatiga ijaraga oladigan ko'plab ofis markazlari mavjud, to'liq sinfdan to to'rt kishilik xonagacha ko'plab variantlarni taklif qiladigan butun kompaniyalar mavjud. Men umidlarim bor edi, Alberta neft provinsiyasi bo‘lgani uchun biz 2014 yildan beri sust inqirozni boshdan kechirdik va ko‘plab biznes joylari bo‘sh. Men umid qilmasligim kerak edi; narxlar shu qadar dahshatli bo'lib chiqdiki, avvaliga men ham ishonmadim. Egalari bo'sh ofislarda o'tirish va chiqindilarni to'lashdan ko'ra xarajatlarni to'lash osonroq.

Shu payt men muntazam ravishda soliqlarimni to‘layotganimni, bizning aziz davlatimiz, to‘g‘rirog‘i, Kalgari shahrida nimadir bor-yo‘qligini esladim. Haqiqatan ham borligi ma'lum bo'ldi. Shaharda xokkey va boshqa figurali uchish sportlari uchun arenalar mavjud va bu arenalarda muzli muz jangchilari kelajakdagi janglar strategiyasini muhokama qiladigan xonalar mavjud. Muxtasar qilib aytganda, har bir arenada stol, stullar, oq taxta va hatto choynakli lavabo bilan jihozlangan ikkita xona mavjud. Narx juda ilohiy - soatiga 25 Kanada tugriki. Men dastlab bir yarim soat dars qilishga qaror qildim, shuning uchun ijara haqini qoplash va cho'ntagimga nimadir solib qo'yish uchun besh kishilik guruhda dars narxini 35 dollar qilib belgiladim. Umuman olganda, men arenalarda mashq qilishni yoqtirardim, bu muammolardan birini hal qildi - ko'pchilik rusiyzabonlar janubda, men esa shaharning shimolida yashayman, shuning uchun men taxminan o'rtadagi arenani tanladim. Ammo noqulayliklar ham bor edi. Kanada byurokratiyasi yaxshi va do'stona, ammo yumshoq qilib aytganda, biroz noqulay bo'lishi mumkin. Ritmga o'rganib, oldindan rejalashtirishda hech qanday muammo bo'lmaydi, lekin ba'zida yoqimsiz daqiqalar paydo bo'ladi. Masalan, shahar veb-saytida siz qulay vaqt va joyni tanlashingiz va xonani bron qilishingiz mumkin, ammo hech qanday tarzda to'lay olmaysiz. Ular telefon qo'ng'iroqlarini o'zlari qiladi va karta to'lovlarini qabul qiladi. Siz ofisga borib, naqd pulda to'lashingiz mumkin. Ikkinchi dars uchun pul to'lash uchun ularning qo'ng'iroqlarini kutayotganimda kulgili, ammo unchalik yoqimli bo'lmagan bir lahza bo'ldi, u kelmadi va oxirgi kuni men ofisga o'n besh daqiqa kechikdim. Men qo'riqxonaga beozor yuz bilan murojaat qilishim va xona band qilinganligini yolg'on gapirishim kerak edi. Biz kanadaliklar mening so'zimni qabul qilamiz; ular meni xotirjamlik bilan ichkariga kiritishdi va hech narsani tekshirmadilar, lekin agar odamlar allaqachon darsga bormagan bo'lsa, men buni qilmagan bo'lardim.

Men qish va bahorda shunday ishladim, keyin esa so'nggi tomchi bo'lgan o'zgarishlar yuz berdi. Birinchidan, ofis tashrif buyuruvchilar uchun yopiq edi va ular burchakda telefon orqali to'lovlarni qabul qilishni taklif qilishdi. Men yo‘lakda kamida yarim soat o‘tirdim. Ikkinchidan, agar avvallari mehribon xolam mendan bir yarim soatlik to‘lovni olgan bo‘lsa, hozir telefonga bir qiz javob berib, to‘lov faqat bir soatlik ekanligini aytdi. O'sha paytda mening guruhim uch yoki ikki kishi edi va ortiqcha 12.5 dollar ortiqcha emas edi. Albatta, men g‘oyaviyman, lekin xotinim meni ko‘chaga tashlasa, o‘rgatadigan odam bo‘lmaydi. O'shanda men hali ishsiz edim.

Va men kutubxonaga borishga qaror qildim. Kutubxonalar ajoyib xonalarni mutlaqo bepul ijaraga berishadi, ammo bitta narsa bor - siz tijorat faoliyatini olib borolmaysiz. U yerda hatto xayriya tashkilotlariga ham pul yig‘ishga ruxsat berilmagan. Menga aytishdiki, bu ayniqsa nazorat qilinmaydi, asosiysi kirishda pul olmaslik, lekin men qoidalarni buzishni yoqtirmayman. Yana bir muammo shundaki, xonalar tez-tez band bo'lib, rejalashtirilgan darslarni bir vaqtning o'zida bir joyda o'tkazish qiyin. Men yozda va qishning boshida kutubxonalarda dars berdim, bo'sh joyni tanlashga majbur bo'ldim va oxirida besh-oltita kutubxonani almashtirdim. Keyin men ikki oy oldin joy bron qilishni boshladim va shunga qaramay, men buni faqat bitta kichik kutubxonada qilishga muvaffaq bo'ldim, qolganlarida muntazam ravishda kerakli vaqt uchun joy yo'q edi. Va keyin men uyda kompyuter sinfini yaratishga qaror qildim. Men doskani qo'ydim, reklamadan ikkinchi stol va bir nechta eski monitor sotib oldim. Ishda kompaniya menga yangi kuchli noutbuk sotib oldi, chunki mening kompyuterimda tahlil deyarli 24 soat davom etdi. Xullas, menda yangi eski kompyuter, eski eski kompyuter, kichkintoyim ekranni maydalab qo'ygan noutbuk va o'zim ekranni maydalagan qadimgi netbuk bor edi. Men ularning barchasini monitorlarga ulab, Linux Mint-ni hamma joyda o'rnatdim, netbukdan tashqari, men juda engil tarqatish to'plamini o'rnatdim, shekilli, Pappy. Menda hali ham eski yangi noutbuk bor, uni 200 dollarga sotib oldim, uni televizorga uladim. Yana bir muhim jihat shundaki, bizning egasi yaqinda derazalarimizni o'zgartirdi va xonadagi dahshatli, qulab tushayotgan qashshoqlik o'rniga bizda yangi oq ramkalar bor. Xotinim bolalar bog'chasi uchun yashash xonasi, oshxona va ikkinchi yotoqxonani saqlaydi, shuning uchun butun qavat faqat pedagogik bo'lib chiqdi. Xo'sh, endi binolarda hamma narsa yaxshi, keling, o'qitishga o'tamiz.

Scratch

Men Scratch tilidan foydalanib dasturlash asoslarini o'rgatishni boshlayman. Bu MITda bir vaqtning o'zida ixtiro qilingan tayyor bloklardan foydalanadigan til. Aksariyat bolalar allaqachon Scratchni maktabda ko'rgan, shuning uchun ular uni juda tez olishadi. Tayyor dasturlar va dars rejalari bor, lekin ular menga umuman yoqmaydi. Ba'zilari g'alati - masalan, o'z hikoyangizni yarating. Butun dastur son-sanoqsiz bloklardan iborat say '<...>' for 2 seconds. Ko'rinib turibdiki, u juda ijodiy shaxslar tomonidan ixtiro qilingan, ammo bu yondashuv bilan klassik hind spagetti kodini qanday yozishni o'rgatish mumkin. Boshidanoq men DRY kabi printsiplar haqida gapiraman.Boshqa vazifalar to'plami juda yaxshi, lekin bolalar tezda mohiyatni tushunib, ularni avtomat kabi bajarishni boshlaydilar. Natijada, ular besh darsda bajarishlari kerak bo'lgan narsalarni bir darsda bajaradilar. Va vazifalarni qidirish va tanlash juda ko'p shaxsiy vaqtni oladi. Umuman olganda, Scratch ko'proq tilni emas, balki IDE-ni eslatadi, bu erda siz qayerga bosishni va qaerdan nimani qidirishni eslab qolishingiz kerak. Talabalar ko'proq yoki kamroq qulay bo'lishi bilan, men ularni Pythonga o'tkazishga harakat qilaman. Hatto mening yetti yoshli qizim ham Pythonda oddiy dasturlar yozadi. Men Scratch-ning foydasi sifatida ko'rayotganim shundaki, unda o'ynoqi tarzda o'rganiladigan asosiy tushunchalar mavjud. Ba'zi sabablarga ko'ra, har bir kishi uchun, istisnosiz, o'zgaruvchining g'oyasini tushunish juda qiyin. Avvaliga men mavzuni tezda ko'rib chiqdim va ular bu haqda nima qilishni ham bilmasliklariga duch kelgunimcha davom etdim. Endi men o'zgaruvchilarga ko'p vaqt sarflayman va doimiy ravishda ularga qaytaman. Siz qandaydir ahmoqona bolg'acha urishingiz kerak. Men ekranda turli xil o'zgaruvchilarni o'zgartiraman va ularni o'z qiymatlarini gapirishga majbur qilaman. Scratch shuningdek, nazorat tuzilmalari va qiymat tekshiruvlariga ega, masalan while, for yoki if pythonda. Ular juda oson, lekin o'rnatilgan ilmoqlar bilan bog'liq muammolar mavjud. Men bir nechta vazifalarni ichki halqa bilan berishga harakat qilaman va uning harakati aniq bo'ladi. Shundan so'ng men funktsiyalarga o'taman. Hatto kattalar uchun ham funktsiya tushunchasi aniq emas, hatto undan ham ko'proq bolalar uchun. Men umuman funktsiya nima ekanligini uzoq vaqt davom ettiraman, men mahsulotlarni kirish sifatida qabul qiladigan va mahsulot chiqaradigan zavod haqida, xom ashyolardan ovqat tayyorlaydigan oshpaz haqida gapiraman. Keyin mahsulotlar bilan "sendvich yasash" dasturini tuzamiz, so'ngra undan funksiya hosil qilamiz, unga mahsulotlar parametr sifatida uzatiladi. Men Scratch bilan funktsiyalarni o'rganishni tugataman.

Python

Python bilan hamma narsa oddiyroq. Bolalar uchun yaxshi Python kitobi bor, men undan o'rgataman. U erda hamma narsa standart - chiziqlar, operatsiyalar tartibi, print(), input() va hokazo. Oson tilda, hazil bilan yozilgan, bolalarga yoqadi. Bu ko'plab dasturlash kitoblariga xos kamchilikka ega. Mashhur hazilda bo'lgani kabi - boyqushni qanday chizish mumkin. Oval - doira - boyqush. Oddiy tushunchalardan ancha murakkab tushunchalarga o'tish juda keskin. Ob'ektni nuqta usuliga biriktirish uchun menga bir necha seans kerak bo'ladi. Boshqa tomondan, men shoshmayman, hech bo'lmaganda qandaydir rasm yig'ilmaguncha, men bir xil narsani turli yo'llar bilan takrorlayman. Men o'zgaruvchilardan boshlayman va ularni bu safar Pythonda yana uraman. O'zgaruvchilar qandaydir la'natdir.

Bir necha oy oldin Skratch-da o'zgaruvchilarni mohirlik bilan bosgan aqlli talaba yangi darvozada qo'chqorga o'xshaydi va X-ni Y harfi bilan qo'sha olmaydi, bu yuqoridagi satrda aniq yozilgan. Takrorlaymiz! O'zgaruvchi nimaga ega? Ism va ma'no! Tenglik belgisi nimani anglatadi? Topshiriq! Tenglikni qanday tekshiramiz? Ikki barobar belgisi! Va biz buni to'liq ma'rifatga qadar qayta-qayta takrorlaymiz. Keyin biz argumentlar haqidagi tushuntirish eng uzoq davom etadigan funktsiyalarga o'tamiz. Nomlangan argumentlar, pozitsiya bo'yicha, sukut bo'yicha va hokazo. Biz hali hech qaysi guruhdagi darslarga etib bormadik. Python-dan tashqari, biz kitobdan mashhur algoritmlarni o'rganamiz, bu haqda keyinroq.

Aslida, trening

Mening darsim shunday tuzilgan: men yarim soat davomida nazariya beraman, bilimlarni sinab ko'raman va o'rganilgan narsalarni mustahkamlayman. Laboratoriyalar vaqti keldi. Men tez-tez olib ketaman va bir soatgacha gaplashaman, keyin mashg'ulotga yarim soat qoladi. Men python tilini o'rganayotganimda kursni tomosha qildim Algoritmlar va ma'lumotlar tuzilmalari MIPTdan Xiryanov. Uning taqdimoti va ma'ruzalarining tuzilishi menga juda yoqdi. Uning g'oyasi shunday: ramkalar, sintaksis, kutubxonalar eskirmoqda. Arxitektura, jamoaviy ish, versiyalarni boshqarish tizimlari - bu hali erta. Natijada, algoritmlar va ma'lumotlar tuzilmalari uzoq vaqtdan beri ma'lum bo'lib qoladi va har doim o'xshash shaklda bo'ladi. Men o'zim Paskal institutidan faqat butun sonlarni eslayman. Mening shogirdlarim asosan yosh, yetti yoshdan o'n besh yoshgacha bo'lganligi sababli, Python-da platforma o'yinini tezda yozishdan ko'ra, ularning kelajagi uchun poydevor qo'yish muhimroq deb hisoblayman. Garchi, ular ko'proq platformani xohlashadi va men ularni tushunaman. Men ularga oddiy algoritmlarni beraman - pufakcha, tartiblangan ro'yxatda ikkilik qidiruv, stek yordamida teskari Polsha yozuvi, lekin biz har birini batafsil tahlil qilamiz. Ma'lum bo'lishicha, zamonaviy bolalar kompyuterning qanday ishlashini bilishmaydi, men ham sizga aytaman. Men har bir ma'ruzada bir nechta tushunchalarni bog'lashga harakat qilaman. Masalan, kompyuter - xotira/foiz - hujayralardan tashkil topgan xotira (men sizga xotira chipini ushlab turishga ruxsat beraman, qancha hujayra borligini taxmin qiling) - har bir hujayra lampochkaga o'xshaydi - ikkita holat mavjud - rost/noto'g'ri - va/yoki - ikkilik/o'nlik - 8bit = 1 bayt - bayt = 256 variant - bir bitdagi mantiqiy ma'lumotlar turi - bir baytdagi butun sonlar - float ikki baytda - string bir baytda - 64 bitdagi eng katta raqam - oldingi turlardan ro'yxat va kortej. Men shuni ta'kidlaymanki, haqiqiy kompyuterda hamma narsa biroz boshqacha va bu ma'lumotlar turlari uchun xotira hajmi boshqacha, lekin asosiysi, biz o'zimiz jarayonda oddiyroqlardan murakkabroq ma'lumotlar turlarini yaratamiz. Ma'lumotlar turlari, ehtimol, eslab qolish eng qiyin narsadir. Shuning uchun men har bir darsni tez qizdirish bilan boshlayman - bir talaba ma'lumotlar turini nomlaydi, keyingisi ikkita misol keltiradi va hokazo. Natijada, men hatto eng kichik bolalar ham quvnoq baqirishlariga erishdim - suzadi! mantiqiy! etti, besh! pizza, mashina! Ma'ruza paytida men doimo birinchi yoki boshqasini tortaman, aks holda ular tezda burunlarini yig'ib, shiftga qarashadi. Va har bir kishining bilim darajasini vaqti-vaqti bilan tekshirib turish kerak.

Mening shogirdlarim o'zlarining ahmoqligi va kutilmagan aql-zakovati bilan meni hayratda qoldirishdan to'xtamaydilar. Yaxshiyamki, ko'pincha aql bilan.

Men ko'proq yozmoqchi edim, lekin bu shunchaki varaq bo'lib chiqdi. Men barcha savollarga javob berishdan xursand bo'laman. Men har qanday tanqidni har tomonlama mamnuniyat bilan qabul qilaman, faqat sharhlarda bir-biringizga nisbatan bag'rikengroq bo'lishingizni so'rayman. Bu yaxshi maqola.

Manba: www.habr.com

a Izoh qo'shish