Alkalmazott Matematikai
Intézeti Tanszék
Piller Imre szakdolgozat témái
1. Gráfelrendezési algoritmusok vizsgálata
matematikai rész Szempontrendszer definiálása a gráfok áttekinthetőségére, helyes ábrázolási módjára vonatkozóan.
programozási rész A GraphViz gráfelrendezési algoritmusainak vizsgálata. Az optimalizálási eljárás lépéseinek vizsgálata profilozás segítségével. Saját gráfelrendezési algoritmus implementálása (C, C++, Go vagy Rust nyelven).
2. Weblapok megjelenítésének numerikus problémái
matematikai rész A weblapok tartalmának elrendezésére vonatkozó algoritmusok matematikai leírása. A numerikus problémák felsorolása, amelyet egy weblap kirenderelése során meg kell oldani.
programozási rész Az elérhető rendering engine-ek összehasonlítása. Hivatkozások azok kódjában lévő optimalizálási algoritmusokra (amennyiben a forráskód elérhető). Benchmark-ok készítése, amelyek célzottan kiemelik az implementációs különbségeket. Korrekciós javaslatok tétele, és implementálása a teljesítmény javítására vonatkozóan.
3. Geometriai oktatóanyagok fejlesztése WebGL segítségével
matematikai rész Geometriai ismeretek, problémák gyűjtése.
programozási rész A WebGL aktuális böngészőtámogatottságának vizsgálata. Eltérések a hagyományos OpenGL alkalmazáshoz képest. A JavaScript nyelv megvalósítási módjainak összehasonlítása a hagyományos C/C++ alkalmazásokéval.
4. Térbeli fraktálok megjelenítési módjainak vizsgálata
matematikai rész A Mandelbrot és Júlia halmazok vizsgálata. A sugárkövetés matematikai modelljének bemutatása.
programozási rész Az elérhető fraktál megjelenítő alkalmazások áttekintése. A megjelenítési problémák kifejtése és a lehetséges megoldási módok bemutatása. Egy egyszerűbb saját fraktál megjelenítő rendszer elkészítése C++ programozási nyelven.
5. Használati eset alapú specifikáció készítését segítő eszköz fejlesztése
matematikai rész Adatszerkezetek, gráfok, optimalizálás.
programozási rész A grafikus alkalmazások fejlesztésénél a specifikáció hatékony és precíz elkészítése kiemelt fontosságú. A dolgozat célja egy olyan grafikus eszköz tervezésének és fejlesztésének a bemutatása, amely segítségével a specifikáció elkészítése akár az alkalmazás megrendelőjével való egyeztetés közben, valós időben elvégezhető.
6. Gépi tanulás alapú szövegtranszformációs módszerek
matematikai rész A természetes nyelvű szövegek elemzéséhez szükséges statisztikai és soft computing módszerek bemutatása. A szöveg elemzési módjainak bemutatása szavak, mondatok és nagyobb szövegrészek szintjén.
programozási rész Olyan alkalmazás implementálása, amely képes a természetes nyelvű szöveget egy hatékonyabban kezelhető formára hozni, majd azon klaszterezési, osztályozási problémákat megoldani. Nagyobb terjedelmű, magyar és idegen nyelvű szövegek elemzése. Szöveg generálása és transzformációja a feldolgozáshoz használt modell segítségével.
7. DOS-os alkalmazások futtatása webböngészőben
matematikai rész A programok futási modelljének ismertetése. A tárgykód formájában elérhető alkalmazások elmezéséhez szükséges matematikai eszközkészlet bemutatása.
programozási rész Az alkalmazás ki- és bemenetének kezelése HTML5 Canvas segítségével. Az exe és com fájlok szerkezetének vizsgálata. Konverziós módszer implementálása, amely a gépi kódú alkalmazásból JavaScript nyelvű programot készít. A sikeres konverziók részletes bemutatása.
8. Python adatszerkezetek vizualizálása
matematikai rész Összefüggő komponensek, és körök kereséséhez használható algoritmusok bemutatása. A gráfok (valamilyen szempontrendszer szerinti) optimális megjelenítésének matematikai háttere.
programozási rész A Python nyelv alapvető adatszerkezeteinek áttekintése. Grafikus felület készítése, melyen az adatszerkezetek gráfok formájában megjeleníthetők. Alkalmazáspéldák nagyobb méretű kódbázis esetén.
9. Grafikus függvénykönyvtárak összehasonlítása
matematikai rész Mivel az objektum orientált szemlélettel elkészített grafikus függvénykönyvtárakban az osztályok interfészei szélesek, és a hierarchia több szintet tartalmaz, ezért a formális fogalomelemzés módszerei vizsgálható az egyes grafikus elemek viszonya. A formális fogalomelemzés elméletének, és alkalmazásainak a bemutatásával kinyerhetők az implementációban rejlő közvetett összefüggések.
programozási rész Készíteni kell egy alkalmazást, amely a forráskódból az osztályok interfészeit ki tudja nyerni, majd azokat formális kontextusokba tudja rendezni. Ezt követően a kinyert kontextusokból ki kell számítani a fogalomhálót, majd azt meg kell jeleníteni.
10. Bináris formában elérhető alkalmazások optimalizálása
matematikai rész A formális nyelvek, és a fordító optimalizálás témakörének áttekintése. Optimalizálási módszerek részletes bemutatása. Profilozással becsült valószínűségek figyelembevétele.
programozási rész Egy emulátorhoz hasonló program segítségével lépésenként végrehajthatóvá kell tenni az elemzésre kijelölt bináris formában elérhető programokat. Le kell tudni menteni az adott program futtatása során végbemenő parancsokat, amely segítségével a felesleges számítások kigyűjthetők. Az eredeti és az optimalizált futásról részletes összehasonlító elemzést kell készíteni.
11. Modern gépközeli programozási nyelvek vizsgálata
matematikai rész Utasításkészletek, fordító optimalizálási módszerek, szintaxis fák, gráfoptimalizálási módszerek vizsgálata
programozási rész A gépközeli programok írásához az Assembly nyelv mellett már számos, magasabb szintű programozási nyelv elérhető. A szakdolgozat az aktuálisan modernnek tekinthető nyelveket, azok eszközkészletét vizsgálja, mint például a C23 szabványt, a Rust és a Zig programozási nyelveket. A dolgozat célja ezek szintaktikai és szemantikai összehasonlítása, példák és mérések készítése a hatékonyságuk vizsgálatához.
12. Grafikon ábrázoló függvénykönyvtárak API-jának összehasonlítása
programozási rész Össze kell gyűjteni a leginkább elterjedt grafikon megjelenítő függvénykönyvtárakat. Ezekben meg kell nézni, hogy melyek a közös elemek, illetve, hogy azok milyen formában (például milyen paraméterezéssel, használati esetekkel) vannak megadva. Egy összehasonlító elemzést kell végezni arra vonatkozóan, hogy melyek esetében vannak hasonlóságok/eltérések.
13. Az SQLAlchemy ORM teljesítményének elemzése
matematikai rész Az relációs-OOP leképzés formalizált leírása. A teljesítménymérés során kapott eredmények statisztikai elemzése.
programozási rész Főként példák és benchmark-ok készítése, amelyből láthatóvá válik, hogy milyen esetben milyen többletszámítást jelent az ORM adta kényelmesebb hozzáférési mód. Érdemes megvizsgálni közben a generált SQL lekérdezéseket, szükséges konverziókat és magának a mapper-nek az implementációját is.
14. Készletnyilvántartó rendszer készítése szemantikus technológiák alkalmazásával
matematikai rész Az RDF gráf modelljének bemutatása. A lekérdezések matematikai megadása.
programozási rész Egy webalkalmazás készítése, amelyben az adatok szemantikus gráfok formájában kerülnek tárolásra.
15. Funkciók redundáns megjelenésének vizsgálata Linux rendszerekben
matematikai rész Az operációs rendszerek funkcióinak formalizált megadása. Redundancia definiálása, minták alapján történő duplikáció keresés.
programozási rész Ki kell választani (legalább) egy GNU/Linux rendszert, amelyet meg lehet vizsgálni. Meg kell nézni, hogy az elterjedt parancsok milyen funkciókat valósítanak meg, illetve úgy általában a rendszerben mik a vizsgálható funkciók. Készíteni kell olyan programokat, amelyek ezeket képesek detektálni.
16. XMLSchema alapú grafikus szerkesztő
matematikai rész A sémaleírás, sémaellenőrzés elméleti alapjainak áttekintése. Vonatkozó gráfelméleti, nyelvfeldolgozási módszerek, algoritmusok ismertetése.
programozási rész Egy olyan grafikus alkalmazásnak az elkészítése, amely egy XMLSchema leírás alapján egy szerkesztőfelületet biztosít a sémának megfelelő adatok szerkesztéséhez. A felhasználó közvetlenül a modellt szerkesztheti ezen keresztül, nem szükséges, hogy egyáltalán lássa a mögöttes XML állományt.
17. Kétdimenziós ütközésvizsgálat párhuzamosítási lehetőségei
matematikai rész Koordináta geometria, párhuzamos algoritmusok, dinamikus adatszerkezetek, optimalizálás
programozási rész Főként részecskerendszerek szimulációja esetében gyakori probléma, hogy nagy mennyiségű (általában azonos alakú) részecskének az egymással való ütközését kell vizsgálni. Ez egy igen számításigényes feladat. A számítások optimalizálására több lehetőség adódik, többek között a párhuzamosítás. A dolgozat azt vizsgálja, hogy ilyen esetekben milyen adatszerkezetek és algoritmizálási módszerek használhatók fel a számítási teljesítmény javítására. Ehhez kapcsolódóan bemutatásra kell, hogy kerüljön az algoritmusok, azok paramétereinek a hatása a számítási komplexitásra.
18. Képfeldolgozási módszerek vizsgálata Go nyelven
matematikai rész Intenzitás hisztogramok. Konvolúciós módszerek. Kitöltő algoritmusok. A konkrét vizsgálatokhoz használt képfeldolgozási módszerek elvi háttere.
programozási rész A Go (Golang) nyelv egy natív programozási nyelv, amely letisztult, közérthető szintaxisával segíti többek között a képfeldolgozásban használt heurisztikák implementálását. A dolgozat célzottan azt vizsgálná, hogy mennyiben váltható ki a C/C++ nyelv (például az OpenCV-hez tartozó implementációk esetében) egy Go nyelvű változattal. A dolgozatban egyaránt meg kell vizsgálni, az elkészített kód áttekinthetőségét, karbantarthatóságát, számítási teljesítményét és memóriaigényét.
19. Widget toolkit fejlesztése Go nyelvhez
matematikai rész Interpolációs módszerek vizsgálata (animációk esetében). Elrendezésre vonatkozó optimalizálási módszerek áttekintése.
programozási rész A dolgozat célja egy olyan Go (Golang) nyelvű függvénykönyvtár elkészítése, a használatának példákkal történő demonstrálása, amely a gyakran előforduló widget-ek megjelenítését, azok eseményeinek a kezelését elvégzi. Ehhez át kell tekinteni azon, lehető legegyszerűbb library-ket, amelyek a raszteres megjelenítést, képek betöltését, billentyűzet- és egéresemények kezelését lehetővé teszik.
20. Vizsgálatok az SDL2 függvénykönyvtár Rust nyelvre való átírásával kapcsolatban
matematikai rész Kód metrikák. Típusbiztonsággal kapcsolatos elméleti modellek bemutatása.
programozási rész A dolgozat célja, hogy megvizsgálja, hogy az SDL2 nevű, C nyelvű függvénykönyvtár Rust programozási nyelvre való portolásának milyen előnyei és hátrányai lennének. Ehhez figyelembe kell venni, hogy a számítási teljesítmény, a kód minősége, olvashatósága hogyan változna. Fel kell mérni, hogy a C API milyen szinten ültethető át Rust nyelvre, milyen esetekben tartható meg a szerkezet. Külön vizsgálandó az SDL függőségeivel kapcsolatos integrációs problémák és az unsafe kódrészek esete.
21. Képletszerkesztő készítése LaTeX-hez
matematikai rész Szintaktikai elemzése, szintaxis fák, geometria
programozási rész A képletek szerkesztése komplikáltabb esetekben a felhasználók többsége számára egyszerűbben elvégezhető valamilyen grafikus szerkesztőeszköz segítségével. A dolgozat célja egy ilyen elkészítése, amely a GUI segítségével összeállított képleteket LaTeX nyelven elérhetővé teszi, továbbá egy LaTeX nyelvű képlet további szerkesztésére is ad lehetőséget. A dolgozatban meg kell vizsgálni a hasonló eszközöket, összehasonlításokat kell végezni azok előnyeiről és hátrányairól.
22. Mesterséges neurális hálózatok tanítási módszereinek vizsgálata
matematikai rész Mesterséges neurális hálózatok, optimalizálási módszerek, sztochasztikus optimalizálás
programozási rész A mesterséges neurális hálózatok tanítására számos módszer elérhető. Feladatként szerepel a szakirodalomban elérhető módszerek áttekintése, összehasonlítása. Meg kell vizsgálni a Scikit Learn függvénykönyvtár neurális hálózatok tanításához használt interfészét, majd a saját készítésű tanítási algoritmust azzal kompatibilis formában kell implementálni. Összehasonlításokat kell végezni a Scikit Learn-ben elérhető módszerekkel.
23. Szöveges formátum specifikus tömörítési eljárások vizsgálata
matematikai rész Információelmélet, kódelmélet, szintaktikai elemzés
programozási rész Számos szöveges adatszerializációs formátumot (például CSV, XML, JSON, YAML) nagy mennyiségű adat tárolásához, átviteléhez is használnak. Ennek az oka, hogy a formátumok elterjedtek, többségében szabványosnak tekinthetők, létrehozásukhoz és feldolgozásukhoz rengeteg eszköz érhető el. A dolgozatban meg kellene vizsgálni, hogy hogyan, és milyen hatékonysággal lehet kihasználni tömörítéskor a formátumok adta specifikumokat. Referencia implementációval és mérésekkel meg kellene becsülni az elkészített módszer hatékonyságát.
24. Grafikus elemek verziókezelése
matematikai rész Képfeldolgozás, gráfelmélet
programozási rész A szöveges fájlok kezeléséhez kiforrott, elterjedt, jól használható eszközkészlet érhető el. Meg kellene vizsgálni, hogy hasonló módszerek hogyan alkalmazhatóak elemek szerkesztése, verziókövetése esetén. Ehhez szükséges áttekinteni az elérhető szerkesztő szoftvereket, azok alapvető funkcióit. Meg kell vizsgálni a szerkesztési műveletek naplózási lehetőségeit, hogy azokat fel lehessen használni a verziók követéséhez. Egyszerűbb esetekben meg kell mutatni, hogy hogyan működhet képek esetében egy diff eszköz, továbbá, hogy milyen lehetőségek vannak a merge műveletre.
25. Táblázatkezelő alkalmazás SQLite alapokon
matematikai rész Relációs algebra
programozási rész A dolgozat célja egy olyan grafikus alkalmazás elkészítése, amely átmenetet jelent a táblázatkezelő szoftverek és az adatbáziskezelő kliens alkalmazások között. A szoftver dokumentum formátuma az SQLite3 adatbázis. Az adatbázis tábláknak külön lapokon kellene látszódniuk, hogy a bennük szereplő adatok szerkesztését a táblázatkezelő szoftverekhez hasonló formában el lehessen végezni. A megjelenítéshez kapcsolódó adatokat a szoftverben közvetlenül nem látható táblákkal kellene megoldani (például a mezők színezését, betűtípusok beállítását, táblázat kereteket).
26. JavaScript és Lua nyelvek performancia vizsgálata
matematikai rész Nyelvi elemzés, optimalizálás
programozási rész A JavaScript és a Lua programozási nyelvek sokban hasonlítanak egymásra, mindkettőt a nagyon magas szintű, könnyű súlyú interpretált nyelvek közé lehet sorolni, melyekhez elérhető hatékony JIT fordító. A dolgozat célja az, hogy rámutasson azokra a nyelvspecifikus elemekre, amelyek a performancia szempontjából döntő fontosságúak, összehasonlítsa az elérhető implementációkat, benchmark tesztek segítségével támpontot adjon arra vonatkozóan, hogy milyen alkalmazási mód esetében melyiktől milyen számítási teljesítményre lehet számítani.
27. Lua nyelvű szabályrendszerekre épülő SVG szerkesztő alkalmazás fejlesztése
matematikai rész Nyelvi elemzés, interpreterek, koordináta geometria, grafika
programozási rész A grafikus szerkesztőeszközök (értve ez alatt a kép, ábra és szöveg szerkesztőket is) beépítve tartalmaznak számos szabálymegadási módot. Ezt a készletet a szerkesztőeszköz fejlesztői definiálják, és jellemzően paraméterezhető formában állnak rendelkezésre. A szakdolgozat célja, hogy egy olyan, általános grafikus keretrendszert adjon, amely az alakzatok közötti viszonyok megadását közvetlenül Lua nyelven teszi elérhetővé. (Ilyen szabály lehet például, hogy egy ábrán összekötve két csomópontot az összekötött alakzatok melyik oldalára kerüljön.) Az alkalmazás ábra formátuma SVG legyen. A dolgozat adjon például UML szabvány szerinti ábrák szerkesztésére.
28. Szilárd testek törésének geometriai modellezése
matematikai rész Geometria, számítógépi grafika, geometriai modellezés, fizika
programozási rész A fizikai szimulációk és a számítógépi grafika területén is találkozhatunk szilárd testek törésének a problémájával. Ezzel kapcsolatosan a vizsgálandó, hogy milyen tulajdonságú, milyen alakú anyagok milyen erő behatására hogyan adnak különféle törési felületeket. A szakdolgozatban meg kell vizsgálni azon elérhető szilárd test fizikai szoftvereket, amelyek erre lehetőséget adnak. Be kell mutatni a törés fizikai és/vagy matematikai modelljét. Meg kell tervezni és implementálni kell egy olyan szoftvert, amely alkalmas különféle tulajdonságok beállítását követően becslést adni a törési felületre az eredeti térbeli modell diszjunkt részmodellekre való bontásával.
29. Git repozitóriumok vizualizációja és projekt metrikák vizsgálata
matematikai rész Statisztika, számítógépi grafika, gráfelmélet
programozási rész A git repozitóriumokban a szoftververziók tárolásán túl számos olyan információt találhatunk, amely mutatja, hogy az adott szoftverfejlesztési projekt mennyire volt hatékony. A dolgozatban el kellene készíteni egy olyan vizualizációs és elemző alkalmazást, amely git repozitóriumokhoz képes megjeleníteni a fejlesztés folyamatára vonatkozóan statisztikai jellegű információkat.
30. Virtuális aszisztensek tervezése és implementációja
matematikai rész Viselkedésmodellezés, 3D modellezés, animáció
programozási rész A virtuális terekben (értve ez alatt akár csak egy számítógép asztali környezetét) időszakosan megjelenik az igény, hogy egy személyes, virtuális aszisztens is rendelkezésre álljon. A szakdolgozatban össze kellene gyűjteni, hogy egy-egy ilyen ágens milyen funkcionalitással szokott rendelkezni. Specifikálni kell, hogy a saját fejlesztésű aszisztens milyen attribútumokkal rendelkezzen. Be kell mutatni a viselkedés modellezésre alkalmas matematikai és szoftveres eszközöket. Animált formában létre kell hozni egy virtuális ágenst.