Osnova vsakega programiranja na… puzzle

Pozdravljam vas, Habranci!

V tem članku želim deliti svoje izkušnje kot učitelj programiranja v C++ na kolidžu tehnične univerze. To je bila edinstvena izkušnja v življenju, ki me je veliko naučila. Ko gre za zanimive dejstva iz osebne preteklosti, mi ta del življenja pride na misel med prvimi.
Gremo.

Najprej malo o sebi.
Leta 2016 sem diplomiral z rdečo diplomo na področju 'Informacijska varnost avtomatiziranih sistemov'. Med študijem sem se večkrat izkazal pri pisanju znanstvenih člankov, sodelovanju v tekmovanjih in pridobivanju štipendij. Leta 2015 sem osvojil prvo mesto na vseruskem tekmovanju mladih znanstvenikov 'UMNIK'. Leta 2016, še pred koncem študija, sem se zaposlil v veliki organizaciji v mestu kot 'Specialist za informacijsko varnost, kriptografijo in šifriranje'.
Na kratko, tako je bilo. Lahko si predstavljate, da sem imel o programiranju vsaj nekaj predstave.

In evo leto 2017. Podiplomski študij. Prosbili so me, naj celo semestra poučujem C++ na kolidžu, za kar so mi obljubili lepe bonuse za olajšanje breme podiplomca, pa še nič drugega.

Iskreno povedano, bilo mi je iskreno zanimivo preizkusiti se v tej vlogi.

Prva ura
September. Prvi šolski teden. Prišli so do mene študenti. 'Najbolj nepokorna skupina' - tako so jih klicali.
23 ljudi. 'Programerji'.

Kot je običajno, sem se najprej predstavil. Zadržano sem jim pripovedoval vsebino dela 'Najprej malo o sebi'...
Potem se je začelo strašno. Na vprašanje 'Kaj znate?' so študenti (torej jih bomo odslej tako imenovali) odgovorili, da znajo malo več kot nič (to je pomenilo, da so nekateri vedeli, kako izgleda MS VS in so lahko ustvarili projekt 'Hello world')... Programerji. Zadnji letnik...

Nato so podrobno, 'v barvah' pojasnili, da jih ničesar niso naučili in da so v programiranju sploh razočarani...

Skoraj vsi dnevi do naslednjega srečanja so minevali tako:
Osnova vsakega programiranja na… puzzle

... vendar dan pred njim se je pojavila ideja, da bi poskušal spremeniti situacijo v glavah in zavesti te mladine. In potem se je 'Ostapa odpeljalo'.

Uvod v programiranje
Na naslednje srečanje sem prinesel... sestavljanko.
Da-da. Puzzle. 'Kako ukrotiti zmaja'. Pravila su bila jednostavna. Grupa je bila podeljena u 3 tima. Svaki tim je skupljao svoj deo. Jedni — šuma, drugi — zemlja, treći — zmaj u centru slike. Dok su svi zajedno sastavljali puzzle, pričao sam šta sastavljanje puzzli — to je takođe programiranje, da programeri često koriste tuđi kod, da u svakom projektu ima nekoliko različitih timova, funkcija, modula…
Postepeno su se procesu pridružili i najleniji studenti.
Kada sam završio objašnjavanje ideje programiranja u kontekstu biznisa, procesa i… puzzli, došlo je vreme da postavimo pravila učenja.
Na svakoj lekciji svaki student je morao da zapiše 10 termina iz IT-a u svesku. Bilo koji. Svako svoje. Poanta je bila da uzmem svesku jednog studenta, pronađem među svim terminima maksimalno praktične i da pitam drugog studenta za njih. Kada drugi student kaže ‘Nisam zapisao taj termin’, to nije bilo kažnjivo (zbog zdravog razuma), ali taj student je morao da zapiše ‘nedostajuće’ termine (kao i svi koji ih nisu imali) i da pronađe njihova značenja do sledeće lekcije.

Tako smo i postupili. Svaka lekcija počinjala je sa nekim nasumičnim izborom dvoje-troje studenata. Momci su bili motivisani ovim procesom.

Teme lekcija
Kada započinjete obuku, veoma je važno dati učenicima dobru literaturu. Po mom mišljenju, savršeni priručnik bila je knjiga:
Osnova vsakega programiranja na… puzzle

U svoje vreme, morao sam je potajno pročitati u zagrljaju sa Microsoft Visual Studio. Tada je bilo moguće razumeti programiranje praktično od nule. Savršen izbor.

Pristupite skromno studentima i recite: 'Da biste postali programeri, dovoljno je da pročitate i isprobate sve što je u ovoj knjizi', i bacite knjigu na sto. Glavno je — ne pomešati knjige u svom rancu…

Pre svake teme, naravno, morao sam temeljno da se pripremim. Čitao sam istog Lafore-a i još nekoliko zanimljivih izvora sa Interneta.
Objašnjavanje je ponekad moralo da ide gotovo od osnova. Pri čemu je trebalo da se deduktivno utvrdi gde studenti imaju praznine u osnovnim znanjima.
Nizovi -> Rad sa memorijom (konstruktori) -> Reference -> Kako funkcioniše memorija -> Skladišta -> Šta je fizičko skladište -> Dvojno predstavljanje podataka…
Osnova vsakega programiranja na… puzzle

Zelo zahtevna preizkušnja znanja osnovnih dejstev o programiranju. Ne morem več trditi, da sem programer, sem zgodovinar!

Tako, zgodovinske bitke se odvijajo že več parov zapored. Nekega dne v našo sobo pride tajnica z oddelka, in ko zagleda skupino, ji oči postanejo široke, strmi in zapre vrata. Kot so mi kasneje sporočili, je bila v šoku, da je TA skupina sedela tako tiho in tako pozorno poslušala… O, enostavno.

Laboratorijske naloge
Prvi praktični podatki — prvi "labi". V enem semestru je skupina opravila 10 laboratorijskih nalog. V prvih so izvajali najpreprostejše konzolne a+b, v zadnjih pa so pisali, čeprav konzolne, vendar dovolj zanimive aplikacije, kot so izračuni vrednosti integrala nekaterih poljubno določenih funkcij z eno od treh metod — podobne naloge so bile na zaključnem preverjanju — diplomski nalogi.

Toda pristop k sprejemu ne je bil običajen. Med študijem na inštitutu sem se srečeval z dejstvom, da biti pameten in znati oddati poročila ni isto. To me je globoko razburjalo.

— Fantje, pomislil sem. Poglejmo, kako bi zgradili "pojmovne" odnose. Če kdo od vas meni, da programiranje ni potrebno — vrata so tam. Učim vas brezplačno. Rad bi videl tukaj le radovedne, zaskrbljene in predane entuziaste. Vse ostale prosim, da ne zapravljajo skupnega časa — sem rekel prvega dne sprejema laboratorijskih nalog. Po tem je 5 ljudi takoj prenehalo obiskovati predavanja. To je bilo smiselno in pričakovano. Z ostalimi je bilo mogoče poskusiti narediti nekaj smiselnega.

— … ni mi zanimivo gledati, kako vam je nekdo naredil nalogo, dokler jo le oddate. Morda niste programerji, vendar boste morali v mojem razredu.

to biti.

Izgledalo je tako:

case odličen student
Prihaja k meni študent, da odda nalogo.
— Si jo naredil sam?
— Da.
— Kaj je to?
— *pravi odgovor*.
*Vprašam še za nekaj podrobnosti. Odgovarja pravilno*

— sprejeto. Odlično.

Prihaja k meni študent, da odda nalogo.
— Si jo naredil sam?
— Da.
case blefer
— *odgovori NEpravilno / ne odgovori*.
*Vprašam še za nekaj podrobnosti. Rezultat je enak* — NE sprejeto. NEUSPEH.

Čakam na ponovni izpit.

Prihaja k meni študent, da odda nalogo.
— Si jo naredil sam?
— Da.
case dober študent
— *odgovori NEpravilno / ne odgovori*.
— *odgovarja pravilno, vendar ne samozavestno, plava*.

— sprejeto. Dobro.

Prihaja k meni študent, da odda nalogo.
— Ne.
— Zakaj?
case povprečen študent s trojko ali "tričko". — Težko. Pomagal mi je… *iskreno omeni odličnega študenta iz skupine*
— Siapa yang berurusan?
— Ya, saya hampir mengerti semuanya.

— Da.
— Kaj je to?
*Saya bertanya tentang beberapa hal. Dia menjawab lebih kurang benar, terkadang sepenuhnya salah, meskipun 50% benar dan tidak benar*
— *odgovarja pravilno, vendar ne samozavestno, plava*.

Tidak perlu menjelaskan semua kasus lainnya. Ya, si ‘baik’ mungkin tidak senang bahwa si ‘cukup’ mendapatkan penilaian yang sama, hanya mengandalkan kejujuran. Tapi keputusan itu tergantung pada suasana hati. Entah saya meminta si ‘baik’ untuk melihat ke bawah, karena ‘sekarang saya akan memberikan sedikit kebijaksanaan’, dan kemudian saya akan menjelaskan inti dari pendekatan tersebut, menggambarkan bahwa dalam hidup ada hal yang lebih berharga dan menjelaskan bahwa si ‘cukup’ jauh lebih sulit untuk lulus dibandingkan dia, si ‘baik’, dan seterusnya...
… atau, seperti dosen saya dulu, saya akan menggambar gigi kecil di kolom jurnal di sebelah yang tidak senang dan di lain waktu akan secara pribadi melengkapi tugas laboratorium untuknya. Hanya begitu. Agar tidak ‘mematikan’ teman-temannya.

Osnova vsakega programiranja na… puzzle

Nilai
Proses belajar, seperti dunia, benar-benar tenggelam dalam harga dan penilaian.
Mahasiswa juga manusia, namun ‘batasan’, menurut saya, perlu ‘dicoba’ di sini.
Selama semester, semua diberi tugas bonus. Mendaftar di github.com, mengunggah proyek kosong C++, melakukan 2 pembaruan, mengirimkan dan mem-push. Untuk tindakan ini, diadakan 15. Ya, bukan 4, bukan 5, tapi 15. Tiga orang berhasil. Ini agak masuk akal untuk tipe psikologi mahasiswa, tetapi kemudian ada kasus lain.
Suatu ketika, kelas kami dipindahkan sehingga menjadi yang terakhir, bahkan dengan jendela kosong. Namun tetap saja 15 orang hadir. Saya tidak ingin menjelaskan tema baru demi keberanian seperti itu, karena kami sudah cukup maju dalam topik + tema berikutnya tidak terlalu mudah untuk otak yang lelah (saya dan siswa). Maka saya memilih untuk berbicara tentang filosofi.

— Saya mengumumkan atraksi kedermawanan yang belum pernah terjadi sebelumnya. Semua orang memberi tahu saya nilai apa yang harus saya berikan untuk kelas hari ini.
Semua ingin mendapatkan ‘lima’.
— Anggap saja sudah ada, — kata saya. Semua senang.
Kesunyian.
— Kenapa tidak ada yang ingin 7-nya atau 10-nya?
Semua melotot dan mulai tersenyum bodoh.
— Apakah Anda benar-benar akan memberi nilai? Di jurnal?! — suara dari bangku belakang terdengar.
— Sangat gampang! — kata saya, — saya mengumumkan blitz tentang istilah, siapa yang menjawab 10 pertanyaan saya - saya berikan 20 di jurnal, tanpa tipu daya, siapa yang tidak menjawab — itu (minus sepuluh). -10 (minus deset).

»Ekipa se je razburila, začela se je polemika«, vsi so imeli pošteno zaslužene ocene. Dva sta se prijavila. Z nekaj manjšimi napakami sta izmenično odgovorila na 10 vprašanj o skladu, vrstnem redu, konstruktorju, destruktorju, zbiralniku smeti, inkapsulaciji, polimorfizmu, haš funkcijah…
Vsak je imel v reviji narisano 20-ka… a pomen revije in ocen je v očeh vsakega upadel. Zdaj obžalujem, da nisem vprašal, ali bi želeli "deliti" svojo oceno s kom. Mislim, da bi delili… Od takrat naprej je vsak opravil "laboratorij" z znanjem in poštenostjo.

Od tega trenutka je nastal še en način opravljanja laboratorija:


case poštenoNeNjegaAmpakOnJePoskušal

Prihaja k meni študent, da odda nalogo.
— Ne.
— Zakaj?
case povprečen študent s trojko ali "tričko". — Težko. Pomagal mi je… *iskreno omeni odličnega študenta iz skupine*
— Siapa yang berurusan?
— Sergej Nikolajevič, iskreno — nič ne razumem, sam sem komentiral ob vsakem stavku — no, to ni zame, bom delal kot traktorist
— Da.
— *bere komentar ob stavku*.
— …
— …
— Kakšna je razlika med Belarus MТЗ, Don 500 in K700?
— ??!.. Prvi je kolesni traktor beloruske proizvodnje, pogosto uporablja pri lahkih in srednjih vrstah kmetijske proizvodnje. Ima še spredaj majhne in zadaj velike kolesa. Don 500 je predvsem kombajn, K-700 "Kirovec" pa je sovjetski kolesni traktor splošne rabe z izboljšano prehodnostjo, vlečna kategorija 5.
— sprejeto. Dobro (!!!).
— Hvala, Sergej Nikolajevič!!!

Na moji rodni strani se pogovarjati o traktorjih — skoraj isto kot tukaj o SOLID.

Genij
Imel sem v skupini genija. Študent, ki je že na prvem predavanju močno zamudil in se ni pridružil ostalim pri sestavljanju sestavljanke. Takrat sem ga prosil, naj stori, kar sem načrtoval za naslednjič — naj napiše na list o sebi, s čim se ukvarja, kaj ga zanima. Na koncu je "Genij" imel 2-3 vrstice: nekaj takega kot "spoznavam brezsmiselnost obstoja"…

... O, Bože, v moji skupini je v eni osebi hkrati drugi Lao Tzu in Kojima …
Osnova vsakega programiranja na… puzzle

Na moje presenečenje je na prvih dveh predavanjih resnično blestel z odgovori na vprašanja o izrazih, vendar je učinek trajal le kratek čas. "Genij" je prenehal obiskovati predavanja in naslednjič se je pojavil le na opravljanju prve laboratorijske naloge, ki je uspešno ni opravil iz objektivnih razlogov. Nato so mu zaradi izostankov naravno nastali dolgi, ki jih je, kot je menil, moral oceniti, tako rekoč, "po bratstvu".
Neobiskovanje predavanj + povišena samopodobnost sta bila v nasprotju z načeli obiskovanja mojih predavanj. «Genius» je imel le dve možnosti — rehabilitirati se (pričakovana pot) ali prezreti predavanja in upati na «trico», ki jo bo podelila dekana, da se znebi lenobe.
No, to je pač «Genius»… tukaj je treba ravnati «genialno». Ta mladenič ni našel nič boljše, kot da je napisal v skupnem pogovoru na VK (kjer sem bil jaz in vsi študenti te skupine) jezni tirader s psovkami in žaljivkami v moj naslov.

Mhm… Razočaranje.
Najbolj me je presenetilo, da se je odločil, da se pred koncem kazenskega postopka s strani uprave fakultete opraviči zame. Za kaj? — iskreno mi ni jasno. Takrat sem bil že dolgo neodvisen od kritike, zlasti takšne, odkrito glupe. Moja osebnost ni bila prizadeta, procesi pa so procesi, kot učitelj nisem mogel, da ne bi o tem obvestil. Izkazalo se je, da se je v času študija že nabrala toliko pritožb, da je bil ta primer zadnji. Izključili so ga. S končne stopnje srednje šole.
Morda me je že dolgo opazoval skozi puškino sirovo lečo, toda meni je, iskreno, vseeno.
Ojoj, genialnost, brezsrčna si...

Epilog
Zame je bila izkušnja poučevanja ena najbolj poučnih. Pomagala mi je utrditi temeljno znanje o programiranju po študiju na fakulteti. Čutil sem samozavest v izbranem poklicu (nabor razpoložljivih specialnosti). O posebni pomembnosti govorim glede na to, da je «najbolj nepokorna skupina» do mene vzpostavila spoštovanje in prijaznost — to veliko pomeni. Uspešno sem našel pot do njihovih notranjih inovatorjev, poskušal sem vnesti resničnost, ne pa teh šablonskih prioritet. Škoda, da nismo prišli do »puzzle« kodiranja — ko bi moral vsak narediti del kode, in ko bi vse dele združili v eno, bi dobili obsežen delujoč program...
Upam, da bo vsak izmed njih nekoč to občutil... a zaenkrat so zbrani posnetki z mnenji nekaterih študentov po dveh letih.

Osnova vsakega programiranja na… puzzle

Zaenkrat je še prezgodaj, da bi delali zaključke o uspešnosti kariere programerja pri komer koli izmed njih, saj se zdaj večina te skupine izobražuje na višji šoli. Čas bo pokazal.

Upam, da je bil članek koristen. Hvala za pozornost!
Uživajte u kreativnim uspjesima i pozitivnom raspoloženju, kolege!

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster