A hivatali dolgokra nem térünk ki, ezek a sillabuszban elolvashatóak. Csupán az egyik alaptulajdonságot emeljük ki: MINDENT LEHET MINDENHOL HASZNÁLNI, sőt a számonkéréseken az internetképes Linuxos gép használata alapvető! Ehhez persze frissíteni kell a kurzust, esetünkben például a számonkérés egyedi, itt van páldául az utolsó vizsga: ahol a beugró a titkos fájl dekódolása. Mostantól ezek a vizsgák nem kerülnek le a webről, ennek megfelelően folyamatosan nehezedni fognak, ez a minőségbiztosításunk alapja. Találkoztunk ezzel az elvvel már a félévben: a hallgatóság némiképpen zúgolódott, amikor megtudta, hogy a tavalyi és a tavalyelőtti bajnok (most laborvezetők) is ugyanúgy résztvesznek a hallgatói robotfoci C++ alapú bajnokságban mint a kurzusba most belépő elsősök. Ez azért volt fontos, hogy ne nulláról induljunk, hanem szokjunk hozzá ahhoz, amit már Newton is tudott, hogy "óriások vállán kell állni", az ICT-ben ez méginkább így van, jobban mint a matematikában vagy fizikában bármikor.
A számonkérés modernizálása spektrumának másik vége a külső fejlődés, gondoljunk csak bele, hogy mi lesz, ha a hallgatók zöme dioptriás Google Glass-al ül be a vizsgára? Levetetjük a szemüvegét és ezzel az internetet, vagy eleve olyan vizsgát szervezünk, ahol az internet használata alapvető! De most ne oktatás-politizáljunk, hanem koncentráljunk a kurzus áttekintésére.
A jelen
Az informatikai iparnak
A kurzussal tervünk, hogy sw-fejlesztő nagy játékosok figyelmét is felkeltsük (csak, hogy el tudjuk helyezni az álmainkat ilyen lehetne pl. a Google, vagy a Motorola Mobility :) Persze egy most induló kurzus semmi referenciával nem rendelkezik, ráadásul a C++ képzést is csak most indult be: éppen ezzel a kurzussal. Ezért ilyen partnerek figyelmének a felkeltéséhez nagyon jó vízió kell, ami csak nekünk van: amolyan "toruk makto"-s belépőre lesz szükségünk, de van ötlet nyugalom :) amivel párhuzamosan persze szisztematikus építkezést is kezdünk, ez lesz a 2010-ben már kicsiben kipróbált "céges feladat" intézménye. Itt az elképzelés durván az, hogy a prog12 után a hallgatók adott része sikerrel vegye egy komolyabb céges felvételi feladatsor (pl. Boost C++) teljesítését is, a kurzus hackerei pedig más szakértsenek a cégeknél. A céges feladat koncepciót majd pár sorral később a jövő alatt fejtjük ki.
Leendő hallgatóinknak
Mit üzen a kurzus a középiskolásoknak, azaz leendő hallgatóinknak? A jelen debreceni programozás hangolásának fontos eleme lesz, hogy a diákok tudatosan válasszanak minket, ezt a választást segíthetik a hallgatói feladatként előálló kurzus promó prezik és videók. Mint minden a kurzusban ezek is versenyben születtek, ezek speciálisan Face-es versenyekben, de most szubjektíven a magam kedvenceit linkelem ide közvetlenül:
Videók
- http://youtu.be/9Lb7vx9hcbQ
- http://youtu.be/di_Fo_ZbtpM (itt 2:50-től van egy "Pincés Lajos" interjú, ami a mém Szalacsi Sándor videóra hajaz
Prezik
- http://prezi.com/crusmj54es1-/magas-szintu-programozasi-nyelvek-1/
- http://prezi.com/5xsei-ikutlu/magasszintu-programozasi-nyelvek-1/
Mennyi az annyi?
Számok nélkül nincs értékelés, jöjjenek hát röviden a számok! 128-an vették fel úgy a kurzust, hogy aláírásra, azaz laborteljesítésre is szükségük volt, közülük 75 hallgató kapta meg az aláírást és 53 hallgatótól tagadtuk meg azt, ez durván 58%-os laborteljesítést jelent.
Anonim hallgatói visszajelzés
Ezt a szabadon választható felmérést az utolsó héten megjelenők közül 50-en adták be. Először a kurzus 32 alap "fícsör"-éről kérdeztük anoním módon (de laborvezető szerint és további 4 csoportba oszva a gyűjtött pontjai alapján) a hallgatóságot annak tükrében, hogy mi-mennyire tetszett a félévben, ahol az 1 a sehogysem és az 5 a nagyon. Jól látható, hogy az átlagolás után csupán az utolsó 4 tétel szerepel az átlag alatt, az sem sokkal egyébként, de az összes többi az átlag felett teljesít, méghozzá a "Versenyek" c. tételtől felfelé a 4-es átlag felett:
Jelmagyarázat:
Chomsky | Chomsky-féle nyelvosztályok megismerése |
Lexer | Lexikális és szintaktikai elemzés háttere |
Halt | Halting problem |
C(x) | Kolmogorov bonyolultság nem rekurzivítása |
K&R | K&R könyv |
Stroustrup HU | Stroustrup könyv (a magyar) |
BME-s | “BME”-s könyv |
Ezüst | “Ezüst” könyv |
Évkönyv mo. | “Tankönyvként” az évkönyv megoldás részei |
Stroustrup EN | Stroustrup könyv (a C11-es angol) |
A LinkedIn es szakmai posztok, tanulási szempontból | |
Binom | A binom rendszer tanulási szempontból |
Tutor | A tutor rendszer tanulási szempontból |
Videó | Mások videó alapú megoldásai tanulási szempontból |
Forrás | Mások forráskódjai tanulási szempontból |
Gen. | Az első védés témája (Humán genom feldolgozása) |
Védés 1. tech. | Az első védés nyelvi tartalma (pl. OO, nested class, UML kompozíció, később másoló és mozgató szemantika) |
2D RCSS | A második védés témája (2D RCSS) |
Védés 2. tech. | A második védés nyelvi és technológiai szempontból (lexer osztály kiterjesztése, autoconf csomag, Posix szálak, C11 stb.) |
Közösség | A második védés közösségépítő ereje |
man | A manuál lapok használata |
API | Az API doksi használata |
Qt | Qt |
Mat. | Matematikai hátterű feladatok (pl. PageRank sajátérték, Mandelbrot) |
Kreatív | Kreatív feladatok (pl. biomorfok) |
Laborkártya | Laborkártyák intézménye |
Olv. | Binomi könyvolvasás |
Pontverseny | Pontverseny, jegymegajánlás |
GNU/Linux | GNU/Linux használata programozásra |
DocBook 5.1 | DocBook 5.1 használata a kurzus dokumentációs formátumaként |
Git | Git használata a verziókezelésre |
Versenyek | Versenyek (pl. Face-es, vagy PLB, PLK, Kolmogorovi bitfaragás) |
A felmérés második részében szabadon tölthették ki a hallgatók a
- Javaslatod a következő Prog1-re, mit tartsunk meg?
- Mit hagyjunk el?
- Mit adjunk hozzá?
pontokat. Ennek alapján készítettük az alábbi "értelmezett" eredményt: a nem szakmai javaslatokat kiszűrtük (pl. "táncos lányok") a túl általánosakat (mit tartsunk meg: "MINDENT", mit hagyjunk el: "SEMMIT") hasonlóan, azaz bár utóbbiak nagyon értékesek, de nem számoltuk most bele, mivel úgyis a leendő elmozdulási irányokat akarjuk most tapintani (de nyilván a szereplő szófelhő pozitív irányához vehetnénk ezeket hozzá, ilyen lapból egyelőre 4-et számoltam egyébként). A pontozási módszer az, hogy adott témához + vagy - két pont, ha a tartsuk meg/hagyjuk el rovatban szerepel, ugyanígy 1 pont, ha az adjuk hozzában több/kevesebb módosítókkal szerepel. Alapvetően 4 osztály van: a {nagyon támogatja, nagyon ellenzi} x {nagyon sokan, nagyon kevesen} szorzat mentén. Például a Qt-t és a tutor rendszert sokan-nagyon támogatják. A binom-rendszert és a robotfocit sokan szerepeltetik, de a támogatásuk és ellenzésük az átlag környékére hozza ki a témát, de ez eredő még mindig a támogatásba esik. A hegylakó szabály vagy a K&R könyv eredője már egyértelműen az ellenzésben van, de ezeknél a tételeknél nem olyan magas azok száma, akik foglalkoztak vele. A nagyon sokan nagyon elutasítják osztály pedig nem szerepel. Végezetül a nyers adatokban olyan szereplő tételek is vannak, ahol nyitott ajtókat döngetnek a kitöltők, hiszen a pontversenyben a vizsgakurzusosok is résztvehetnek, s Nekik is adok természetesen megajánlott jegyet, ha megszerzik (illetve most már múlt időben, ha megszerezték).
A tartalmi munka tekintetében bárki tetszőleges statisztikát legenerálhat, hiszen a Git repó teljesen nyilvános a sourceforge-on hosztolt UDPROG (The Yearbook of the Programmers of University of Debrecen) projekt keretében. Most csak a közös munka beindulásáról szóló videót ágyazzuk ide:
Szubjektív értékelésem szerint nagyon erős az évfolyam, egyfelől soha nem jutottunk még ennyi élményhez egyetlen évben sem a prog1-ben (konkrétan sokszor tűnt úgy, hogy lehetetlent kérünk, de mégsem volt "hiszti", hanem szakemberek módjára reagáltunk). Másfelől olyan 60%-os terheléssel ment a kurzus ahhoz képest, amilyen az ideális lesz. Milyen lesz az idealizált? Erre is láthattunk már jeleket ebben a szemeszterben: amikor a felsőbb évesek, nyilván nem a laborvezetők, hanem csak a spontán érdeklődők lesznek az aktuális hallgatói munkák opponensei, bírálói, kipróbálói - ezt érezném a "csúcsnak", mint a Platón-Arisztotelész face-to-face tanításának mai egyetemi közegre adaptálását.
Ars poetica
Még hallgató koromban (az akkori PTM "elméleti fizika" sávján, igen, ilyen is volt :) hallottam forradalmi gondolatokat Bárdos Gyulától, aki akkor az Elm.Fiz. tanszékvezetője volt talán. Ő az elméleti és kísérleti fizika mellett megkülönböztetett "számítógépes fizikát"... de nem ez ragadott meg, hanem amit például a matematika szogorlatról mondott, ami akkoriban a szűk keresztmetszet volt általában a programozók áteresztésében. Nevezetesen azt mondta, hogy ma már (kb. 1996?) a matematikai szigorlaton nem a klasszikus módon kellene tudnia azt egy hallgatónak, amit kérdeznek Tőle, hanem egy matematikai programcsomagból kéne azt a tudást effektíve használnia, konrétan nem papíron integrálni, hanem egy komplex matematikai csomag integrálna és a hallgató valódi esetekben tudjon integrálni. Forradalmi volt nekem, s idővel ugyanezzel a motívummal találkoztam a saját szakmámban is. Amikor például megnyertem az országos Java programozói versenyt egy a böngészést támogató proxy szerverrel, akkor abból azért nem lett termék, mert a programom - mivel magam írtam a HTML szemét elemzésére/tokenizálására a nyilván ezért spagetti-kód "ha ilyen karakter a következő, akkor..." elemzőt- 20-30 év "lemaradásban" voltam az informatikai kultúrától, de már pár évre a Java API-tól is (mentségemre szolgáljon, hogy az egyetemen akkor még messze nem volt Java, de ez persze nem számít). Ami számít, hogy legalább egy lexert kellett volna írnom és akkor lehetett volna killer app., de legalábbis esély a sikerére! Ezért kezdtük mi már alapban a lexikális/szintaktikai elemzést a flex(/bison majd később)-el, nem beszélve arról, hogy a "sztring-mechanika" már régen elbújt az objektumokba. Persze a programozó egyedfejlődésében is kell ez, de kéne már sokkal korábban a középiskolában, az egyetemi imperatív programozásnak már az STL-ről kell(ene) szólnia. Egy átmeneti megoldás akár lehetne, hogy a bevinfó adná a K&R könyv feldolgozását a könyv csatlakozás a UNIX operációs rendszerhez részéig, de nem akarom ezt a posztot az oktatás-politika felé elvinni, jöjjön inkább a jövő.
A jövő
A szakmai munka szervezését, miután jó visszajelzéseket kapott, továbbra is nyíltan, az ipari szereplőkhöz közel a Linkedin-es csoportunkban folytatjuk. A hivatali dolgokra most külön nem térünk ki, de lehet kommentelni, hogy mit rögzítsünk a sillabuszba. Fontos, hogy a prog1-ben szerzett pontok átvihetőek a prog2-re, a szerzett pont - 300 képlettel. Természetesen a kurzus felépítése, szervezése a jelen prog1-el egyezik majd meg. A laboron a robotfoci szerepét a "céges feladat" intézménye veszi át. Persze a robotfocit is lehet tovább űzni, hiszen elvben nem elképzelhetetlen olyan AI tárgy, ami ezzel foglalkozna, de ez már nem a mi hatáskörünk/érdeklődési területünk. Ami ebben az irányban az, az a nyári ösztöndíjas szuperfoci projekt, ahol ha sikerül eredményt elérni, akkor azt nyilván érdemes lesz egyfajta céges feladatként a prog2-ben is szerepeltetni, ahogyan a kvantum-tudatos foci (és annak egy Boost alapú implementációja) esetén is hasonlóan járhatunk el, hiszen az már teljesen a mi platformunk!
Tankönyv tekintetében a Stroustrup 2. kötetét forgatjuk majd, de nem direkt olvasással, hanem mazsolázott részekkel STL témákban, illetve pár C11 elemet veszünk át, például a konkurrens programozás nyelvi támogatását, illetve a C11 kapcsán szimultán tárgyalunk kapcsolódó Boost technikákat. A direkt olvasandó könyv a Nyékyné-féla Java könyv lesz, az fő oktatási platform pedig az Android Java, a YANOnymous kapcsán.
De jöjjön pár tartalmi vízió! Vagy legalábbis irány.
Víziók
Mi is lehet? Itt még mindig gond, hogy az ember nem tudja eldönteni, hogy vizionáljon-e az egyetemen... de ez a kérdés gyorsan kivezet a mi hatáskörünkből, így nem érdemes itt boncolgatni. Lássunk egy olyan irányt, ahol ez a kérdés komolyan nem merülhet fel, hiszen a "licencek" itt eleve le vannak osztva, hiszen itt a GNU/Linux kernelt tervezzük patchelni: Genesis Patch.
Egy másik ágy lehet az autóipar egy még nem is létező szegmense :) Könnyan alakíthatunk ki víziókat, ha figyeljük az aktuális híreket mondjuk a Google robotautók témában, például:
persze a vízió akkor érdekes számunkra, ha a mi szerepünket is vázolja.
Ez a két aktuális hír lehet egy jó vízió alapja, e mentén vizionáljunk, hogy "milyen izgalmas programot írjunk", semmint a kommit számon :)
Azért ha olyan víziód jön, amit akár programozni is el lehetne kezdeni, azt ne írd le kommentbe! :)
Céges feladatok
A bevezetőben említett ezen intézmény részletes kibontását az évkönyvben találod (aktuális feladatként, illetve külön az appendixben szabályozva leírva). Most csak néhány kulcselemére világítunk rá. Jobban fedné az elképzelést a "cégek által kiírt oktatási célú programozási feladatok", de az kissé nehézkes. Maradjunk ezért a korábbinál és fejtsük ki, mit értünk alatta.
A 2014-2015 tanév szeptemberi szemeszterétől a Magasszintű programozási nyelvek 2 (Prog2) labor teljesítésének egyik szükséges feltétele lesz tehát egy céges feladat kidolgozása. A céges feladat lényege, hogy szoftverfejlesztésben exponáló cég specifikál egy feladatot olyan feltételekkel, miszerint a feladat leírása, a cég neve, illetve opcionálisan egy kontakt fejlesztő neve, email címe, továbbá a feladat megoldása bekerülhet a GNU GPL v3-as engedélyű UDPROG projektünkbe.
Fontosnak kiemelni, hogy a céges feladatok semmiképpen sem valamilyen konkrét "céges munka" elvégzéséről szólnak, hanem sokkal kevesebbről. Mert azt biztosítani akarjuk, hogy egyetlen résztvevő se, azaz se a hallgató, se az egyetem, se a cég ne viseljen semmiféle felelősséget, illetve semmiylen anyagi aspektus se merülhessen fel. Ezt azzal érhetjük el, hogy a szóban forgó feladatok nem a cégek egy valódi feladatának valamilyen részét alkotják, hanem sokkal inkább direkt erre a célra kitalált fiktív feladatok legyenek, amelyek vonzóak a hallgatóknak, hiszen a cégek feladatai a beküldéssel egyértelműen egy versenyhelyzetbe kerülnek, mivel a kurzus hallgatói teljesen szabadon választhatnak a feladatok közül. A kihívás és a megvalósíthatóság fontos szempont lesz a választó hallgatóknál, ezért érdemes a feladatot úgy skálázni, hogy tartalmazzon kihívás és könnyebben megvalósítható részt is, hogy a hallgató egyszerre akarja és merje is választani. (Megjegyezhetjük, hogy ezen törekvésünk ellenére van olyan cég is, akiknek belefér, hogy éles feladatot írjanak ki, ezzel elfogadva egyben, hogy a feladat és annak megoldása a GNU GPL v3 engedéllyel szerepeljen az UDPROG projektben.)
Nézzük meg a 3 tipikus használati esetet:
- Miért jó ez a hallgatónak? Mert olyan feladaton tud dolgozni, amely remek teljesítés és kölcsönös szimpátia esetén akár potenciális belépőjegye is lehet a kiíró céghez!
- Miért jó ez a cégnek? Mert skálázott módon (egyrészt a kontakt fejlesztő közvetlenül vizsgálhatja a céges feladatukon dolgozók aktivitását a git repóban, másrészt a kiíró cég megkaphatja csak a legjobb megoldások munkáit, vagy előre egyeztetett, akár a kiírásba is bevett anyagokat, pl.: prezi vagy videó a megoldásról, annak folyamatáról stb.) tudja megismerni, megvizsgálni néhány leendő potenciális munkatársjelöltjét.
- Miért jó ez az egyetemnek? Mert minél inkább közel tud kerülni egymáshoz a két fenti választ, annál inkább minket fognak választani a legjobb képességű diákok a régióban.
Kik vagyunk mi? Megtudod az évkönyvből a Debreceni Egyetem programozói évkönyvéből.