Podučavanje strategije za čitanje koda

Naslov Clickbaita: Nećete vjerovati kako 5 minuta može poboljšati vaše vještine kodiranja!

Sažetak: Potrošnja 5–10 minuta podučavanja strategije čitanja koda može dovesti do poboljšanja performansi čitanja, što pomaže u sprječavanju da ih niski izvođači premore i odustanu! Ovaj rad predstavio sam na SIGCSE 2018. Veze do izvora (nastavni resursi, radovi, dijapozitivi) nalaze se na kraju ovog posta.

Recite da učim učenike matematike četvrtih razreda kako riješiti probleme različitim operacijama, poput ove:

2 x (3 + 6)

Naučio sam ih pojedinačnim operacijama zbrajanja, oduzimanja, množenja, dijeljenja. Stoga im pružam praktične probleme koji imaju kombinaciju tih operacija. I moji marljivi studenti iznenađujuće (?) Se bore s njima! Što se dogodilo?

U ovom slučaju nisam ih izričito podučavao strategiji za rješavanje ovih problema. Odnosno, nisam ih učio redoslijed operacija (također poznat kao redoslijed prioriteta), poput uvođenja PEMDAS-a. Umjesto toga, tražio sam od svojih učenika da (možda slijepo) izrade vlastite strategije dok su rješavali probleme.

Zahtijevajući od studenata da konstruiraju vlastite strategije dok vježbaju primjenjujući vještinu, može rezultirati neproduktivnom borbom. Umjesto toga, možemo izričito podučiti strategiju i pravilno opremiti studente kako bi naučili više iz njihove prakse.

Moj gornji primjer zvuči pomalo apsurdno, ali to se događa na većini tečajeva programiranja. Dakle, izričito podučavajmo strategije rješavanja problema kako bismo poboljšali kako ljudi nauče čitati kod!

Čitanje koda, simuliranje njegovog izvršenja u vašem umu i predviđanje njegovog rezultata poznato je kao traženje koda. Ova vještina traženja je presudna za programiranje, ali novakinje se trude da to učine! To je dijelom zato što još uvijek razvijaju svoje znanje o konstrukciji koda (ako su izjave, petlje itd.), Ali i zato što pokušavaju smisliti prave strategije za rješenje problema. To može dovesti do nepotrebnih poteškoća, poput početnika koji se usredotočuju na pamćenje varijabilnih vrijednosti tijekom ažuriranja ili pokušavaju prevesti kod na engleski jezik (naprednija vještina). Da bi početnici mogli najbolje iskoristiti svoje postupke, trebali bismo osigurati skele kako bi se mogli usredotočiti na učenje vještine čitanja koda bez preopterećenja.

Evo moje tvrdnje: Davanje izričite upute o strategiji koja potiče pojedinačno praćenje i ažuriranje vanjskog prikaza kako bi se pratile varijabilne vrijednosti pomaže početnicima usredotočiti se na konceptualiziranje načina izvršavanja koda i poboljšavanje njihove sposobnosti praćenja. Opišimo ovu strategiju:

Strategija se sastoji od 2 dijela: opis koraka za rješenje pitanja praćenja koda i opis memorijskih tablica koje novakinje mogu koristiti za praćenje promjenjivih vrijednosti. Koraci se sastoje u razumijevanju pitanja, pronalaženju mjesta na kojem se započinje izvršenje i pronalasku koda jedan po jedan. Cjelovite upute su u nastavku:

Potičući se da slijede pojedinačno, novakinje imaju općenit pristup za rješavanje bilo kojeg problema s praćenjem koda.

Ponekad novakinje moraju ažurirati tablicu memorije. Novajlija stvara novu tablicu memorije svaki put kad se nazove metoda. Kada se varijabla deklarira u toj metodi, oni popunjavaju novi red u tablici memorije. Kada se varijabla ažurira, pronalaze taj red u tablici, precrtavaju prethodnu vrijednost i pišu novu. Nakon što se metoda završi izvršavanjem, precrtavaju cijelu tablicu.

Koristeći memorijske tablice za praćenje varijabli, novakinje ne moraju gubiti Primjer memorijske tablice nakon operacije varijable.

To je strategija! Odlično se uklapa u 2 komada papira, a proveli smo samo 5–10 minuta podučavajući ga novajlijama (dodiplomskim studentima na njihovom prvom razredu informatike).

Za procjenu strategije zaposlio sam 24 studenta koji su bili na 5 tjedana u prvom tečaju informatike. Radeći s njima pojedinačno, pola sam ih naučio strategiji. Tada sam sve sudionike radio kroz istih 6 problema sa praćenjem koda, izgovarajući naglas svoje misli dok su radili. Na taj način mogu odgovoriti na dva pitanja: 1) poboljšava li praćenje nastave ovom strategijom praćenje rada? 2) kako ova strategija mijenja razmišljanja učenika prilikom rješavanja pitanja praćenja? Da vidimo rezultate!

Vidimo da su sudionici koji su učili strategiju bolje i s manje varijabilnosti od svojih kolega iz razreda koji nisu naučili strategiju. To vrijedi za 6 pitanja koja smo tražili od njih za ispitivanje, ali i za srednjoškolski tečaj koji su im trajali 3–6 dana nakon što su sudjelovali u studiji (vidi slike dolje)! S ovim možemo odgovoriti na prvo pitanje i reći kako podučavanje strategije poboljšava performanse praćenja koda.

UČINAK U STUDIJSKIM PITANJIMA: Sudionici koji su naučili strategiju izv. 15% bolje i sa 46% manjom varijabilnošću na pitanjima koja se tiču ​​koda u studiji! (P <0,05)UČINKOVITOST SREDNJI: Sudionici koji su naučili strategiju izv. 7% bolje i sa 42% manjom varijabilnošću na polugodištu tečaja.

Da bih razumio misaone procese sudionika, analiziram razmišljanje grupa visokih i niskih izvođača u oba uvjeta. Pojedinosti analize nalaze se u mojem radu SIGCSE 2018 (povezan na kraju posta), ali najzanimljiviji je nalaz s tim kako je strategija podržavala slabe rezultate. U kontrolnoj skupini, dva najniža izvođača odstupila su od praćenja linija po red i nisu zapisala promjenjive vrijednosti. Zbog toga su postali preopterećeni i odustali od mnogih problema, a da nisu mogli proizvesti rješenje. Usporedite to s lošim izvršiteljima uvjeta strategije, koji su obično (ali ne uvijek) slijedili strategiju i obično pratili liniju po red i ažurirali memorijske tablice kako bi pratili promjenjive vrijednosti. Iz ovoga smo zaključili da je strategija pomogla niskim performansama da napreduju i ne odustanu.

Dakle, nalazimo dokaze da trošeći nekoliko minuta (i bez potrebe za računalom) možemo poboljšati sposobnost početnika da prati kôd. To bi moglo biti zbog toga što je strategija podržavala postizanje inkrementalnog napretka s praćenjem linija po red i pomogla novajlijama da se usredotoče na ono što kod radi, prebacivanjem kognitivnog opterećenja pamćenja promjenjivih vrijednosti na memorijske tablice.

Učinak za instruktore je sljedeći: Dajte eksplicitne upute za opremanje novaka strategijama za rješavanje problema! Koristim tablice memorije kao instruktivni alat, ali znam da su i oni korišteni za procjenu.

Posljedice istraživanja su brojne! Ulažem u način da možemo koristiti predstavke poput memorijskih tablica za snimanje posrednih koraka u rješavanju problema kako bismo bolje razumjeli misaone procese i zablude. Također sam istraživao kako prevesti memorijske tablice u internetsku domenu. Ovo je istraživanje u tijeku, pa neka surađuje!

Ispod su resursi koji će vam pomoći naučiti strategiju ili proširiti studij, kao i poveznicu na rad i dijapozitive. Ponavljam da je ovo za mene još uvijek neprekidno istraživanje, pa vas molim da posegnete (komentar, e-pošta, tweet) ako ste učitelj koji želi ovu strategiju prenijeti u svoj razred, istraživač koji želi proširiti ovaj posao ili bilo tko drugi. Posebno biste trebali posegnuti ako ste znatiželjni polaznici! Radujem se što ću vas čuti.

  • Resursi za nastavnu strategiju, reproduciranje studija (GitHub)
  • Papir (ACM DL)
  • Prezentacije (PDF)