Dusza Árpád Programozóműhely

Dusza Árpád Programozóműhely

Az Informatika-Számítástechnika Tanárok Egyesülete által szervezett Dusza Árpád Programozóműhely lehetőséget biztosít középiskolai diákoknak, akik érdeklődnek a programozás iránt, hogy saját projektötletükön hosszabb ideig, az iparban dolgozó mentorok szakmai támogatásával, csapatmunkában és projektszerűen dolgozzanak, megismerve a modern szoftverfejlesztési technikákat. A program célja az ipari követelmények, folyamatok megismerése, milyen lépések mentén hozható létre egy szoftver, mint termék, és hogyan biztosítható annak megfelelő minősége. A programozáson túl fontos szerepet kap a piackutatás, specifikáció készítés, tervezési vagy épp tesztelési feladatok, valamint a megfelelő prezentációk előkészítése és előadása. Egy kb. fél éves munka során minden csapat megvalósítja a saját ötletét. A megvalósítás során megszerzett tapasztalatait és haladását a többi csapatnak a rendszeresen szervezett közös workshopokon bemutatja. A program zárásaként végül egy nagyobb közönség előtt prezentálják az elért eredményeket. A csapatok szakmai mentorálásán túl fontos szerep jut a felkészítő tanároknak is, akik segítenek a jelentkező csapatoknak, hogy ők valóban tudjanak csapatként együtt dolgozni: csapatot építenek a diákokból és segítik őket a felmerülő szervezési feladatok megoldásában (pl. egyensúly megteremtése az iskolai kötelezettségek és a programozóműhelybeli munka között, utaztatás).
A Műhely munkáját az ELTE Informatikai Kara támogatja.
Felhívás
 
   

Projektötletek

Fotó karbantartó
Manapság rengeteg fényképet készítünk, és tárolunk digitálisan. Folyamatosan bővülő kép gyűjteményünket egyre kevésbé látjuk át, rendszertelenül tároljuk képeinket, melyekből akár itt-ott több példány is előfordulhat. A projekt célja egy olyan alkalmazás elkészítése, mely képes egy inputként kapott mappaszerkezetben tárolt képek rendszerezésében segítséget nyújtani. Cél: egyforma képek szűrése, nagyon hasonló képek felismerése (amikor készítünk ugyanarról egymásután több képet), ezek mellett további képfeldolgozó funkciók bevezetése (például arcfelismerés, csoportképek felismerése stb.)
Chatelés
Rengeteg chatelésre alkalmas alkalmazás elérhető a piacon. A gond velük, hogy vagy túl sok mellékes funkcionalitást tartalmaznak (pl.: a Google Chattel "együtt jár" a Gmail, Facebook Messenger mellé Facebookot is "kap" a felhasználó), vagy nem biztonságosak (nyilvános chat szobák) és értesítéseket sem lehet megfelelően beállítani, ami egy csoportnál külön zavaró lehet. A projekt célja egy olyan webes alkalmazás kifejlesztése, melyben valós időben lehet chatelni, de a pontos funkcionalitásokat, értesítési beállításokat teljesen személyre lehet szabni. Minden felhasználó létrehozhat szabályokat az értesítésekre akár szobára, akár személy(ek)re fókuszálva saját feltételrendszer definiálással. A chat természetesen tartalmazhat extra funkcionalitásokat: valós idejű vagy körökre osztott játék, fájlküldés, feliratkozás stb.
Kiadáskövető alkalmazás
Sokféle kiadáskövető alkalmazás létezik a piacon, amivel a felhasználók akár automatikus kategorizálás mellett is képesek a kiadásaik összegzésére, ezáltal kaphatnak egy képet arról, hogy mire költenek sokat, és eldönthetik, hogyan csökkentik a kiadásaikat.
Sajnos, sok esetben a kategorizációk nem működnek megfelelően, mert egy olyan szisztémát próbálnak ráerőltetni a felhasználóra, ami számára nem megfelelő, vagy pl. a költés helye alapján nem egyértelmű a kategorizálás (pl. ugyanazon a benzinkúton van hogy tankolok és van hogy bevásárolok otthonra). További hiányosság, hogy ha bevásárolok, akkor a blokkon lévő tételeket külön kategóriákba kellene sorolni, amire már egy alkalmazás sem képes. Az is gyakori, hogy az kiadáskövető alkalmazás nem teszi lehetővé családi kiadások összegzését, mert általában egy személy költségeit (egy bankszámla vagy bankkártya) kategorizálja. A cél: egy könnyen használható családi kiadáskövető alkalmazás elkészítése, amit szívesebben használ valaki mintha saját Excelt készítene. Az is látszódjon, hogy a családból ki fizette az adott tételt. Az alkalmazás legyen képes követni az egyes költéseket, és ha a felhasználó szeretné, akkor egy költésen belüli részköltéseket is lehessen benne kategorizálni (pl. bevásárlás). Nagyon jó lenne, ha a rendszer tudna integrálódni banki rendszerekkel (akár úgy, hogy a banki rendszerből kiexportálja a felhasználó a számlatörténetet Excel fájlba). A költéseket a felhasználó napi szinten dolgozza fel, így elkerülve azt, hogy már ne tudjon visszaemlékezni egy-egy vásárlás részleteire (pl. a blokkon sok esetben rövidítés szerepel egy-egy tételnél, amit nem mindig könnyű utólag kitalálni).
Rezsicsökkentés kalkulátor
A növekvő energiaárak megfizetése nagy kihívás elé állítja az embereket. Készítsünk olyan alkalmazást, amelyben a felhasználó be tudja rögzíteni a gáz- és villanyóraállását, és ez alapján nyomon tudja követni, hogy az adott hónapban alatta vagy felette lesz-e az adott hónapra vonatkozó limitnek, ami alapján a rezsicsökkentett vagy a piaci árat kell fizetnie. Ehhez vegye figyelembe az alkalmazás az adott hónapot és a fogyasztási jelleggörbét, valamint az éves fogyasztási limitet (pl. nagycsaládosok esetén a gázfogyasztásban a 3. gyerektől kezdve minden gyerekért további +600 m3 "jár" éves szinten). Az alkalmazás akár felkészíthető az időjárásadatok automatikus rögzítésére vagy az időjáráselőrejelzés figyelembevételére is (minimum és maximum hőmérséklet), ezáltal prognosztizálható a gázfogyasztás (amennyiben a gázt fűtésre használják).
Zenelejátszó
Természetes, hogy a legtöbb eszköz rendelkezik képernyővel, és valamilyen beviteli eszközzel, pl. billentyűzettel és egérrel, esetleg maga a képernyő a beviteli eszköz (pl. mobiltelefonok esetén). Azonban vannak olyan esetek, mikor ezek nem állnak rendelkezésre vagy bonyolultak. Gondoljunk a régi élményre, mikor kivettünk egy CD-t, megnéztük a borítóját, és betettük a lejátszóba, és csak megnyomtuk a start gombot. Mi lenne, ha lenne egy olyan zenelejátszó, melyet egy füzetkével lehet vezérelni, amiben a zenei albumok borítói vannak, és csak a készülék elé kéne tartani, és már lejátszásra is kerül az adott album. Semmi alkalmazásletöltés, semmi párosítás, csak egy mozdulat.
Egyszerű megosztó alkalmazás
Amennyiben egy formázott, egyre bővülő szöveget szeretnénk megosztani több emberrel, pl. egy osztállyal, még mindig nem triviális a megoldás. Küldjük el levélben, és akkor kérjük el mindenki e-mail címét? Vagy regisztráljunk valamilyen megosztó szolgáltatásra? Indítsunk egy chatet? Van a számítógépünkön és a mobilunkon is ilyen? A projekt célja egy olyan webes alkalmazás, ahova nem kell regisztrálni, csak generálunk egy pár karakteres egyedi url-t, amit mindenkivel megosztunk, és máris valós időben látják, hogy mit írunk oda.
Blokkláncos jóslatkezelés
Egy alkalmazás, melybe elhelyezzük a jóslatainkat, melyek a meghatározott időpillanatban újra megjelennek. És máris lehet rá hivatkozni, hogy ugye én már mikor megmondtam!
Prezentációs eszköz programozás oktatására
Milyen jó lenne egymás mellett látni egy számítógépes programot, és mellette grafikusan, hogy mi is van a számítógép memóriájában, mik a változók értékei, milyen objektumok vannak, hogyan hivatkoznak ezek egymásra, és időben hogyan változnak. Természetesen animálva, ízlésesen. No pont egy ilyet kéne csinálni!
Levegőminőség-követő
Manapság rengeteg olcsó szenzor áll rendelkezésre a külső és belső levegőminőség ellenőrzésére. A levegő hőmérséklete, páratartalma, por és szervesanyag koncentrációja közvetlenül hatással van az azt belélegzők egészségére. Ha ezeket az adatokat mérjük, ismerjük és tudjuk korrelálni egyéb tényezőkkel, mint napszak, épületben levő emberek száma, közúti forgalom, akkor tudunk javaslatokat tenni (pl. termosztát állítása, ablaknyitás, vagy akár forgalomszabályozás). Ehhez sok adat eltárolására, és szép, érthető megjelenítésére van szükség. Az analízist lehet segíteni extra eszközökkel, pl. napszakonkénti átlagolás, vagy esetleg automatikus tanácsadás (pl. „Túl magas pára és szervesanyag tartalom, kint nincsen hideg, ablaknyitás javasolt”). És ez csupán a jéghegy csúcsa. 
Leltár rendszer QR kódos követéssel
Egy szervezet (cég, egyesület, iskola) közös használatú eszközeit követni mindig körülményes, viszont ha nem tesszük, tárgyak tűnnek el. A legrosszabb, ha csupán fejben van tartva, hogy kinél mi van épp. Az sem sokkal jobb, ha ez kézzel van követve egy táblázatban, mivel ez körülményes, és ezért egy idő után nem csinálja senki szívesen, és elmarad. Sokkal jobb megoldás, ha minden eszközön található egy vonalkód vagy QR kód, amit kölcsönzéskor és visszaadáskor be lehet olvasni. Ez megkönnyíti annyira a követést, hogy sokkal nagyobb lesz a részvétel. A szoftver három nagy részből áll: egy szerverből, ami tárolja az eszközöket és azok hollétét, egy szkenner alkalmazásból (telefonra vagy PC-re), és egy leltár megjelenítőből (ami lehet különálló alkalmazás, weboldal, vagy a mobil app egy menüpontja). Az, hogy ezeknek pontosan mit kell tudnia, egy komoly feature-priorizálási munka, és ezáltal a feladat része.
Memóriajáték
Az internet és okoseszközök korában komoly problémát jelent, hogy az embereknek a memóriája „elsatnyul”. Nem kell megjegyezniük konkrétumokat, mert bárminek azonnal utána nézhetnek az interneten, ha éppen nem jut eszükbe, vagy pl. a telefonjuk is tartalmaz telefonkönyvet, ami az ismerősei telefonszámát tartalmazza. A telefonokkal könnyen készíthető bármilyen jegyzet is, ami szintén tetszőleges időben előhívható. Hasznos lenne egy olyan alkalmazás, ami segíti fejleszteni a memóriát egy vagy több implementált játék segítségével. A cél az önfejlesztés, így fontos, hogy mérhetővé váljon a játékos számára, hogy folyamatosan fejlődik, ahogy a játékkal egyre többet játszik. A játék megvalósításának fontos lépése a játék megtervezése, ami a kutatással kezdődik. A megvalósító csapat megismerkedik az emberi memória működésével, a népszerű memorizáló technikákkal (pl. memóriafogas), és más játékokkal és a játékmechanizmusok (gamification) alapjaival is, és ezen ismeretek mentén tervezi meg saját alkalmazását.
Multiplayer Bomberman!
A projekt lényege egy „bomberman” többszereplős webes játékalkalmazás készítése. A játék egy 2 dimenziós labirintusban játszódik. A karakterek mozogni, bombákat lerakni, valamint értékes tárgyakat képesek felvenni. A cél, hogy az ellenfeleket felrobbantsuk.
A játékosok "képességei"/tulajdonságai a felvett tárgyakkal módosíthatók, növelhetők. Ilyen a lerakható bombák száma, a bomba robbanásának hatósugara vagy akár a mozgási sebesség is. 
Multiplayer BubbleShooter
A projekt lényege egy többszereplős „bubble shooter” webes játékalkalmazás készítése. A játék 1 szereplős változatában a játéktéren különböző színű labdák helyezkednek el. A játékos feladata ezen labdák eltüntetése úgy, hogy véletlenszerűen kiosztott labdákat lő, és céloz a megfelelő helyre. A labdák akkor tűnnek el, ha a lövés hatására 2-nél több kerül szomszédos helyzetbe. A játék részleteiben, extra funkcionalitásaiban persze eltérhet. Például a játéktéren nem feltétlenül csak „kipukkasztható” labdák lehetnek, hanem akadályok is, a játékos szerezhez különleges képességű labdákat stb. A projektben a legnagyobb kihívás, hogy nem tudjuk a játék valójában értelmes lehet-e többszereplős formában, így az egyik legfontosabb feladata (az implementáció mellett) a tervezés és a tesztelés is. Prototípusokat kell készíteni, versenyeztetni, s a visszajelzések alapján a szükséges módosításokat elkészíteni (ami akár az eredeti ötlet elvetése is lehet).
Családfa szerkesztő
Régen, amikor a szülők a rokonokról meséltek a gyermekeiknek, akkor elővették a családi fotóalbumot, és az abban levő 50-100 képet átlapozva be tudták mutatni a rokonságot. A digitális képkészítés óta képek ezreit, sőt tízezreit tároljuk a digitális fotóalbumainkban, amit már lehetetlen egy délután alatt átlapozni. Ezzel a családi fotóalbum lassan elvesztette egyik funkcióját: a családfa rövid bemutatását. Készítsünk olyan programot/alkalmazást/webalkalmazást, ami lehetővé teszi, hogy több ember szerkesszen egyidejűleg egy közös családfát, tudja rögzíteni a rokonok nevét, fényképét, születési dátumát, rövid leírást, rokoni kapcsolatokat. Fektessünk hangsúlyt a családfában a gyors és könnyű navigációra. Legyen lista a múltbéli változtatásokról, opcionálisan legyen visszavonás funkció. Legyen lehetőség exportálására,  esetlegesen nyomtatására. Néha előfordul, hogy két családfa "összeér", így egy bónusz feladat, hogy a szoftver legyen képes két családfát összefésülni, aminek az eredménye egy nagy, közösen szerkeszthető családfa.
Baráti fogadási rendszer
Olyan program készítése, melyben többféle sportág kapcsán szervezhető baráti köröknek fogadási verseny. Az adott verseny szervezője feltöltheti az érintett mérkőzéseket, megadhatja a szabályrendszer (csak győztesre lehet fogadni, vagy gól számra is, ér e plusz pontot a gólarány eltalálása stb.). Később a szervező töltheti fel az eredményeket (kiegészítve a kialakított szabályrendszernél szükséges információkkal például gólszerzők). A feltöltött eredmények alapján a versenyhez csatlakozott játékosok tippjeiből a rendszer kiszámolja a pontjaikat és ranglistát állít fel.
 
2023.09.19.