Grunnlaget for all programmering er
 puslespill

Hei, Habr-folk!

I denne artikkelen Þnsker jeg Ä dele erfaringene mine som C++-lÊrer pÄ en hÞyskole tilknyttet et teknisk universitet. Det var en unik opplevelse i livet mitt som lÊrte meg mye. NÄr jeg tenker pÄ interessante fakta fra fortiden, kommer denne episoden alltid fremst i tankene.
La oss gÄ.

FĂžrst litt om meg selv.
I 2016 fullfÞrte jeg hÞyskolen med rÞdt diplom i spesialiteten «Informasjonssikkerhet i automatiserte systemer». I lÞpet av studiene klarte jeg flere ganger Ä realisere potensialet mitt ved Ä skrive vitenskapelige artikler, delta i konkurranser og sÞke om stipend. I 2015 ble jeg vinner av den russiske konkurransen for unge forskere «UMNIK». I 2016, fÞr jeg var ferdig utdannet, fikk jeg jobb i en stor organisasjon i byen som «Data sikkerhets spesialist og kryptograf».
I korte trekk var det slik. Man kan si at jeg hadde en viss forstÄelse for programmering.

Og sÄ kom Äret 2017. Doktorgradsstudier. Jeg ble bedt om Ä undervise C++ pÄ hÞgskolen i lÞpet av semesteret og fikk lovnader om gode bonuser i form av lettelser i doktorgradsarbeidet og ikke noe mer.

Ærlig talt var jeg oppriktig interessert i Ă„ prĂžve meg i denne rollen.

Den fĂžrste timen
September. Den fĂžrste skoleuken. Studentene kom til meg. «Den mest uordentlig gruppen» — slik ble de omtalt.
23 personer. «Programmerere».

Som det hĂžrer med, introduserte jeg meg selv. Jeg fortalte dem med tilbakeholdt begeistring innholdet i delen «FĂžrst litt om meg selv» 
SĂ„ begynte det skumle. PĂ„ spĂžrsmĂ„let «Hva kan dere?» svarte studentene (la oss kalle dem det heretter) at de kunne litt mer enn ingenting (det betydde at noen av dem visste hvordan MS VS sĂ„ ut og kunne lage prosjektet «Hello world»)
 Programmerere. Siste Ă„ret


Deretter forklarte de i detalj, «i farger», at ingen hadde lĂŠrt dem noe og at de generelt var desillusjonert med programmering


Nesten alle dager frem til neste time gikk slik:
Grunnlaget for all programmering er
 puslespill

... men dagen fÞr neste time fikk jeg ideen om Ä gjÞre noe for Ä rette opp situasjonen i hodene og bevisstheten til denne ungdommen. Og sÄ kom «Ostap til livs».

Introduksjon til programmering
Til neste time tok jeg med
 puslespill.
Ja, ja. Puslespill. «Hvordan temme en drage». Reglene var enkle. Gruppen ble delt inn i 3 lag. Hvert lag samlet sin del. Noen — skog, andre — land, de tredje — dragen i midten av bildet. Mens de samlet puslespillet, fortalte jeg hva samle puslespill er ogsĂ„ programmering, at programmerere ofte bruker andres kode, at hvert prosjekt har flere ulike lag, funksjoner, moduler

Gradvis deltok ogsÄ de mest passive studentene i prosessen.
Da jeg var ferdig med Ä forklare programmeringsideen i konteksten av forretninger, prosesser og
 puslespill, var det pÄ tide Ä etablere reglene for undervisningen.
Til hver undervisning mÄtte hver student skrive ned 10 IT-begreper i notatboken. Hvilke som helst. Hver sin egen. Poenget var at jeg tok notatboken til én student, fant blant alle begrepene de mest anvendelige og spurte en annen student om dem. NÄr den andre studenten sa «Jeg skrev ikke det begrepet», var det ikke straffbart (med tanke pÄ sunn fornuft), men den studenten mÄtte skrive ned de «manglende» begrepene (slik ogsÄ alle som ikke hadde dem) og finne betydningene til neste time.

Slik gjorde vi det. Hver time begynte med en sprudlende tilfeldig utvelgelse av to-tre studenter. Guttene var entusiastiske om denne prosessen.

Temaer for undervisningen
NÄr man begynner med undervisning, er det veldig viktig Ä gi elevene god litteratur. Etter min mening var den ideelle lÊreboken:
Grunnlaget for all programmering er
 puslespill

Tidligere mÄtte jeg forsiktig lese den sammen med Microsoft Visual Studio. Da klarte jeg Ä forstÄ programmering nesten fra bunnen av. Den ideelle lÞsningen.

Du gĂ„r beskjedent bort til studentene og sier: «For Ă„ bli programmerere, trenger dere bare Ă„ lese og prĂžve alt det som er i denne boken», og kaster boken pĂ„ bordet. Det viktigste er Ă„ ikke forveksle bĂžkene i ryggsekken din


FÞr hvert tema mÄtte jeg selvfÞlgelig forberede meg grundig. Leste Lafore og flere interessante kilder fra nettet.
Forklaringen mÄtte nesten begynne fra grunnen av. Dessuten var det nÞdvendig Ä dedusere hvor studentene hadde brister i grunnleggende kunnskaper.
Arrays -> Arbeid med minne (konstruktþrer) -> Referanser -> Hvordan minnet fungerer -> Lagringsmedier -> Hva er et fysisk lagringsmedium -> Binér representasjon av data

Grunnlaget for all programmering er
 puslespill

En ganske solid krasjtest av grunnleggende programmeringsfakta. Jeg er ikke programmerer lenger, jeg er historiker!

Og sÄ skjer det, historiske bataljer med flere par pÄ rad. Plutselig stikker en sekretÊr fra instituttet innom kontoret vÄrt og, etter Ä ha sett gruppen, stirrer hun med store Þyne, kikker nÞye og lukker dÞren. Som jeg fikk vite senere, var hun sjokkert over at DENNE gruppen satt sÄ stille og sÄ oppmerksomt lyttet til meg... Tjee, lett.

Laboratoriearbeid
De fĂžrste praktiske oppgavene — de fĂžrste «labene». I lĂžpet av et semester fullfĂžrte gruppen 10 laboratoriearbeid. I de fĂžrste jobbet de med de enkleste konsollene a+b, og i de siste skrev de, om enn i konsoll, men ganske interessante applikasjoner, som Ă„ beregne verdien av integralen til en vilkĂ„rlig definert funksjon ved hjelp av en av tre metoder — omtrent de samme oppgavene som var pĂ„ den avsluttende vurderingen — prosjektoppgaven.

Men tilnÊrmingen til aksept ikke var vanlig. Gjennom hele studietiden pÄ universitetet har jeg opplevd at Ä vÊre smart og Ä kunne levere rapporter er ikke det samme. Dette har irritert meg grunnleggende.

— Folkens, jeg har tenkt litt. La oss bygge «begrepsmessige» relasjoner. Hvis noen av dere mener at programmering ikke er nĂždvendig for dem — dĂžren er der. Jeg underviser dere gratis. Jeg Ăžnsker Ă„ se her bare nysgjerrige, engasjerte og interessert entusiaster. Jeg ber alle andre om ikke Ă„ kaste bort felles tid — sa jeg den fĂžrste dagen med innlevering av laboratoriearbeid. Etter dette sluttet 5 personer Ă„ komme pĂ„ timene. Dette var logisk og forventet. Med de gjenvĂŠrende var det mulig Ă„ prĂžve Ă„ lage noe fornuftig.

— ... jeg er ikke interessert i Ă„ se hvordan noen har gjort arbeidet for deg, bare for Ă„ levere det. Dere kan gjerne ikke vĂŠre programmerere, men som mennesker mĂ„ dere vĂŠre det.

Det sÄ slik ut:

case A-student

En student setter seg ned for Ă„ levere arbeidet sitt.
— Laget du dette selv?
— Ja.
— Hva er dette for noe?
— *svaret er riktig*.
*Jeg stiller et par ekstra spÞrsmÄl. Svaret er korrekt*
— Godkjent. Flott.

case snakkemaskin

— Laget du dette selv?
— Ja.
— Hva er dette for noe?
— *svaret er IKKE riktig / svarer ikke*.
*Jeg stiller et par ekstra spÞrsmÄl. Samme resultat*
— IKKE godkjent. IKKE GODKJENT. Venter pĂ„ ny eksamen.

case godkjenner

— Laget du dette selv?
— Ja.
— Hva er dette for noe?
— *svaret er korrekt, men usikkert, svþmmer rundt*.
*Jeg stiller et par ekstra spÞrsmÄl. Samme resultat*
— Godkjent. Bra.

case jevn karakter

— Laget du dette selv?
— Nei.
— Hvorfor?
— Det er vanskelig. Jeg fikk hjelp av... *navner érlig en A-student fra gruppen*
— Fikk du det til deg?
— Ja, jeg forsto nesten alt.

— Hva er dette for noe?
— *svaret er riktig*.
*Jeg spÞr om et par punkter til. Han svarer mer eller mindre riktig, noen ganger helt pÄ bÊrtur, selv om det er 50-50 riktige og gale*
— Godkjent. Bra.

Det gir ikke mening Ä beskrive alle de andre tilfellene. Ja, en «god student» kan vÊre misfornÞyd med at «treeren» fÄr samme karakter, og trenger ikke Ä vÊre Êrlig. Da avhenger alt av stemningen. Enten ber jeg «god studenten» om Ä se ned, for «nÄ skal jeg dele en klype visdom», og sÄ forklarer jeg essensen av tilnÊrmingen, beskriver hva i livet har stÞrre verdi og forklarer at «treeren» hadde mye vanskeligere for Ä bestÄ enn han, «god studenten», osv...

 eller, som min lĂŠrer gjorde en gang, tegner jeg en liten tann i rutene i journalen rett ved siden av den misfornĂžyde, og neste gang vil jeg personlig forsyne ham med det ekstra laboratoriearbeidet. Bare sĂ„nn. SĂ„ han ikke «slukker» vennene.

Grunnlaget for all programmering er
 puslespill

Karakterer
Utdanningsprosessen, som hele verden, er bokstavelig talt druknet i priser og vurderinger.
Studenter er ogsÄ mennesker, men likevel mener jeg at «rammene» mÄtte vÊrt «delt» her.
I lÞpet av semesteret fikk alle en bonusoppgave. Registrer deg pÄ github.com, last opp et tomt prosjekt pÄ C++, gjÞr 2 oppdateringer, gjÞr dem tilgjengelige og push dem. For disse handlingene ble det tildelt 15. Ja- ja, ikke 4, ikke 5, men 15. Tre kom seg inn. Det var forstÄelig for studentens psyket, men sÄ var det et annet tilfelle.
En gang ble timen vÄr flyttet sÄnn at den ble sist, og ogsÄ som en vindusrute. Uansett dukket det opp 15 personer. Jeg hadde ikke lyst til Ä forklare et nytt tema pÄ grunn av slik heltemot, da vi allerede hadde gjort betydelige fremskritt pÄ temaene + neste tema var ikke sÄ enkelt for slitne hjerner (mine og studentenes). Da bestemte jeg meg for Ä snakke om filosofi.

— Jeg erklérer en attraksjon av usett generositet. Alle sier til meg hvilken karakter de vil ha for dagens time.
Alle ville ha «femmer».
— Tenk, det er allerede gitt, — sa jeg. Alle ble glade.
Stillhet.
— Hvorfor ville ingen ha 7-en eller 10-en?
Alle stirret med store Ăžyne og begynte Ă„ smile dumt.
— Skal du sette det? I journalen?! — hþrtes en stemme fra den bakerste benken.
— Ja, lett! — sa jeg, — jeg erklĂŠrer en blitz om vilkĂ„r, den som svarer pĂ„ 10 av mine spĂžrsmĂ„l — fĂ„r 20 i journalen, uten triks, den som ikke svarer — mister (minus ti). -10 (minus ti).

«Team spirit rose, a debate began», everyone had earned their marks honestly. Two volunteered. With some small inaccuracies, they took turns answering 10 questions about stack, queue, constructor, destructor, garbage collector, encapsulation, polymorphism, hash functions

Each 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 grades with someone. I think they would have shared
 From now on, everyone submitted their «lab» with knowledge and honesty.

From that moment on, there was another type of lab submission:


case honestNotHisButHeTried

— Laget du dette selv?
— Nei.
— Hvorfor?
— Det er vanskelig. Jeg fikk hjelp av... *navner érlig en A-student fra gruppen*
— Fikk du det til deg?
— Sergey Nikolayevich, honestly — I don't understand anything, I've written comments next to each line — this isn't for me, I'm going to be a tractor driver.
— Hva er dette for noe?
— *reads the comment next to the line*.
— 

— 

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

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

Genius
I had a Genius in my group. A student who was late to the first class and didn’t join everyone else in putting that puzzle together. So I asked him to do what I had planned for everyone for the next class — write on a piece of paper about himself, what he is interested in, what hobbies he has. As a result, the ‘Genius’ had 2-3 lines: something like 'I contemplate the futility of existence'



 Oh God, in my group there was at the same time the second Lao Tzu and Kojima in one person 

Grunnlaget for all programmering er
 puslespill

To my surprise, in the first two classes, he really answered brilliantly to questions about terms, but the effect didn’t last long. The ‘Genius’ stopped attending classes and next came only to submit the first lab work, which he successfully failed for objective reasons. Then, due to absences, he naturally accumulated debts, which, as he thought, I was just obliged to count for him, so to speak, 'brotherly'.
Ikke Ä mÞte opp til par + en overdrevet selvfokus strider mot de fastsatte prinsippene for Ä delta pÄ mine timer. For "Genius" var det bare 2 utveier fra situasjonen - Ä rehabilitere seg (den forventede veien) eller Ä gi opp timene og hÄpe pÄ en "treer" fra dekanatet for Ä bli kvitt en slacker.
Vel, dette er "Genius"... her mÄ man handle "genialt". Denne unge mannen fant ikke noe bedre enn Ä skrive en rasende tirade med bannskap og fornÊrmelser mot meg i den generelle dialogen i VK (hvor jeg og alle studentene i gruppen var).

Hmm... Skuffelse.
Det som sjokkerte meg mest, var at fĂžr fullfĂžringen av den straffende operasjonen fra administrasjonen av hĂžyskolen, bestemte han seg for Ă„ be om unnskyldning til meg. For hva? — det er jeg oppriktig uforstĂ„ende til. PĂ„ det tidspunktet var jeg lenge uavhengig av kritikk, spesielt slik, Ă„penbart, dum. Min personlighet ble ikke berĂžrt, men prosessene - det er prosesser, som lĂŠrer kunne jeg ikke unngĂ„ Ă„ rapportere om dette. Det viste seg at han hadde samlet sĂ„ mange klager i lĂžpet av studiet, at denne hendelsen ble den siste. Han ble utvist. Fra det siste Ă„ret av yrkesskolen.
Kanskje han har sett pÄ meg gjennom kikkerten av en snikskytterrifle lenge, men Êrlig talt, jeg bryr meg ikke.
Åh, genialitet, du er hjertelþs...

Epilog
Personlig var undervisningserfaringen en av de mest lÊrerike for meg. Det hjalp meg Ä feste grunnleggende kunnskaper i programmering etter studiene. Jeg fÞlte selvtillit i det valgte yrket (spektrum av tilgjengelige spesialiteter). Det som betyr mest, er at "den mest ulydige gruppen" utviklet respekt og vennlighet overfor meg - det er verdifullt. Jeg klarte Ä finne veien til deres indre innovatÞrer, prÞvde Ä innprente virkeligheten, ikke disse malte prioriteringene. Det er synd at vi ikke kom til "puslespillene" i koding - hvor hver skulle lage en del av koden, og ved Ä kombinere alle delene ville vi fÄtt et stort fungerende program...
Jeg hÄper at en dag hver av dem vil fÞle dette... men sÄ langt er skjermbilder med tilbakemeldinger fra flere studenter samlet her to Är senere.

Grunnlaget for all programmering er
 puslespill

Det er fortsatt tidlig Ä konkludere om suksessen til karrieren til en programmerer blant dem, for nÄ studerer stÞrste delen av denne gruppen ved universitetet. Tiden vil vise.

Jeg hÄper artikkelen var nyttig. Takk for oppmerksomheten!
Ønske om kreativ suksess og positiv stemning, kollegaer!

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster