Iga programmeerimise aluseks on... pusled

Tere, Habrovtsid!

Selles artiklis tahan jagada oma kogemust C++ programmeerimise õpetajana tehnikaülikooli kolledžis. See oli elus ainulaadne kogemus, mis õpetas mind palju. Kui mõelda huvitavatele faktidele oma isiklikust minevikust, tuleb see elulõik meelde kohe üks esimesi.
Hakkame pihta.

Esiteks natuke endast.
2016. aastal lõpetasin instituudi punase diplomiga spetsialiteediga 'Automatiseeritud süsteemide infokaitse'. Õpingute ajal õnnestus mul korduvalt oma potentsiaali realiseerida teadusartiklite kirjutamises, konkurssidel ja rahastustes osalemises. 2015. aastal sain Venemaa noorte teadlaste konkurssi 'UMNIK' võitjaks. 2016. aastal, enne oma õpingute lõpetamist, töötasin suures organisatsioonis, ametikohal 'Infokaitse, krüptograafia ja krüpteerimise spetsialist'.
Kokkuvõttes oli see umbes nii. Võib öelda, et programmeerimisest olid mul siiski mingi arusaam.

Ja ja on 2017. aasta. Doktorantuur. Mind paluti semestri jooksul õpetada kolledžis C++, mille eest lubati häid boonuseid doktorandi koormuse vähendamiseks ja mitte midagi enamat.

Ausalt öeldes oli mul siiralt huvitav end selles rollis proovile panna.

Esimene paar
September. Esimene õppenädal. Minu juurde tulid üliõpilased. 'Kõige ulakas grupp' - nii neid kutsuti.
23 inimest. 'Programmeijad'.

Kuna seda nõutakse, tutvustasin ennast. Rääkisin neile tagasihoidlikult osa "Natuke endast" sisust...
Seejärel algas õudus. Küsimusele "Mida te oskate?" vastasid üliõpilased (nimetame neid edaspidi nii), et nad oskavad natuke rohkem kui mitte midagi (no see tähendas, et mõned neist teadsid, kuidas MS VS välja näeb ja oskasid luua projekti 'Tere maailm')... Programmeijad. Viimane kursus...

Seejärel selgitasid nad detailselt, 'värvikalt', et neid ei ole millegi jaoks õpetatud ja et nad on programmeerimises pettunud...

Peaaegu kõik päevad enne järgmist tundi möödusid mul nii:
Iga programmeerimise aluseks on... pusled

… kuid päev enne tekkis idee suunata jõud olukorra parandamiseks noorte mõtetes ja teadlikkuses. Ja siis "Ostapa viidi kõrgele".

Sissejuhatus programmeerimisse
Järgmisele tunnile tõin… pusle.
Jah-jah. Pusle. „Kuidas dragonit taltsutada“. Reeglid olid lihtsad. Grupp jagati kolme meeskonda. Igal meeskonnal oli oma osa. Ühed — mets, teised — maapind, kolmandad — draakon pildi keskel. Kui nad kogu paaris puslet kokku panid, rääkisin ma, et pusle kokkupanek on ka programmeerimine, et programmeerijad kasutavad sageli teiste koodi, et igas projektis on mitu erinevat meeskonda, funktsioone, mooduleid…
Aja jooksul liitus protsessiga ka kõige unisemad õpilased.
Kui lõpetasin programmeerimise ideest rääkides äri, protsesside ja… puslede üle, oli aeg kehtestada õpingureeglid.
Iga tunni jaoks pidi iga õpilane kirjutama oma vihikusse 10 IT-termi. Igapäevaselt. Igal on omad. Mõte on selles, et võtsin ühe õpilase vihiku, leidsin nende seas maksimaalselt praktilised ja küsisin nendelt teiselt üliõpilaselt. Kui teine üliõpilane ütles: "Ma seda terminit ei kirjutanud," ei olnud see karistatav (üldiselt mõistlik), kuid see üliõpilane pidi üles kirjutama "puuduolevad" terminid (nagu kõik, kellel neid ei olnud) ja leidma nende tähendused järgmiseks tunniks.

Nii me tegime. Iga tund algas energilise loosimisega kahe-kolme õpilase osas. Poisid olid selle protsessi suhtes vaimustunud.

Tundide teemad
Alustades õppimist on väga oluline anda õppijatele head kirjandust. Minu arvates oli ideaalne õpik:
Iga programmeerimise aluseks on... pusled

Oli aeg, mil pidin selle kõrvuti Microsoft Visual Studio'ga salaja läbi lugema. Siis suutsin programmeerimist peaaegu nullist mõista. Ideaalne variant.

Sisened tagasihoidlikult üliõpilaste juurde ja ütled: "Kuna soovite saada programmeerijateks, peate lihtsalt lugema ja proovima kõike, mis on selles raamat, " ja viskad raamatu lauale. Peamine on mitte segi ajada raamatute sisu oma seljakotis…

Iga teema eel pean ma kindlasti põhjalikult ette valmistama. Lugesin sama Lafore'i ja veel mitmeid huvitavaid allikaid internetist.
Oli peaaegu hädavajalik seletada algusest peale. Samuti tuli deduktiivselt aru saada, kus tudengitel on baas teadmiste puudujääk.
Massiivid -> Mälu haldamine (konstruktorid) -> Viidatud muutujad -> Kuidas mälu töötab -> Ahnus -> Mis on füüsiline andmekandja -> Binaarne andmete esitus…
Iga programmeerimise aluseks on... pusled

Väga tõsine põhimõtete ja faktiliste teadmiste crash-test programmeerimisest. Ma ei ole enam programmeerija, ma olen ajaloolane!

Ja nii, ajaloos toimuvad lahingud mitu korda järjest. Ühel päeval astub meie kabineti sisse osakonna sekretär, vaatab gruppi, silmad suurenenud ja sulgeb ukse. Kuidas mulle hiljem öeldi, oli ta šokis, et SEE grupp istus nii vaikselt ja kuulas mind nii tähelepanelikult… Tšau, lihtne.

Laboratoorsed tööd
Esimesed praktilised teadmised — esimesed "laborid". Kogu semestri jooksul sooritas grupp 10 laboratoorset tööd. Esimestes tehti kõige lihtsamaid konsoolitöid. a+b, ja viimastes - kirjutati, kuigi konsoolipõhised, aga piisavalt huvitavad rakendused, nagu näiteks mõne suvalise määratud funktsiooni integraali väärtuse arvutamine ühe kolmest meetodist - umbes samasugused ülesanded olid lõputöös.

Aga vastuvõtu lähenemine ei oli harjumuspärane. Kogu õpingute ajal instituudis pidin silmitsi seisma sellega, et olla tark ja suuta esitada aruandeid - see ei tähenda sama asja. See ei sobinud mulle üldse.

— Poisid, ma mõtlesin natuke. Teeme „mõisted” selgeks. Kui keegi teist arvab, et programmeerimine ei ole talle vajalik - uks on seal. Ma õpetan teile tasuta. Mul on soov näha siin ainult uudishimulikke, mitte ükskõikseid ja mitte ükskõiksuse täis entusiaste. Kõiki teisi palun mitte kulutada meie ühisaega - ütlesin ma laboritööde vastuvõtmise esimesel päeval. Pärast seda lõpetas 5 inimest kohe tundide külastamise. See oli loogiline ja oodatud. Ülejäänutega oli võimalik midagi mõistlikku teha.

— ... mul ei ole huvitav vaadata, kuidas keegi tegi teie töö, et lihtsalt ära anda. Te võite mitte olla programmeerijad, aga inimestena peate minu tundides olema. peab olema.

See nägi välja nii:

case tiptop

Üks õpilane istub minu juurde tööd esitama.
— Tehakse ise?
— Jah.
— Mis see on?
— *vastab õigesti*.
*Küsin veel paari asja. Vastab õigelt*
— aktsepteeritud. Suurepärane.

case jutuvestja

— Tehakse ise?
— Jah.
— Mis see on?
— *vastab vale või ei vasta*.
*Küsin veel paari asja. Sama tulemus*
— EI aktsepteeritud. MITTE HEA. Ootan uuesti eksamit.

case hea õpilane

— Tehakse ise?
— Jah.
— Mis see on?
— *vastab õigesti, kuid mitte kindlalt, liigub*.
*Küsin veel paari asja. Sama tulemus*
— aktsepteeritud. Hästi.

case ühtlane kolmene

— Tehakse ise?
— Ei.
— Miks?
— Raske. Mind aitas… *nimetab ausalt grupist tiptop üliõpilast*
— Kas said aru?
— Jah, peaaegu kõik aru sain.

— Mis see on?
— *vastab õigesti*.
*Küsin veel paari asja. Vastab enam-vähem õigesti, vahel täiesti mööda, olgu isegi 50-50 õige ja vale*
— aktsepteeritud. Hästi.

Ülejäänud juhtumeid ei ole mõtet kirjeldada. Jah, „hea õpilane“ võib olla rahulolematu, et „kolmene“ saab sama hinna, tuginedes aususele. Sel hetkel sõltub kõik tujust. Kas ma palun „hea õpilase“ vaadata alla, sest „praegu annan ma natuke tarkust“, ja seejärel selgitan lähenemist, kirjeldan, mis elus on suurem väärtus, ja selgitan, et „kolmesel“ oli palju raskem sooritada kui temal, „hea õpilasel“, jne…
… või, nagu kunagi, ma joonistan väikese hamba ajakirja lahtrisse selle rahulolematuse juurde ja järgmine kord täiendavalt isiklikult tema jaoks laboritööd. Lihtsalt nii. Et sõpru "välja ei lülitaks".

Iga programmeerimise aluseks on... pusled

Hinnangud
Õppeprotsess, nagu kogu maailm, on täpselt täis hindasid ja hinnanguid.
Üliõpilased on ka inimesed, aga "piire", minu arvates, oleks pidanud "raputama" ka siin.
Semestri jooksul anti kõigile Boonusülesanne. Registreeruda github.com, laadige sinna üles tühi projekt C++ keeles, tehke 2 uuendust, pange need kirja ja pushige. Nende tegevuste eest määrati 15. Jah, jah, mitte 4, mitte 5, vaid 15. Kolm inimest said aru. Üliõpilase psüühika oli veel kuidagi arusaadav, kuid siis juhtus teine juhtum.
Kord viidi meie tund nii edasi, et sellest sai viimane, ja veel selle kaudu akna. Siiski tuli sinna 15 inimest. Uue teema selgitamine sellise kangelase pärast ei olnud minu jaoks soovitav, kuna olime juba teemas piisavalt edasi liikunud + järgmine teema ei olnud väsinud ajudeks (minu ja õpilaste) kuigi lihtne. Siis otsustasin rääkida filosoofiast.

— Anname teada erakordsest heldusest. Kõik ütlevad mulle, millise hinde ma tänasele paarile panen.
Kõik tahtsid «viit».
— Looge, et on juba olemas, — ütlesin mina. Kõik rõõmustasid.
Vaikus.
— Aga miks keegi ei tahtnud 7-ku või 10-ku?
Kõik vaatasid mind imestunult ja hakkasid rumalalt naerma.
— Kas Te tõesti panete? Ajalehte?! — kostus hääl tagumiselt pingilt.
— Lihtne! — ütlesin ma, — kuulutan välja terminite kiirküsimise, kes vastab 10 minu küsimusele — panen 20 ajalehte, ilma petta, kes ei vasta — sellel -10 (miinus kümme).

«Meeskond ärkas ellu, vaidlus algas», kõigil olid ausalt teenitud hinded. Kaks tõusid esile. Väikeste ebatäpsustega vastasid nad kordamööda 10 küsimusele, mis puudutasid süstikut, järjekorda, konstruktorit, destruktorit, prügiserijat, kapseldamist, polümorfismi, räsifunktsioone…
Igaühele joonistati ajalehte 20… aga ajalehe ja hindade tähtsus langes igaühe silmis. Nüüd kahetsen, et ei küsinud, kas nad tahaksid oma hinde kellegagi «jagada». Mul on tunne, et nad oleksid jaganud… Alates sellest hetkest andis igaüks oma «laboratooriumi» teadmiste ja aususega.

Sellest hetkest alates ilmus veel üks labori sooritamise tüüp:


kui aus olla, siis ei ole ta, aga ta üritas

— Tehakse ise?
— Ei.
— Miks?
— Raske. Mind aitas… *nimetab ausalt grupist tiptop üliõpilast*
— Kas said aru?
— Sergei Nikolajevitš, ma ütlen ausalt — ma ei saa aru, ma ise kirjutasin iga rea vastas kommentaarid — see ei ole minu jaoks, ma hakkan traktorijuhiks
— Mis see on?
— *loeb rea vastas olevat kommentaari*.
— …
— …
— Kuidas erineb Belarus MTZ Don 500-st ja K700-st?
— ??!.. Esimene — Minskis toodetud rehvidelt töötav traktor, mida kasutatakse sageli kergemate ja keskmiste põllumajandustoimingute jaoks. Sellel on ees väikesed ja taga suured rattad. Don 500 — see on peamiselt koristustraktor, ja K-700 "Kirovets" — Nõukogude rehvidelt töötav universaalne traktor, millel on kõrge läbitavus ja tõstevõime klass 5.
— Selge. Hästi (!!!).
— Aitäh, Sergei Nikolajevitš!!!

Minu kodumaal rääkida traktorist on peaaegu sama, mis siin SOLID-ist.

Geniuses
Mul oli klassis Genius. Üks üliõpilane hilines väga esimesest loengust ja ei hakanud koos teistega puslet kokku panema. Siis palusin tal teha seda, mida kõigi jaoks oli järgmises tunnis plaanitud — kirjutada paberile endast, millega ta tegeleb, mis teda huvitab. Tulemuseks oli "Genius" puhul 2-3 rida: midagi stiilis "tunnen elu mõttetu olemust"…

… Oh, jumal, mu grupis on ühel hetkel nii Laozi kui ka Kojima …
Iga programmeerimise aluseks on... pusled

Oma üllatuseks vastas ta esimestel kahel paaril tõeliselt säravalt terminite küsimustele, kuid mõju ei kestnud kaua. "Genius" lõpetas loengutest osavõtmise ning järgmine kord tuli ta ainult esimeseks laboritööks, mille ta edukalt ei sooritanud objektiivsetel põhjustel. Seejärel, seoses puudumistega, kogunesid tal loomulikult võlad, mida ta pidas ma lihtsalt pidin talle arvestama, nii-öelda, "vendlikult".
Tundide puudumine + üleolev enesehinnang olid vastuolus minu loengute osalemise printsiipidega. "Geniusel" oli ainult kaks väljapääsu — rehabiliteeruda (oodatav tee) või mitte vaeva näha ja loota dekanaadi seitsmest, et vabastatakse logeleja.
Noh, see ju on "Genius"… siin tuleb käituda "geeniuslikult". See noormees ei leidnud midagi paremat, kui kirjutada VK-s (kus olin mina ja kõik selle grupi tudengid) raevunud tirade, mis oli täis vandumist ja solvangut minu aadressil.

Hmm… Pettumus.
Mind blowing was the fact that before the disciplinary process led by the college management was completed, he decided to apologize to me. For what? — I genuinely don't understand. At that point, I had long been independent of criticism, especially such openly foolish criticism. My personality wasn't affected, but processes are processes, and as a teacher, I had to report it. It turned out that during his studies, so many complaints had accumulated against him that this case became the last straw. He was expelled from the final year of vocational college.
Perhaps he has long been watching me through the scope of a sniper rifle, but honestly, I don't care.
Oh, genius, how heartless you are…

Epilog
Minu õpetamiskogemus oli üks õpetlikumaid. See aitas mul kinnistada oma põhiteadmisi programmeerimisest, mis ma sain oma õpingute ajal. Tundsin, et olen valitud erialas kindel (olemasolevate erialade spekter). Erilised on hetked, mil "kõige ulakam grupp" tundis minu vastu austust ja sõbralikkust — see on tõeliselt väärtuslik. Leidsin tee nende sisemiste uuendajateni, püüdes edastada reaalsust, mitte neid šabloonprioriteete. Kahju, et me ei jõudnud „puzzle’it“ koodimises teha — kui igaühel oleks olnud oma koodiosi ja, ühendades kõik osad, oleksime saanud suure tööprogrammi...
Loodan, et kunagi tunneb igaüks neist seda... aga seni on siin all mõned screenshot'id, mis sisaldavad arvamusi mitmest üliõpilasest kaks aastat hiljem.

Iga programmeerimise aluseks on... pusled

Kuidagi on veel vara teha järeldusi kellegi programmeerijakarjääri edust, kuna praegu õpib suurem osa sellest grupist kõrgkoolis. Aeg näitab.

Loodan, et artikkel oli kasulik. Aitäh tähelepanu eest!
Loovust ja positiivset meeleolu, kolleegid!

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster