Mi sarkantyúzna, nagy eszmék miatt,
Hogy a muló perc élvéről lemondj?
Míg most, jövőd ködön csillogva át,
Ha percnyi léted súlyától legörnyedsz,
Emel majd a végetlen érzete.
S ha ennek elragadna büszkesége,
Fog korlátozni az arasznyi lét.
És biztosítva áll nagyság, erény.Madách Imre, Az ember tragédiája, http://mek.oszk.hu/00900/00914/html/madach15.htm
Kedves Hallgatóim, ebben a posztban az ("interprogkurzus") közös feladatsort állítjuk össze. Hogy idővel ezek a feladatok kinövik-e magukat a most (és egy ideje már) tervezett államvizsga beugró programozási feladatoknak, az jelen pillanatban még kérdéses. S könnyen meglehet, hogy az a szintén jobbító motivációjú, ám opponens megközelítés győz, miszerint "scanf háromszög oldalai, printf területe" jellegű feladatok kellenek az államvizsgára. Ez a megközelítés tőlem nagyon távol áll, mert meggyőződésem, hogy a tervezett államvizsga feladatsorokat a külső megfigyelők, például
- az egyetemet kereső közéspiskolások
- a K+F feladatokat, vagy egyszerűen szakértést kihelyezni tervező
- a munkaerőt kereső cégek
- a támogató vagy versenyben álló társintézmények
a mi interpretációnktól függetlenül a képzésünkkel fognak azonosítani, azzal az egyszerű heurisztikával, hogy "mi ezt tudjuk".
Az imént említett "opponenes példa" programozási nyelvi szempontból véleményem szerint értékelhetetlen (nem a beépített matematika miatt, hiszen egy algoritmusnak egy hatékony megvalósítását, mondjuk párhuzamos környezetben például CUDA-val, vagy OpenMP-vel természetesnek és fontosnak tartom - mint ahogyan vannak is ilyen laborfeladataink - de ezek az algoritmusok azért túl kell mutassanak a szóban forgó Hérón képlet szimpla alkalmazásán :)
S persze azt se feledjük, hogy a mi megközelítésünkben a hallgató minden esetben internetes gépével dolgozhat (így a prog1 laborvédéseken, szóbeli és írásbeli vizsgán vagy akár a tervezett államvizsga beugrón is). Jó intuitív kép, ha az ideális informatikus mérnök hallgatónkat úgy képzeljük el, hogy a Linuxos laptopja rá van operálva a karjára :)
A kép csak illusztráció.
E kis bevezető után tehát íme a mi kurzusunk hozzájárulása a prog1 közös feladatok halmazához. Vegyük észre, hogy az általunk a közösbe delegált feladatok rendre a laborfeladataink, a másodiktól labortól az utolsókig. (A feladat nehézségét a kiírás elején tüntetem fel, s egyben most fel is adom ide beküldhető trófeának a feladat tiszta C++* megvalósítását, feladatonként az első 10 hallgatót pontozom).
- [7 pont] A Google PageRank algoritmus implementációja C++ nyelven (didaktika: kvázi két egymásba ágyazott for ciklus a mátrix-vektor szorzás megvalósítására). Ezzel a feladattal a 2. laboron foglalkoztunk.
- [9 pont] Az EXOR-os titkosítás brute force törése C++ nyelven. Ezzel a feladattal a 3. laboron foglalkoztunk.
- [15 pont] Liv, Zempel, Welch algoritmussal bináris szófa építése, a fát jellemző mennyiségek meghatározása a Humán Genom 2. kromoszómájára, C++ nyelven. Ezzel a feladattal a 4-5. laborokon foguk foglalkozni (illetve ez lesz az első laborvédés témája).
- [20 pont] A Conway-féle életjáték grafikus megvalósítása Qt C++-ban. (Tavaly itt foglalkoztunk vele, idén majd slot-signal-ra átírni a callback helyett lesz a téma.)
- [22 pont] OpenMP alapú Mandelbrot-halmaz nagyító és mentő program írása C++ nyelven. (Tavaly itt foglalkoztunk ezzel.)
- [23 pont] POSIX Threads alapú Mandelbrot-halmaz nagyító és mentő program írása C++ nyelven. (Tavaly itt foglalkoztunk ezzel.)
- [27 pont] CUDA alapú Mandelbrot-halmaz nagyító és mentő program írása C++ nyelven. (Tavaly ez nem volt, de itt a részletes kidolgozása.)
- [35 pont] 2D grafikus megjelenítő írása a Quantum Consciousness Soccer Simulator - kvantum-tudatos foci szimulátorhoz C++ nyelven, Qt-vel.
- [70 pont] Saját Lexer osztállyal felszerelt 2D RoboCup Soccer Simulation multiágens robotfoci csapat készítése C++ nyelven. (Kiindulási csapatod lehet például majd a Debrecen Round Forest FC++, természetesen nem ezzel kezdünk a laboron.)
- [100 pont] Saját Quantum Consciousness Soccer Simulator multiágens foci és szurkolói csapat készítése C++ nyelven.
A második laborvédés témájaként az utolsó 3 feladat egyike választható (amelyet nyilván egészen más szinten kell ismerni közös feladatként illetve laborvédésként).
*: C++ headerek, malloc->new stb.