Grunden för all programmering ligger i... pussel

Hej, Habr-are!

I den hÀr artikeln vill jag berÀtta om min erfarenhet som programmeringslÀrare i C++ pÄ ett college vid det tekniska universitetet. Det var en unik upplevelse i mitt liv som lÀrde mig mycket. NÀr det kommer till intressanta fakta frÄn mitt personliga förflutna kommer detta avsnitt av mitt liv alltid till minnet först.
LÄt oss köra.

Först lite om mig sjÀlv.
År 2016 tog jag examen med utmĂ€rkelse i specialiteten "InformationssĂ€kerhet för automatiserade system". Under min utbildning hade jag flera gĂ„nger möjlighet att förverkliga min potential genom att skriva vetenskapliga artiklar, delta i tĂ€vlingar och ansöka om stipendier. År 2015 blev jag vinnare av den ryska tĂ€vlingen för unga forskare "UMNIK". År 2016, innan jag var klar med studierna, fick jag anstĂ€llning i en stor organisation i staden som "Specialist inom informationssĂ€kerhet, kryptografi och kryptering".
Kort sagt, sÄ hÀr var det. Man kan sÀga att jag hade en viss aning om programmering.

Och sÄ kom Äret 2017. Doktorandstudier. Jag blev ombedd att undervisa i C++ under en termin pÄ college, för vilket jag utlovades fina bonusar för att lÀtta pÄ bördan av doktorandstudierna, och inte mer.

Ärligt talat var jag verkligen intresserad av att prova pĂ„ detta kall.

Första lektionen
September. Första skolveckan. Studenterna kom till mig. "Den mest udisciplinerade gruppen" — sĂ„ kallade de sig.
23 personer. "Programmerare".

Som det sig bör, började jag med att presentera mig sjÀlv. Jag berÀttade för dem pÄ ett stillsamt sÀtt innehÄllet i delen "Först lite om mig sjÀlv"...
Sedan började det skrÀmmande. NÀr jag frÄgade "Vad kan ni?" svarade studenterna (lÄt oss kalla dem sÄ frÄn och med nu) att de kunde lite mer Àn ingenting överhuvudtaget (det betydde att nÄgra av dem visste hur MS VS sÄg ut och kunde skapa ett projekt "Hello world")... Programmerare. Sista Äret...

DÀrefter förklarade de detaljerat, "i fÀrger", att ingen hade lÀrt dem nÄgot och att de överhuvudtaget var besvikna pÄ programmering...

NÀstan alla dagar fram till nÀsta lektion gick sÄ hÀr:
Grunden för all programmering ligger i... pussel

... men dagen innan lektionen kom jag pÄ idén att försöka rÀtta till den rÄdande situationen i dessa ungdomars sinnen. Och dÄ började "Ostap".

Introduktion till programmering
Till nÀsta lektion tog jag med... ett pussel.
Ja, ja. Pussel. "Hur du tĂ€mjer en drake". Reglerna var enkla. Gruppen delades in i tre lag. Varje lag satte ihop sin del. En del – skogen, andra – marken, de tredje – draken i mitten av bilden. Medan de satte ihop pusslet hela lektionen, berĂ€ttade jag om att att sĂ€tta ihop pusslet ocksĂ„ Ă€r programmering, att programmerare ofta anvĂ€nder andras kod, att varje projekt har flera olika lag, funktioner, moduler

Gradvis anslöt Àven de mest oengagerade studenterna till processen.
NĂ€r jag var klar med att introducera idĂ©n om programmering i koncepten för företag, processer och
 pussel, var det dags att stĂ€lla in reglerna för lĂ€randet.
Vid varje lektion skulle varje student skriva ner tio termer frÄn IT i sin anteckningsbok. Vilka som helst. Var och en hade sina egna. PoÀngen var att jag tog en students anteckningsbok, hittade bland alla termer de mest tillÀmpbara och frÄgade en annan student om dem. NÀr den andra studenten sa "Jag skrev inte ner den termen", var det inte straffbart (av förnuftsskÀl), men den studenten var tvungen att skriva ner de "saknade" termerna (liksom alla som inte hade dem) och hitta deras betydelser till nÀsta lektion.

SÄ hÀr gjorde vi. Varje lektion började med en pigg slumpning av tvÄ eller tre studenter. Killarna var entusiastiska om den hÀr processen.

Ämnen för lektioner
NÀr man börjar med utbildning Àr det mycket viktigt att ge studenterna bra litteratur. Enligt min Äsikt var den perfekta handledningen boken:
Grunden för all programmering ligger i... pussel

En gÄng tvingades jag försynt lÀsa den medan jag kramade med Microsoft Visual Studio. DÄ lyckades jag förstÄ programmering praktiskt taget frÄn grunden. Den perfekta lösningen.

Du gĂ„r beskedligt till studenterna och sĂ€ger: "För att bli programmerare behöver ni bara lĂ€sa och pröva allt det som finns i den hĂ€r boken", och slĂ€nger boken pĂ„ bordet. Det viktigaste Ă€r att inte blanda ihop böckerna i din ryggsĂ€ck


Inför varje Àmne var jag, sjÀlvklart, tvungen att förbereda mig ingÄende. Jag lÀste Lafore och nÄgra andra intressanta kÀllor frÄn nÀtet.
Det krÀvdes nÀstan att jag förklarade frÄn grunden. Och att förstÄ var studenterna saknade grundkunskaper hÀnde deduktivt.
Arrayer -> Arbete med minnet (konstruktörer) -> Referenser -> Hur minnet fungerar -> Lagring -> Vad Ă€r en fysisk lagringsenhet -> BinĂ€r representation av data

Grunden för all programmering ligger i... pussel

En vÀldigt tuff kunskapstest om grundlÀggande fakta om programmering. Jag Àr inte programmerare lÀngre, jag Àr historiker!

Och sÄ, historiska bataljer pÄgÄr i flera par i rad. En dag kommer en sekreterare frÄn institutionen och ser in i rummet, stirrar pÄ gruppen och stÀnger dörren. Som jag fick veta senare, var hon chockad över att DENNA grupp satt sÄ tyst och lyssnade sÄ uppmÀrksamt pÄ mig... Tja, enkelt.

Laborationsarbete
De första tillĂ€mpade uppgifterna — de första "labbarna". Under en termin inlĂ€mnade gruppen 10 laborationsarbeten. I de första gjorde de mycket enkla konsoluppgifter a+b, och i de sista skrev de, Ă€ven om det var konsolprogram, tillrĂ€ckligt intressanta applikationer, sĂ„som berĂ€kning av vĂ€rdet pĂ„ integralen av en vilkĂ„rlig given funktion med en av tre metoder — ungefĂ€r sĂ„dana uppgifter fanns pĂ„ slutlig bedömning — examensarbetet.

Men mottagningsmetoden inte var bekant. Under hela studien pĂ„ universitetet stötte jag pĂ„ det faktum att att vara smart och att kunna lĂ€mna in rapporter — det Ă€r inte samma sak. Det passade mig inte alls.

— Hörrni, jag har tĂ€nkt pĂ„ det. LĂ„t oss bygga "begreppsmĂ€ssiga" relationer. Om nĂ„gon av er anser att programmering inte Ă€r nödvĂ€ndig — dörren Ă€r dĂ€r borta. Jag undervisar er gratis. Jag vill bara se hĂ€r nyfikna, engagerade och intresserade entusiaster. Alla andra ber jag att inte slösa bort vĂ„r gemensamma tid — sa jag den första dagen för inlĂ€mning av laborationsarbeten. Efter detta slutade 5 personer omedelbart att besöka lektionerna. Det var logiskt och förvĂ€ntat. Med de andra var det möjligt att försöka göra nĂ„got meningsfullt.

— 
 jag Ă€r inte intresserad av att se hur nĂ„gon gjort arbetet Ă„t er, bara för att ni ska fĂ„ godkĂ€nt. Ni kanske inte Ă€r programmerare, men ni mĂ„ste vara mĂ€nniskor pĂ„ mina lektioner.

SÄ hÀr sÄg det ut:

case duktig

En student sÀtter sig ner för att lÀmna in sitt arbete.
— Har du gjort det sjĂ€lv?
— Ja.
— Vad Ă€r detta?
— *svarar rĂ€tt*.
*FrÄgar om ett par ytterligare saker. Svarar korrekt*
— godkĂ€nt. UtmĂ€rkt.

case pratsam

— Har du gjort det sjĂ€lv?
— Ja.
— Vad Ă€r detta?
— *svarar INTE rĂ€tt / svarar inte alls*.
*FrÄgar om ett par ytterligare saker. Samma resultat*
— INTE godkĂ€nt. IG. VĂ€ntar pĂ„ omprov.

case bra student

— Har du gjort det sjĂ€lv?
— Ja.
— Vad Ă€r detta?
— *svarar rĂ€tt, men osĂ€kert, svajar*.
*FrÄgar om ett par ytterligare saker. Samma resultat*
— godkĂ€nt. Bra.

case jÀmn trevlig student

— Har du gjort det sjĂ€lv?
— Nej.
— Varför?
— Det Ă€r svĂ„rt. Jag fick hjĂ€lp av
 *nĂ€mner Ă€rligt en duktig student i gruppen*
— Fick du grepp pĂ„ det?
— Ja, jag förstod nĂ€stan allt.

— Vad Ă€r detta?
— *svarar rĂ€tt*.
*Jag stÀller nÄgra frÄgor till. Han svarar ganska korrekt, ibland helt fel, Àven om det Àr 50 procent rÀtt och 50 procent fel*
— godkĂ€nt. Bra.

Det Àr meningslöst att beskriva alla andra fall. Ja, en "duktig" student kan bli missnöjd över att en "medioker" fÄr samma betyg genom att vara Àrlig. DÄ beror allt pÄ humöret. Antingen ber jag den "duktiga" studenten att se pÄ golvet, för nu kommer jag att dela en gnutta visdom, och sedan kommer jag att förklara min syn pÄ saken, beskriva vad som har större vÀrde i livet och förklara att det var mycket svÄrare för "mediokern" att klara det Àn för honom, "duktige", och sÄ vidare...

 eller, som pĂ„ min tid, ritar jag en liten tand i rutan i boken framför den missnöjda studenten och nĂ€sta gĂ„ng gör jag personligt en tillĂ€gg till laborationsarbetet för honom. Bara sĂ„. För att inte "slĂ€cka" kompisarna.

Grunden för all programmering ligger i... pussel

Betyg
Utbildningssystemet, liksom hela vÀrlden, bokstavligen druknar i priser och betyg.
Studenter Àr ocksÄ mÀnniskor, men jag tycker att "ramarna" borde ha "skakats" Àven hÀr.
Under terminen fick alla en bonusuppgift. Registrera dig pÄ github.com, ladda upp ett tomt projekt i C++, gör 2 uppdateringar, committa dem och push-a. För dessa handlingar gavs 15 poÀng. Ja, visst, inte 4, inte 5, utan 15. Tre personer klarade det. För studentens psyket var detta fortfarande förstÄeligt, men det fanns en annan situation.
En gÄng flyttades vÄr lektion sÄ att den blev den sista, och dessutom genom ett fönster. Men ÀndÄ kom det 15 personer. Jag ville inte förklara ett nytt Àmne som en hyllning till deras hjÀltemod, eftersom vi redan hade kommit ganska lÄngt igenom Àmnena + nÀsta Àmne var inte sÀrskilt enkelt för trötta hjÀrnor (mina och studenternas). DÄ bestÀmde jag mig för att prata om filosofi.

— Jag utlyser en attraktion av aldrig tidigare skĂ„dad generositet. Alla sĂ€ger till mig vilket betyg de vill ha för dagens lektion.
Alla ville ha en "femma".
— TĂ€nk er att ni redan har det, — sa jag. Alla blev glada.
Tystnad.
— Men varför ville ingen ha en 7-roy eller 10-ku?
Alla stirrade med stora ögon och började le dumt.
— Men kommer du verkligen att sĂ€tta det? I boken?! — hördes en röst frĂ„n bageriet.
— Javisst! — sa jag, — jag utlyser en blixtfrĂ„ga pĂ„ termer, den som svarar pĂ„ 10 av mina frĂ„gor — fĂ„r 20 poĂ€ng i boken, utan fusk, den som inte svarar — fĂ„r -10 (-tio).

"Team spirit sparked a debate," everyone had honestly earned their grades. Two volunteered. With minor inaccuracies, they took turns answering 10 questions about stacks, queues, constructors, destructors, garbage collectors, encapsulation, polymorphism, hash functions

Everyone had a drawing in the journal 20s
 but the importance of the journal and grades diminished in everyone's eyes. Now I regret not asking if they wanted to "share" their grade with someone. I believe they would have
 From now on, everyone submitted the "lab" with knowledge and honesty.

From this moment, another type of lab submission appeared:


case honestlyNotHimButHeTried

— Har du gjort det sjĂ€lv?
— Nej.
— Varför?
— Det Ă€r svĂ„rt. Jag fick hjĂ€lp av
 *nĂ€mner Ă€rligt en duktig student i gruppen*
— Fick du grepp pĂ„ det?
— Sergey Nikolaevich, honestly — I don't understand anything, I've written comments next to each line — this isn't for me, I'll be a tractor driver
— Vad Ă€r detta?
— *reads the comment next to the line*.
— 

— 

— What's the difference between a Belarus MTZ and a Don 500 and a K700?
— ??!.. The first is a wheeled tractor produced in Minsk, often used in light and medium types of agricultural production. It has small wheels in the front and large wheels in the back. The Don 500 is mainly a harvesting combine, while the K-700 "Kirovets" is a Soviet wheeled tractor of general purpose with high cross-country ability, traction class 5.
— accepted. Good (!!!).
— Thank you, Sergey Nikolaevich!!!

In my homeland, chatting about tractors is almost like here about SOLID.

Genius
I had a Genius in my group. A student who arrived significantly late to the very first class and didn't join everyone in assembling that puzzle. Then I asked him to do what I had planned for everyone in the next session — to write on a sheet about himself, what he is passionate about, what interests him. As a result, the "Genius" had 2-3 lines: something like "I perceive the futility of existence"



 Oh God, I have both the second Laozi and Kojima in one person in my group

Grunden för all programmering ligger i... pussel

To my surprise, in the first two classes, he indeed answered questions about terms brilliantly, but the effect lasted only a short time. The "Genius" stopped attending classes and came only for the submission of the first lab work, which he successfully failed for objective reasons. Then, due to absences, he naturally accumulated debts, which, as he believed, I was simply obliged to credit him, so to speak, "brotherly"..
Att inte delta i lektioner + en överdriven sjĂ€lvkĂ€nsla strider mot de etablerade principerna för att delta i mina lektioner. För "Genius" fanns det bara tvĂ„ utvĂ€gar — att rehabilitera sig (den förvĂ€ntade vĂ€gen) eller att skippa lektionerna och hoppas pĂ„ ett "trea" som sĂ€tts av dekanatet för att bli av med latmasken.
NÄvÀl, det Àr ju "Genius"... hÀr mÄste man agera "geniellt". Denna unge man kunde inte hitta nÄgot bÀttre Àn att skriva en ilsket tirad med svordomar och förolÀmpningar i vÄr gemensamma VK-dialog (dÀr jag och alla studenter i denna grupp befann sig).

Jaha... Besvikelse.
Det som mest överraskade mig var att han, precis innan avslutningen av den bestraffande operationen frĂ„n högskolans ledning, beslutade sig för att be om ursĂ€kt till mig. För vad? — det Ă€r mig helt oklart. Vid den tidpunkten var jag redan lĂ€nge oberoende av kritik, framför allt sĂ„dan som var uppenbart dum. Min personlighet var inte krĂ€nkt, men processer Ă€r processer, som lĂ€rare kunde jag inte lĂ„ta bli att rapportera detta. Det visade sig att han under sin studietid hade samlat sĂ„ mĂ„nga klagomĂ„l att det hĂ€r fallet blev det sista. Han blev utvisad. FrĂ„n det sista Ă„ret pĂ„ yrkesskolan.
Kanske har han lÀnge sett mig genom siktet pÄ en prickskyttegevÀr, men om jag ska vara Àrlig, bryr jag mig inte.
Åh, genialitet, du Ă€r sĂ„ hjĂ€rtlös...

Epilog
Personligen var erfarenheten av att undervisa en av de mest lĂ€rorika. Det hjĂ€lpte mig att befĂ€sta mina grundlĂ€ggande kunskaper i programmering efter studierna pĂ„ universitetet. Jag kĂ€nde mig sĂ€ker i mitt val av yrke (bland de tillgĂ€ngliga specialiteterna). Det viktiga var att "den mest olydiga gruppen" utvecklade respekt och vĂ€nlighet gentemot mig — det betyder mycket. Jag lyckades hitta vĂ€gen till deras inre innovatörer, försökte förklara verkligheten, inte dessa schematiska prioriteringar. Det Ă€r synd att vi inte nĂ„dde "pusslen" i kodandet — nĂ€r alla skulle göra en del av koden, och genom att sammanfoga alla delar skulle vi fĂ„ ett stort fungerande program...
Jag hoppas att var och en av dem en dag kommer att kÀnna detta... och sÄ hÀr nedan har jag samlat skÀrmdumpar med feedback frÄn nÄgra studenter tvÄ Är senare.

Grunden för all programmering ligger i... pussel

Det Àr fortfarande för tidigt att dra slutsatser om framgÄngen i karriÀren som programmerare för nÄgon av dem, eftersom största delen av denna grupp fortfarande studerar pÄ universitetet. Tiden fÄr utvisa.

Jag hoppas att artikeln har varit nyttig. Tack för uppmÀrksamheten!
Önskar er alla kreativa framgĂ„ngar och positivt humör, kollegor!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster