extrák az önéletrajzban (programozási...
TRANSCRIPT
V 1.0 ÓE NJSZK 1
Extrák az önéletrajzban
(programozási versenyekkel)
Szabó-Resch Miklós Zsolt
Ügyvivő Szakértő
V 1.0 ÓE NJSZK 2
V 1.0 ÓE NJSZK 3
V 1.0
Miről lesz ma szó?
• A felsőoktatás szubjektív célja
• Történetek
– Green Code
– Kockanap 2013: Laby/Mario
– Kockanap 2014: SpaceBattle
– Kockanap 2015: DynaBlaster
– Kockanap 2016: Battle City
– Kockanap 2011: PizzaCompany
– IPCV 2012, Koblenz
• Szubjektív és érzelmekkel teli konklúzió
ÓE NJSZK 4
V 1.0
A felsőoktatás célja?
„Az informatikaoktatás teljes szemléletváltására és megújítására van szükség”
(IVSZ, 2015/16, „Kutatás az informatikus munkaerőhiányról”)
ÓE NJSZK 5
V 1.0
A felsőoktatás célja – Dr. Vámossy Ferenc
ÓE NJSZK 6
V 1.0
A felsőoktatás célja - szerintem
• A BSc képzés elsődleges megrendelője: az ipar (… és részben az MSc/PhD képzés)
• Az MSc képzés elsődleges megrendelője: az egyetemek, tudományos élet, és természetesen itt is az ipar
• Személyes céljaim
– Ipari szempontból hasznos tudást átadni
– Ipari szempontból hasznos NÉZŐPONTOT átadni
– A fejlesztői munka CSAPATMUNKA jellegének hangsúlyozása
– KARBANTARTHATÓ KÓD, mindenek felett
– … És ezeknek a megjelenése a hallgatói CV-ben
• De sok minden a hallgatón múlik! ÓE NJSZK 7
V 1.0
A felsőoktatás célja - szerintem
• A CV-ben nem elég a „végigcsináltam a BSc képzést” sor
• Szükséges „extrák”:
– Nem hétköznapi órai projektfeladat
– Nyári egyetemek
– Erasmus
– Szakkollégium (!)
– TDK/OTDK
– Nem hétköznapi szakdolgozati téma/kidolgozás
– Nyelvtudás, egyéb személyes kompetenciák
• Programozási versenyen való részvétel
ÓE NJSZK 8
V 1.0
Szervezzünk programozási versenyt!
„Elképzelhetetlennek tartom, hogy én valaha is egy ilyen dolog szervezésében aktívan részt vegyek…”
(Szabó Miklós Zsolt, a 2011-es kockanap után)
ÓE NJSZK 9
V 1.0
Green Code – így megy külföldön
• Franciaország, ESAIP, 2015-16
• Nehéz feladat helyett könnyű feladat profi megoldásán van a hangsúly
• 48 óra
• Minél optimálisabb megoldás
– Memória
– CPU = Watt
– Storage bytes
– Transfer bytes
• Nagy támogatók, sok résztvevő, nagy díjak: San Francisco, Silicon Valley
ÓE NJSZK 10
V 1.0
Green Code – így megy külföldön
• 2015
– Téma: Web
– Image slideshow (JS + szerveroldal)
– jQuery mobile + minification + minimal non-framework backend
• 2016
– Téma: IoT
– Adattovábbítás több eszközön keresztül
– Linux + Windows megvalósítás is
• 2017
– A szervező sajnos elhagyta az egyetemet…
ÓE NJSZK 11
V 1.0
Programozói verseny – szervezői oldalról
• Nagyon sokszor egy személyes projektek
• A szerveroldal teljes fejlesztői feladata a főszervezőre hárul full stack fejlesztés, mindegyik program
• A nagyobb versenyeken több szervező, megosztott feladatokkal
• Nálunk Kurzi Zsombor akkori MSKK vezető (és főisten) indította 2010. tavaszi félévben
• Programozói tapasztalattal, verseny-résztvevői tapasztalattal, cél az ipari személetmódok és a csapatmunka készségek intenzív használata és fejlődése
ÓE NJSZK 12
V 1.0
Kockanap, Kockanap Inside
• WinTheWeb / MS Imagine Cup mintájára
• 24 órás, „bentlakásos” szoftverfejlesztés
• A feladat nehezebb, bonyolultabb tudást igényel, a cél valamilyen AI fejlesztése
• Csapatmunka mindenek felett!
• Egy versenyen többet lehet tanulni, mint egy félév alatt? Talán nem, de mindenképp NAGYON sokat!
• Kockanap Inside: 2010. telén még „LAN party”, 2014-től belső programozási verseny csak NIK-es hallgatóknak
ÓE NJSZK 13
V 1.0
Kockanap 2013, Laby
ÓE NJSZK 14
V 1.0
Alapvető kérdések
• Platformfüggetlenség Kommunikáció SOAP/WCF (Teljesítmény szempontjából nem a legjobb döntés)
• Nehézség ki a célközönség? Közepes
• Kisfeladatok, bónuszok kevésbé unalmas Nincs rá idő, ez probléma… (a változatosság csökkenti a monotonitást)
• „Jó” játék a végén ez a lényeg! Mario! (Na jó, Prehistorik2 / Commander Keen, de az túl nehéz)
• Cooperative mode nem működik
• Magic words = fun
ÓE NJSZK 15
V 1.0
Tervezés
ÓE NJSZK 16
V 1.0 ÓE NJSZK 17
V 1.0
Kockanap 2014, Space Battle / nano war
ÓE NJSZK 18
V 1.0 ÓE NJSZK 19
V 1.0
Classes, classes, classes…
ÓE NJSZK 20
V 1.0
Protokoll!
ÓE NJSZK 21
V 1.0
Space Battle
• TCP protokoll, stabil, de erőforrás-igényes
• „The user is always evil” (PHP gyakorlaton) – ha nem is „evil”, de mindig a legrosszabbra kell készülni, még itt is
• Kisfeladatok (Pintér Ádám!!!)
– MoveSpeedMultiplier=1
– ShootDistanceMultiplier=1,5
– IncTimeMultiplier=2
– RadarStrengthAdder=0
• Biztonságos szálkezelés: bonyolult!
• Kockanap Inside: Sok, LÁTVÁNYOS megoldás VAN ÉRTELME!!!
ÓE NJSZK 22
V 1.0
Space Battle – Az intelligens megoldás nyer?
• A „józan paraszti ész” nagyon sokat segít!
• A sok gondolkozás helyett a gyors döntések jobban bejönnek
• Sok kis felfedező-hajó = TCP flood
• A késleltetett és töredékes információ-morzsák kiegészítése bonyolult, ez a feladat nehézsége
• A látványos megjelenítés nagyon fontos!
ÓE NJSZK 23
V 1.0
Kockanap 2015, Dynablaster / Bomberman
ÓE NJSZK 24
V 1.0
Saját DynaBlaster
ÓE NJSZK 25
V 1.0 ÓE NJSZK 26
V 1.0
DynaBlaster
• Szálkezelés: „Synchronization bottleneck”
• TCP Multicast UDP Switch??? Quick Unicast UDP
• Game Communication megfeleltetés LOOSE COUPLING!!!
• Ezúttal is töredékes információmorzsák, de XML helyett a bytestream-szintjén sorszámozott UDP csomagok
• Látványos megoldások, de itt tényleg a brute force teljesen jó: „hátha talál” (+ Tie breaker: robbantások)
• Bonyolult pályatervezés és pontatlan jósolás helyett „egyszerre csak egy mozgás” volt a nyerő
ÓE NJSZK 27
V 1.0
DynaBlaster
ÓE NJSZK 28
V 1.0
Kockanap 2016, Battle City
ÓE NJSZK 29
V 1.0
ÓE NJSZK 30
V 1.0
Battle City
• Jól megtervezett, full-unicast UDP protokoll (a versenyző csinálja a szervert!)
• Szinte lag-free kommunikáció, szuper packet counter
• Tie breaker: mozgások
• A legjobb AI közel utolsó lehet, ha nincs felkészítve pont arra a pálya-típusra: „Erre pont nem gondoltunk”, pedig csak egy falon kellett volna átlőni …
• A brute force megoldás nem annyira jó, de miért kellene 20 tölténnyel várni a játék végét? Csak 1 csapat gondolt rá…
• Videók!!! (Ozsvárt Károly)
ÓE NJSZK 31
V 1.0
Kockanap 2011: Pizza Tycoon
• Zsombor utolsó kockanapja. Az én első kockanapom (én csak „játszani” voltam ott )
• Szimulált város, úthálózattal, lakókkal
• Fix kezdőösszeggel, random helyen, 1 motorral kezd
• Random bejövő rendelések, aki előbb begyűjti a megrendelést és pizzát visz oda, pénzt kap
• Vásárolható motorok / teherautók a cég növekszik
• A cégek versenyét szimultálta a játék
• Elnézést … Szimulálta volna
ÓE NJSZK 32
V 1.0
Problémák
• Fizikai hálózati gondok (UTP kábel, switch)
• A résztvevők nem partnerek (DHCP szórás a publikus hálózat irányában, virus-like flood)
• A backup router sem működik
• A backup backup router működik, majd mégsem
• A backup router mégis működik, majd mégsem
• A szerverprogram stabil… Amíg senki sem csatlakozik rá
• A kliensek egymással tudnak kommunikálni… Többnyire, de internet az nincs
A „végig csak játszunk” ígéretet nem sikerült betartani, helyette „Ilyet? Soha többé…”
ÓE NJSZK 33
V 1.0
Mi változott 2012-ben?
• IPCV 2004 @ St.Etienne IPCV 2006 @ Budapest IPCV 2008 @ Joensuu IPCV 2012 @ Koblenz …
ÓE NJSZK 34
V 1.0
Csináljunk programozási versenyt…
• OCR témakör
• Digitális betűket felismerni képről, 257 lehetséges font
• Webes backend: random betű-összeállításban, shiftelve, forgatás nélkül kapnak egy 4 karakteres szöveget. Válaszként vissza kell küldeni, hogy milyen szöveget kaptak
• Tanítási fázisban megkapták az összes font összes lehetséges karakterét, képben (5461 BMP file)
• „solving these tasks during 150 minutes is not that trivial. Always focus on simplicity; it is much more important than the complexity of the code. Don’t fall into the trap of trying to create a perfect solution: you will run out of time!”
ÓE NJSZK 35
V 1.0
EGYSZERŰ elvárt működéssel …
ÓE NJSZK 36
• 3 óra alatt, az elvárt pontosság maximum 25% volt
• A verseny megadott ideje alatt 30 ponttal nyerni lehet
• A hallgatók nem mindig az elvárások szerint működnek…
V 1.0
BONYOLULT megoldásokkal!
• Nem teljesen az elvárások szerint alakult… Sok olyan hallgató, akinek a 25%-os pontosság nem elfogadható
• Nem érdekelte őket, hogy vége a gyakorlatnak…
• HAT órányi programozás után a versenyzők még nem akarták abbahagyni !!!
• A verseny során az első helyezett csapat 184 pontot ért el, egy otthonról még este is dolgozó csapat 205 pontot
• Az előre elvárt pontszám 683 %-a! Körülbelül 60-80%-os pontossággal működő felismerési arány, ami az előre tippelt két-háromszorosa!
• A kötelezően rászánt idő kétszerese alatt!
ÓE NJSZK 37
V 1.0
Idézetek
• „Mi a fészkes fenének szenvedek én itt a felsőoktatásban a jobban fizető programozói munka helyett???”
• „Sehol sem a minimum elérése volt a cél, hanem az, hogy megfeleljenek a saját elvárásaiknak. Vannak ilyen hallgatók is”
• „Hogy miért? Mert senki sem kelt föl. Mert vitte őket a lelkesedés. Mert programoztak tovább. Mert vannak ilyen hallgatók is. Ezért!!!”
ÓE NJSZK 38
V 1.0
Idézetek
• „Köszönettel tartozom az IPCV2012 minden résztvevőjének és szervezőjének, hogy ezt megtapasztalhattam”
• Éppen úgy, mint a Kockanap verseny alapítójának (Kurdi Zsombor) és örök segítségemnek (Pintér Ádám), a szervezésben a HÖK-nek és a karnak
• De elsősorban: köszönettel tartozom azoknak a hallgatóknak, akiknek nem elég, ha az önéletrajzukban csak annyi szerepel, hogy diplomát szereztek
• Miattuk van értelme a munkánknak!!! Mert egy jó CV-t akarnak…
ÓE NJSZK 39
V 1.0
Köszönöm a figyelmet!
ÓE NJSZK 40
V 1.0 ÓE NJSZK 41
42 ÓE NJSZK