Paano ko ituturo ang Python sa mga bata?

Paano ko ituturo ang Python sa mga bata?

Ang aking pangunahing gawain ay nauugnay sa data at programming sa R, ngunit sa artikulong ito gusto kong pag-usapan ang tungkol sa aking libangan, na kahit na nagdudulot ng ilang kita. Ako ay palaging interesado sa pagsasabi at pagpapaliwanag ng mga bagay-bagay sa mga kaibigan, kaklase at kapwa estudyante. Palagi ring naging madali para sa akin na makahanap ng isang karaniwang wika sa mga bata, hindi ko alam kung bakit. Sa pangkalahatan, naniniwala ako na ang pagpapalaki at pagtuturo sa mga bata ay isa sa pinakamahalagang aktibidad sa lahat, at ang aking asawa ay isang guro. Kaya, halos isang taon na ang nakalipas, nag-advertise ako sa isang lokal na grupo sa Facebook, bumuo ng isang grupo at nagsimulang magturo ng Scratch at Python minsan sa isang linggo. Ngayon ay mayroon na akong limang grupo, sarili kong klase sa bahay at indibidwal na mga aralin. Kung paano ako namuhay sa ganitong paraan at eksakto kung paano ko tinuturuan ang mga bata, sasabihin ko sa iyo sa artikulong ito.

Nakatira ako sa Calgary, Alberta, Canada, kaya ang ilang bagay ay magiging mga lokal na detalye.

Ang silid

Ang pagkakaroon ng espasyo para sa pagsasanay ay isang pangunahing alalahanin mula pa noong una. Sinubukan kong maghanap ng mga opisina at silid-aralan na inuupahan ayon sa oras, ngunit hindi ako naging matagumpay. Ang aming unibersidad at SAIT, ang lokal na katumbas ng MIT, ay nag-aalok ng mga klase na mayroon at walang mga computer. Ang mga presyo doon ay naging hindi masyadong makatao, at sa huli ay lumabas na ang unibersidad ay hindi pinapayagan ang mga menor de edad, at ang SAIT sa pangkalahatan ay nangungupahan lamang sa sarili nitong mga mag-aaral. Kaya, ang pagpipiliang ito ay tinanggal. Maraming mga office center na umuupa ng mga meeting room at opisina ayon sa oras, may mga buong kumpanya na nag-aalok ng isang grupo ng mga opsyon mula sa isang buong silid-aralan hanggang sa isang silid para sa apat na tao. Nagkaroon ako ng pag-asa, dahil ang Alberta ay isang probinsya ng langis, kami ay nasa isang matamlay na krisis mula noong 2014, at maraming mga espasyo sa negosyo ang walang laman. Hindi ako dapat umasa; ang mga presyo ay naging napakalaki na hindi ako naniwala sa kanila noong una. Mas madali para sa mga may-ari na maupo sa mga walang laman na opisina at magbayad ng mga gastos kaysa magtapon.

Sa sandaling iyon, naalala ko na regular akong nagbabayad ng aking mga buwis, at kung ang aming mahal na estado, o sa halip, ang lungsod ng Calgary, ay mayroong anumang bagay doon. Meron pala talaga. Ang lungsod ay may mga arena para sa hockey at iba pang figure skating sports, at sa mga arena na ito ay may mga silid kung saan tinatalakay ng mga masungit na mandirigma ng yelo ang mga estratehiya para sa mga laban sa hinaharap. Sa madaling salita, ang bawat arena ay may isang pares ng mga silid na may mga mesa, upuan, isang white board at kahit isang lababo na may isang takure. Ang presyo ay medyo banal - 25 Canadian tugriks bawat oras. Sa una ay nagpasya akong mag-klase sa loob ng isang oras at kalahati, kaya nagtakda ako ng presyo para sa isang aralin sa $35 bawat klase sa isang grupo ng limang tao, para mabayaran ang renta, at maglagay ng isang bagay sa aking bulsa. Sa pangkalahatan, nagustuhan ko ang pag-eehersisyo sa mga arena, nalutas nito ang isa sa mga problema - karamihan sa mga taong nagsasalita ng Ruso ay nakatira sa timog, at nakatira ako sa hilaga ng lungsod, kaya pumili ako ng isang arena na humigit-kumulang sa gitna. Ngunit nagkaroon din ng mga abala. Ang burukrasya ng Canada ay mabuti at palakaibigan, ngunit, sa madaling salita, maaaring medyo malamya. Walang mga problema kapag nasanay ka sa ritmo at nagplano nang maaga, ngunit kung minsan ay lumitaw ang mga hindi kasiya-siyang sandali. Halimbawa, sa website ng lungsod maaari kang maginhawang pumili ng oras at lugar at magpareserba ng kwarto, ngunit hindi ka makakabayad, sa anumang paraan. Sila mismo ang tumatawag sa telepono at tumatanggap ng mga pagbabayad sa card. Maaari kang pumunta sa opisina at magbayad ng cash. May isang nakakatawa ngunit hindi masyadong kaaya-aya na sandali nang naghihintay ako sa kanilang tawag na magbayad para sa ikalawang aralin, hindi ito dumating, at sa huling araw ay labinlimang minuto akong huli sa opisina. Kinailangan kong lumapit sa security na may bastos na mukha at nagsinungaling na naka-book na ang kwarto. Tayong mga taga-Canada ay naniniwala sa aking salita; pinapasok nila ako nang mahinahon at hindi nag-check ng anuman, ngunit hindi ko gagawin iyon kung ang mga tao ay hindi pa papunta sa klase.

Ganito ako nagtrabaho sa taglamig at tagsibol, at pagkatapos ay naganap ang mga pagbabago na huling dayami. Una, ang opisina ay sarado sa mga bisita at nag-alok silang tumanggap ng mga pagbabayad sa pamamagitan ng telepono sa paligid. Umupo ako sa aisle ng kahit kalahating oras bago ako nakalusot. Pangalawa, kung kanina ang aking mahal na tiyahin ay kumuha ng bayad mula sa akin sa loob ng isang oras at kalahati, ngayon ay may isang batang babae na sumagot sa telepono at sinabi na ang pagbabayad ay isang oras lamang. Noong panahong iyon, ang aking grupo ay tatlo o dalawang tao, at ang dagdag na $12.5 ay hindi naman labis. Siyempre, ideolohikal ako, ngunit kung itatapon ako ng aking asawa sa kalye, wala nang magtuturo. Noon pa ako walang trabaho.

At nagpasya akong pumunta sa library. Ang mga aklatan ay nagrenta ng mga magagandang silid na ganap na walang bayad, ngunit mayroong isang catch - hindi ka maaaring magsagawa ng mga komersyal na aktibidad. Kahit ang mga kawanggawa ay bawal mangolekta ng pera doon. Sinabihan ako na hindi ito partikular na kinokontrol, ang pangunahing bagay ay hindi kumuha ng pera sa pasukan, ngunit talagang hindi ko gusto ang paglabag sa mga patakaran. Ang isa pang problema ay ang mga silid ay madalas na okupado at mahirap magsagawa ng mga naka-iskedyul na klase sa isang pagkakataon sa isang lugar. Nagtuturo ako sa mga aklatan sa panahon ng tag-araw at unang bahagi ng taglamig, kailangan kong pumili ng mga may espasyo, at sa huli ay pinalitan ko ang lima o anim na aklatan. Pagkatapos ay nagsimula akong mag-book ng isang lugar dalawang buwan nang maaga, at kahit na noon, nagawa ko lang itong gawin sa isang maliit na library; ang iba ay regular na walang mga lugar para sa kinakailangang oras. At pagkatapos ay nagpasya akong gumawa ng isang klase sa computer sa bahay. Ibinaba ko ang board, bumili ng pangalawang table at ilang lumang monitor mula sa ad. Sa trabaho, binilhan ako ng kumpanya ng bagong makapangyarihang laptop dahil umabot ng halos 24 na oras ang pagsusuri sa aking computer. Kaya, mayroon akong isang bagong lumang computer, isang lumang lumang computer, isang laptop kung saan ang aking maliit na bata ay durog sa screen, at isang sinaunang netbook kung saan ako mismo ang durog sa screen. Ikinonekta ko silang lahat sa mga monitor at nag-install ng Linux Mint sa lahat ng dako, maliban sa netbook, kung saan nag-install ako ng napakagaan na distribution kit, tila, Pappy. Mayroon pa akong lumang bagong laptop, binili sa halagang $200, ikinonekta ko ito sa TV. Ang mahalaga rin ay pinalitan kamakailan ng aming may-ari ang aming mga bintana, at sa halip na ang kakila-kilabot, gumuguhong dumi sa silid, mayroon na kaming mga bagong puting frame. Ang aking asawa ay nagpapanatili ng sala, kusina at pangalawang silid para sa isang kindergarten, kaya ang buong palapag ay naging puro pedagogical. Kaya, ngayon ay maayos na ang lahat sa lugar, magpatuloy tayo sa pagtuturo.

scratch

Nagsisimula akong magturo ng mga pangunahing kaalaman sa programming gamit ang Scratch language. Ito ay isang wika na gumagamit ng mga handa na bloke, na naimbento sa isang pagkakataon sa MIT. Karamihan sa mga bata ay nakakita na ng Scratch sa paaralan, kaya mabilis nilang pinupulot ito. May mga nakahandang programa at mga lesson plan, ngunit hindi ko gusto ang mga ito. Ang ilan ay kakaiba - lumikha ng iyong sariling kuwento, halimbawa. Ang buong programa ay binubuo ng hindi mabilang na mga bloke say '<...>' for 2 seconds. Makikita na ito ay naimbento ng napaka-creative na mga indibidwal, ngunit sa ganitong paraan maaari mong ituro kung paano sumulat ng klasikong Indian spaghetti code. Sa simula pa lang ay pinag-uusapan ko ang mga prinsipyo tulad ng D.R.Y. Ang iba pang mga koleksyon ng mga gawain ay medyo mahusay, ngunit ang mga bata ay mabilis na nasanay at nagsimulang gawin ang mga ito tulad ng isang machine gun. Bilang resulta, ginagawa nila sa isang aralin ang dapat nilang gawin sa lima. At ang paghahanap at pagpili ng mga gawain ay nangangailangan ng maraming personal na oras. Sa pangkalahatan, ang Scratch ay higit na nakapagpapaalaala hindi sa isang wika, ngunit sa isang IDE, kung saan kailangan mo lamang tandaan kung saan mag-click at kung saan hahanapin kung ano. Sa sandaling mas komportable na ang mga mag-aaral, sinusubukan kong ilipat sila sa Python. Maging ang aking pitong taong gulang na batang babae ay nagsusulat ng mga simpleng programa sa Python. Ang nakikita ko bilang benepisyo ng Scratch ay naglalaman ito ng mga pangunahing konsepto na natutunan sa mapaglarong paraan. Para sa ilang kadahilanan, napakahirap para sa lahat, nang walang pagbubukod, na maunawaan ang ideya ng isang variable. Sa una ay mabilis kong binalak ang paksa at lumipat hanggang sa napaharap ako sa katotohanan na hindi nila alam kung ano ang gagawin tungkol dito. Ngayon gumugugol ako ng maraming oras sa mga variable at patuloy na bumalik sa kanila. Kailangan mong gumawa ng ilang hangal na pagmamartilyo. Binabago ko ang iba't ibang mga variable sa screen at pinapasabi ko ang kanilang mga halaga. Ang scratch ay mayroon ding mga istruktura ng kontrol at mga pagsusuri sa halaga, gaya ng while, for o if sa sawa. Ang mga ito ay medyo madali, ngunit may mga problema sa mga nested loop. Sinusubukan kong magbigay ng ilang mga gawain na may isang nested loop, at upang ang pagkilos nito ay malinaw. Pagkatapos nito ay lumipat ako sa mga pag-andar. Kahit na para sa mga matatanda, ang konsepto ng pag-andar ay hindi halata, at higit pa para sa mga bata. Nagpatuloy ako nang mahabang panahon tungkol sa kung ano ang isang function sa pangkalahatan, pinag-uusapan ko ang tungkol sa isang pabrika na tumatanggap ng mga item bilang input at naglalabas ng mga kalakal, tungkol sa isang kusinero na gumagawa ng pagkain mula sa mga hilaw na sangkap. Pagkatapos ay gumawa kami ng isang "gumawa ng sandwich" na programa na may mga produkto, at pagkatapos ay gumawa kami ng isang function mula dito, kung saan ang mga produkto ay ipinasa bilang mga parameter. Tinatapos ko ang pag-aaral ng mga function gamit ang Scratch.

Python

Sa python ang lahat ay mas simple. Mayroong isang magandang aklat na Python for Kids, kung saan ako nagtuturo. Ang lahat ay pamantayan doon - mga linya, pagkakasunud-sunod ng mga operasyon, print(), input() atbp. Isinulat sa madaling salita, may katatawanan, gusto ito ng mga bata. Ito ay may isang kapintasan na karaniwan sa maraming mga libro sa programming. Tulad ng sa sikat na biro - kung paano gumuhit ng kuwago. Oval - bilog - kuwago. Ang paglipat mula sa mga simpleng konsepto patungo sa medyo kumplikadong mga konsepto ay masyadong biglaan. Tumatagal ako ng ilang session upang ilakip ang bagay sa paraan ng tuldok. Sa kabilang banda, hindi ako nagmamadali, inuulit ko ang parehong bagay sa iba't ibang paraan hanggang sa kahit ilang larawan ay magkasama. Nagsisimula ako sa mga variable at i-martilyo muli ang mga ito, sa pagkakataong ito sa Python. Ang mga variable ay uri ng isang sumpa.

Isang matalinong mag-aaral, na ilang buwan na ang nakalipas ay mabilis na nag-click sa mga variable sa Skratch, mukhang isang ram sa bagong gate at hindi maaaring magdagdag ng X kasama ang Y, na malinaw na nakasulat sa board ng isang linya sa itaas. Ulitin namin! Ano ang mayroon ang isang variable? Pangalan at kahulugan! Ano ang ibig sabihin ng equal sign? assignment! Paano natin susuriin ang pagkakapantay-pantay? Double equals sign! At paulit-ulit natin itong inuulit hanggang sa ganap na kaliwanagan. Pagkatapos ay lumipat kami sa mga function, kung saan ang paliwanag tungkol sa mga argumento ay tumatagal ng pinakamatagal. Pinangalanang argumento, ayon sa posisyon, bilang default, at iba pa. Hindi pa kami nakakaabot ng mga klase sa alinmang grupo. Bilang karagdagan sa Python, pinag-aaralan namin ang mga sikat na algorithm mula sa aklat, higit pa sa susunod.

Actually, training

Ang aking aralin ay nakabalangkas tulad nito: Nagbibigay ako ng teorya sa loob ng kalahating oras, sinusubok ang kaalaman, at pinagsasama-sama ang mga natutunan. Oras na para sa labs. Madalas akong nadadala at nagsasalita ng hanggang isang oras, tapos may kalahating oras pa para sa practice. Noong nag-aaral ako ng python, pinanood ko ang kurso Mga Algorithm at Istruktura ng Data Khiryanov mula sa MIPT. Talagang nagustuhan ko ang kanyang presentasyon at ang istraktura ng kanyang mga lektura. Ang kanyang ideya ay ito: ang mga balangkas, syntax, mga aklatan ay nagiging lipas na. Arkitektura, pagtutulungan ng magkakasama, mga version control system - maaga pa. Bilang resulta, nananatili ang mga algorithm at istruktura ng data na kilala sa mahabang panahon at palaging nasa katulad na anyo. Ako mismo ay naaalala lamang ang mga integer mula sa institute pascal. Dahil karamihan sa mga estudyante ko ay mga bata pa, mula pito hanggang labinlimang taong gulang, naniniwala ako na mas mahalaga para sa kanilang kinabukasan na maglagay ng pundasyon kaysa sa mabilisang magsulat ng platform game sa Python. Bagaman, mas gusto nila ang isang platformer, at naiintindihan ko sila. Binibigyan ko sila ng mga simpleng algorithm - isang bubble, binary na paghahanap sa isang pinagsunod-sunod na listahan, baligtarin ang Polish notation gamit ang isang stack, ngunit sinusuri namin ang bawat isa nang detalyado. Ito ay lumabas na ang mga modernong bata ay hindi alam sa prinsipyo kung paano gumagana ang isang computer, sasabihin ko rin sa iyo. Sinusubukan kong pagsamahin ang ilang mga konsepto sa bawat lecture. Halimbawa, isang computer - memory/porsiyento - memorya na binubuo ng mga cell (papahintulutan kitang hawakan ang memory chip, hulaan kung gaano karaming mga cell ang mayroon) - bawat cell ay parang bombilya - mayroong dalawang estado - true/false - at/o - binary/decimal - 8bit = 1 byte - byte = 256 na opsyon - lohikal na uri ng data sa isang bit - integer sa isang byte - float sa dalawang byte - string sa isang byte - ang pinakamalaking bilang sa 64 bits - isang listahan at isang tuple mula sa mga nakaraang uri. Gumawa ako ng reserbasyon na sa isang tunay na computer ang lahat ay medyo naiiba at ang dami ng memorya para sa mga uri ng data na ito ay naiiba, ngunit ang pangunahing bagay ay na tayo mismo sa proseso ay lumikha ng mas kumplikadong mga uri ng data mula sa mas simple. Ang mga uri ng data ay marahil ang pinakamahirap na tandaan. Kaya naman sinisimulan ko ang bawat aralin sa isang mabilis na warm-up - pinangalanan ng isang estudyante ang uri ng data, ang susunod ay nagbibigay ng dalawang halimbawa, at iba pa sa isang bilog. Bilang resulta, nakamit ko na kahit ang mga bunsong bata ay masayang sumisigaw - lumutang! boolean! pito, lima! pizza, kotse! Sa panahon ng isang panayam, palagi kong hinihila ang isa o ang isa pa, kung hindi man ay mabilis nilang sinimulan ang kanilang mga ilong at tumingin sa kisame. At ang antas ng kaalaman ng bawat isa ay kailangang suriin paminsan-minsan.

Ang aking mga estudyante ay hindi tumitigil sa paghanga sa akin, kapwa sa kanilang katangahan at hindi inaasahang katalinuhan. Sa kabutihang palad, mas madalas na may katalinuhan.

Gusto kong magsulat ng higit pa, ngunit ito ay naging isang sheet lamang. Ako ay magiging masaya na sagutin ang lahat ng mga katanungan. Tinatanggap ko ang anumang pagpuna sa lahat ng posibleng paraan, hinihiling ko lamang sa iyo na maging mas mapagparaya sa bawat isa sa mga komento. Ito ay isang magandang artikulo.

Pinagmulan: www.habr.com

Magdagdag ng komento