Oktatási célú disztibúció

Azon gondolkodtam a napokban, hogy hogyan kellene a programozást _jól_ tanítani? Milyen eszközt érdemes adni a gyerekeknek, és ahhoz milyen oktatást?

Eddig azt gondoltam, hogy a mai gyerekeknek sokkal jobb dolguk van: iszonyatos képességű gépekhez jutnak (én a C64, Enterprise korszakban kezdtem, de még 286-oshoz képest is ég és föld a mai helyzet), plusz bármilyen információt el tudnak érni egyetlen pillanat alatt ingyen a neten. Az volt eddig a koncepcióm, hogy:
* Meg kell szerettetni vele a témát. Legjobb, ha elérjük, hogy legyen valami kívánatos célja, amit el akar érni. Akkor belső motiváció szerint akar majd tanulni hozzá (pl. egy játékprogram írása).
* Meg kell tanítani információt keresni
* És innentől már elég néha ránézni, hogy jó irányba halad-e :-)

Mostanában viszont egyre inkább érzem a fejlődés átkát is:
* Minden _nagyon_ komplex lett. Aki azzal az igénnyel áll neki, hogy mindent érteni akar (ez lenne az ideális motiváltság), annak egy PC túl sok egyszerre.
* Minden "túl jó" lett. Amit a gyerek meg tud írni programban, az az elérhető tartlamakhoz képest "gagyi" lesz. Pl. egy GTA V.-öt nem fog tudni a "garázsban" összerakni. Ellenben a text módú "repülős bombázós" játékot, ami ez első gépemen volt össze lehet rakni házilag is. Mai körülmények között lehet hogy sokkal nehezebb motiváltnak maradni. Könnyű "fogyasztóvá" válni alkotó helyett.
* Ha az Internetet használja, az nem csak hatalmas információforrás, hanem hatalmas figyelemelterelő is. Plusz ha szabad internetezési lehetőséget kap a gyerek, akkor nagyon nehéz megvédeni a nemkívánatos tartalmaktól is.
* Lehetséges az, hogy a dolgok vizualizálása (pl grafikus programozás a gyerekeknek, vagy vizuális debugger, vagy akár a forráskód browse-olhatósága) valójában nem segít az agyi sémák kialakulásában? Ahhoz hasonlóan értem, mint ahogy azt szokták mondani, hogy a felolvasott mese is teljesen másképpen működik, mint egy rajzfilm.
* A hihetetlen sebesség sem biztos, hogy oktatási szempontból előny: az első számítógépünkön a fillpoly algoritmus futását a képernyőt nézve lehetett látni :-).

A fenti megfontolások után elképzeltem egy rendszert, ami "szimulálja a 80-as évek végét":
* Tisztán text módban működő gép.
* Valami BASIC-szerű programozási nyelv (hard-core rajongókank ASM).
* Dokumentáció papír könyv formában.
* Egy-két példa (játék) program, amiért lehet lelkesedni, és jó motivációs forrásnak.
* No Internet. Később esteleg jelentősen korlátozott net: HUP, Stackoverflow ilyesmi elérése szöveges módban.
* Esetleg művi lassítás - pl 8-20 MHz-re.

Szerintetek elképzelhető, hogy egy ilyesmi rendszer tényleg jobb lenne pedagógiai szempontból, mint akár egy Linuxos PC?

Hozzászólások

Az ötlet nem feltétlenül hülyeség, de szerintem általános oktatásra nem lenne alkalmas, már ami a motiválást illeti.

Van egy csomó program (értsd: lehetőség, nem szoftver) gyerekeknek/fiataloknak, amivel meg lehet próbálni felkelteni a figyelmüket, például: http://hourofcode.com/us

Egy Hour of Code esemény keretében pl. össze lehet rakni nulla programozói tudással és egy TouchDevelop nevű, a Microsoft Research által készített webalkalmazással össze tudnak rakni a gyerekek egy teljes Flappy Birds klónt. Vagy hasonlót.

Szóval nem olyan elkeserítő a helyzet. :)

Lego Mindstorms? Szerintem a robotika elég motiváló tud lenni.

Ha már ennyire szeretnél oktatni gyerekeket és beleölni x ezer munkaórát, akkor van jobb ötletem :
Csinálj egy játékot, ahol a gyereknek egy hackerrel kell játszania, a'la Watchdogs csak épp nem óvoda szintjére vannak a feladatok belőve. A játék világában minden egyes feladat megoldásához, a játékosnak meg kell hackkelni egy-egy berendezést a továbbjutáshoz. A hackkelés jelen esetben annyit takar, hogy egyszerű kódokat kell írni adott programozási nyelven. A manualt, tutorialokat simán bele lehet szőni játék menetébe, felvehető tárgyak képében.
Pl1. A játékos társát/barátnőjét/kutyáját/aranyhalát bezárják egy cellába ahonnan az ajtó kirobbantásával lehet kijuttatni, de előtte figyelmeztetni kell a cellában lévő monitoron keresztül, hogy álljon félre. Az őrség szobájában talál egy terminált és egy könyvet amiben az alap utasításokkkal, amivel tud írni egy "Helló Ajtó!" kódot.
Pl2. Hősünk talál egy mobilt, aminek nem tudja a pinkódját, de van egy robotja, ami nyomogatja helyette a telefont egy általa megadott sorrendben és minden harmadik próbálkozás után kikapcsolja és visszakapcsolja a készüléket. A robothoz tartozik egy terminál... (Gyk: ciklusok, maradékos osztás, alap bruteforce kód írása )

A sztorit végtelenségig lehetne fokozni, csavarni. Programozási nyelvként szinte bármit lehetne használni, de érdemes lenne olyant választani, ami későbbiek során jól használható a valós életben.
Amúgy csináltak már hasonlót pl. reverse engineeringre.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Igen, ez jogos. Magyarítani meg nem biztos, hogy jó lenne ezeket, rossz beidegződéseket hozna magával :)

Szerk: de ha van mellette valaki, akkor ez alapfokó programozás + angol okatásra is tök jó :) Ld. a mi generációnk egy csomó angol kifejezést a játékokból szedett fel. Csodálkozott is az angoltanárom középiskola elején, hogy honnan tudok én ilyen szavakat :)

Nekem sok progos szó onnan van meg: `repeat`, `while`, `until`, etc.

Én öcsémnek (13 éves) próbálok valamit, hátha megtetszik neki, mert talán egy biztos megélhetés lenne neki, ha tetszene. Egyébként érdekes, hogy iskolában egyáltalán nem találkoznak ilyennel kötelező szinten a gyerekek, pedig egy kis Python, alapvető algoritmusok talán sokat tenne a matematika/logikai készséghez is...

De nála az angol nagyon sokat visszavet ezen, főleg hogy iskolában is németes. :-\

szerk.:

Eléggé sokat gondolkoztam ezen ma.
Első körben, úgy gondolom sokat segítene, lendítene a fiatalok ilyen irányú érdeklődésén, ha egyszerre csak az egyik akadályt kell megugraniuk az angol&szemléletmód kettősből, s az angolt ki tudnánk ütni. Úgy gondolom (s az egyetemen a többieken végignézve, akiknek gondja volt a proggal) maga a szemléletmód kialakítása már hatalmas feladat, s ha ez megvan onnantól kevésbé szopás egy új programozási nyelvet megtanulni. Ergo, ha megtanul valaki egy Hunglish prgo. nyelvet, akkor a nagyján túl van, onnantól már csak egy apró lépés, hogy ugyanezen nyelv global változatát is megtanulja használni. A fentebb említett játékokat sokkal egyszerűbben tanulja egy angol anyanyelvű gyermek, mert neki a `if self.health < 15` sor olvasható, könnyen értelmezhető, míg egy magyar anyanyelvű ifjúnak ezt duplán kell magában értelmeznie.

Amit írtál, hogy rossz beidegződések, nem tudnék rá példát mondani.
Nem tartom valós beidegződésnek azt, hogy valaki magyar változóneveket használ, vagy magyar kommenteket ír, főleg, ha ezt 12-14 éves korban teszi. Nyolcadikos koromban én is magyar változóneveket írtam Pascalba, magyar kommenteket, aztán, ahogy haladt az idő, megszokja az ember, hogy angolul lesz minden. Hisz' angol dokumentációt olvasunk, angol az SO és az egész SE, angl a használt könyvtár belső kódja, stb.

Ami nehéz lehet, ha szeretnénk egy ilyet, hogy hogyan induljunk el? Gőzöm sincs, mekkora meló lehet "elforkolni" egy meglévő nyelvet. Mekkora részét kellene magyarítani egy nyelvnek? Magát a nyelv keywordjeit nyilván nem elég, az egyes könyvtárakhoz meg nem biztos, hogy elég egy wrapper–könyvtárat adni. Melyik könyvtárakat? Egy alap kiír-beolvas program kurvára nem vonzó ilyen korban, mikor az okostelefont tapogatjuk, nagyon valósághű játékokkal játszunk, amit mondok, a telefonom leírja, stb. Lehetne mutogatni a Logo nyelvekre, hogy van olyan magyarul, de már én is untam 12 évesen azt, hogy egy teknőssel rajzolgassak. Továbbá előkerülne a „melyik nyelvet elsőnek?” problémakör, amiben sosem tud a szakmai közösség dűlőre jutni. :-D

És akkor, ha van egy ilyen magyarított nyelv, lehetne építeni rá valami online játékot elsőre (mint a CodeCombat, vagy a fenti Rubys dolog), aztán fokozatosan átállítani a játékost az angol nyelv használatára.

tl;dr: szerintem hasznos lenne egy magyarított nyelv, de alaposan át kellene gondolni, hogy hogyan is fogjon neki az ember...

--
blogom

+1, imádnám.
Kickstarterre vele!

Semmiképp sem úgy hogy a múltszázadra készíted fel.

> Tisztán text módban működő gép.

A tabletek korában? Biztos megszeretteted vele jól a témát (ami önmagában fasz elképzelés hogy TE megpróbálod megszerettetni vele. Vagy érdekesnek találja magától vagy nem)

> Valami BASIC-szerű programozási nyelv

Múltszázadi tudást akarsz neki adni amivel ma sem megy egy fiatal semmire, nem hogy ő amikor dolgozó korba lép. FÖLÖSLEGES tudást akarsz neki adni, mert te így tanultad és nem tudsz kilépni belőle.

> Dokumentáció papír könyv formában.

Igen, ma így mennek a dolgok, hát még 15 múlva mennyire így fognak menni!

> Egy-két példa (játék) program, amiért lehet lelkesedni, és jó motivációs forrásnak.

Külső motivációs forrás nincs. Az egész téma vagy leköti a figyelmét vagy nem. Ha beleerőlteted ami nem érdekli csak utálni fog.

> No Internet. Később esteleg jelentősen korlátozott net: HUP, Stackoverflow ilyesmi elérése szöveges módban.

...........................................................................................dude

> Esetleg művi lassítás - pl 8-20 MHz-re.

Méééégis minek? Szakirányú tudás a mai piacon. Halálra fogod motiválni vele!

Adj alá egy Ubuntut és mutasd meg neki hogy több féle felület létezik hozzá. Mutasd meg neki hogy a felületet tudja config file-okból módoisítani és szórakozzon el vele. Ha nem tetszik neki akkor a 20 Mhzes szimuláció sem fog.

Adj alá egy Visual Studio-t ahol WYSIWYG szerkesztővel össze tud huzogatni egy felületet. Szólni fog hogy hé apa, azt akarom ha erre a gombra kattintok akkor ez történjen, ezt hogy kell csinálni? Ha nem kérdezi akkor a text-only basic kódolós baromság sem fogja érdekelni.

Nem értem ezt az indulatot. Egyelőre nagyon ráérek ezzel a kérdéssel, csak előre gondolkodom. Felvetem, hogy akár le is lehet lassítani a CPU-t, ha ez pedagógiailag indokolt lenne, erre te máris mikrokontrollerrel tönkretett gyerekkort vízionálsz.

Az egész egy gondolatcsíra, aminek a gyökere az, hogy egyre több tanulmány mutat arra, hogy az Interneten elérhető tartalom akadályozza a koncentrálást, illetve nagyon könnyen függőséget okoz. Példák: játékok, hírek, filmek, sorozatok, pornó. Ezekből most nem idézek, a lényeg, hogy ezt munkahipotézisként feltételezve elgondolkodtam azon, hogy oké, de akkor mi lenne az, ami viszont segíti a gondolkodást. Milyen környezetben tud jól fejlődni egy fiatal geek?

Nyilvánvaló, hogy egy kor után nem szabad elzárni a technológiától a gyerekeket, de az is az, hogy kontrollálatlanul sem szabad rájuk szabadítani.

> A tabletek korában? Biztos megszeretteted vele jól a témát
A tablet (tapi felület, nincs billentyűzet, és minden multimédia rajta) szerintem gyerekek esetén főleg csak a figyelem elterelésére jó. Lehetséges, hogy valamilyen módon valamit tanulni is lehet belőle, de még nem láttam jó példát az ismeretségi körömben, csak rosszat.

> [Basic] Múltszázadi tudást akarsz neki adni
Nem a programnyelv a lényeg, hanem az algoritmukus gondolkodás. A Basic-ben egyébként egyáltalán nem vagyok biztos, csak egy tipp volt. Igen, azért mert én azzal kezdtem, és könnyű volt megérteni, volt sikerélmény hamar. Java, Python, esetleg C, ASM is elképzelhető. Attól is függ, hogy milyen vérmérsékletű gyerekről van szó.

> Igen, ma így mennek a dolgok, hát még 15 múlva mennyire így fognak menni!
Engem nem az érdekel, hogy mások mit csinálnak, hanem hogy mi a jó. Szerintem van előnye a papírkönyvnek az elektronikussal szemben. Nevezetesen az, hogy az ember (főleg még gyerekkorban) a fizikai világhoz kötött sémákban tud gondolkodni, és ami fizikailag létezik, azt jobban tudja kezelni.

> Külső motivációs forrás nincs
Persze hogy a motivációnak belülről kell jönni, ebben nem kételkedem. De ha lerakom egy tablet elé, akkor arra lesz motivációja, hogy egyfolytában idióta meséket nézzen a neten, vagy hogy megvegye az elektropónijának a kötött szvettert. (Igen, ezek életből vett példák.) Ha viszont olyan eszközt adok a kezébe, amin gondolkodni kell, de folyamatosan jutalmazza (megérteni valamit mindig öröm), akkor van rá némi esély, hogy a technikai oldala is érdekelni fogja.

>> No Internet.
>....dude
Az a munkahipotézisem, hogy az Internetnek van egy komoly figyelemelterelő hatása is, ami gyerekekre nézve még ártalmasabb, mint felnőtteknek. Erről mi a véleményed?

>> Esetleg művi lassítás - pl 8-20 MHz-re.
>Méééégis minek?
Azért, mert így "érezhető", hogy ami programot írt a gyerek, azzal a gép dolgozik. Így jobban lehet a fogalmakat a fizikai világhoz kötni.

>Adj alá egy Ubuntut és mutasd meg neki hogy több féle felület létezik hozzá. Mutasd meg neki hogy a felületet tudja config file-okból módoisítani és szórakozzon el vele. Ha nem tetszik neki akkor a 20 Mhzes szimuláció sem fog.

Ez is egy módszer. A videonézegetésnél jobb, de nem biztos, hogy a legjobb.

>Adj alá egy Visual Studio-t ahol WYSIWYG szerkesztővel össze tud huzogatni egy felületet. Szólni fog hogy hé apa, azt akarom ha erre a gombra kattintok akkor ez történjen, ezt hogy kell csinálni? Ha nem kérdezi akkor a text-only basic kódolós baromság sem fogja érdekelni.

Szabad szoftverekben hiszek, úgyhogy akkor már inkább Eclipse. De pont az volt a hipotézisem, hogy a kevesebb talán jobban foglalkoztatja az agyat, és ezért egy text-only rendszer jobb lehet.

Eszembe jutott két dolog:

Az egyik a Raspberry Pi. Ugye oktatásra szánt, működni is látszik. Lásd raspberry blog, csomó hír van ami arról szól, hogy lelkes diákok miket alkottak.

A másik a hacked nevű játék. Ha még nem próbáltátok, hajrá. Azt hiszem volt már itt szó róla.

https://play.google.com/apps/testing/com.hackedapp

"* Valami BASIC-szerű programozási nyelv ...
* Dokumentáció papír könyv formában.
* Egy-két példa ... program, amiért lehet lelkesedni, és jó motivációs forrásnak."

középiskolás korúaknak (vannak benne pascal kódok is):

http://www.typotex.hu/book/129/fried_katalin_simonovits_miklos_a_proble…

+

http://smallbasic.sourceforge.net/

http://www.basic256.org/index_en

http://sourceforge.net/projects/sdlbasic/

----
"Kb. egy hónapja elkezdtem írni egy Coelho-emulátort, ami kattintásra generál random Coelho-kompatibilis tartalmat."
Instant Coelho

Köszi a linkeket! A könyvre nagyon kiváncsi vagyok! Ebben a sorozatban eddig csupa jó könyvet láttam.

A basic-256 nyitóoldalán van egy cikk: http://www.salon.com/2006/09/14/basic_2/

Pont azt írja le, amire próbáltam gondolni a blogposzt írásakor, csak kicsit értelmesebben. De nagyon egyetértek vele. Ki fogom próbálni.

"disztibúcióval" oktatni helytelen dolog. :)