Zpět na mojí domovskou stránku…
Zde najdete přehled nápadů (tj. úpravy zadání jsou vítané) pro ročníkový projekt. Pokud Vás něco zaujalo, ozvěte se. A ozvěte se i pokud máte vlastní nápad, pokud mi bude téma blízké, rád se ho chopím.
Další inspiraci je možné najít též na katedrálním seznamu nebo podle toho, nad čím právě bádáme.
Všechny uvedené nápady cílí na klasické provedení ročníkového projektu a navazující bakalářské práce (tj. obvykle se do bakalářky píše o architektuře řešení, provede se změření rychlosti a porovnání s konkurencí apod.).
Rychlé a přesné měrení v Javě
Pokud potřebujete změřit výkon části Javovského programu, máte k
dispozici jednak System.nanoTime()
pro měření z Javy nebo můžete
použít externí profiler. Zatímco první možnost má minimální režii, taky
neposkytuje příliš informací. Externí profiler může poskytnout informací
více, ale platíte za to větší režií. Cílem projektu by bylo rozšířit
existující projekt (kde
„umíme" malou režii a spoustu informací) o možnost rozumně sledovat více
vláken a vkládat měřící kód dynamicky za
běhu. Pověstnou třešničkou na
dortu by pak byla možnost měřit metody jednoho konkrétního objektu
(nikoliv všech objektů dané třídy).
Případný zájemce se nesmí bát Javy, jazyka C (popř. C++) a je nejvýše vhodné, pokud bude zvládat vyvíjet pro více platforem současně (Windows a GNU/Linux).
Unit testování výkonu
Unit testy ověřující, že dané funkce (metody) jsou dostatečně rychlé. Cílem je umět detekovat problémy s výkonem (rychlostí) stejně pohodlně a jednoduše jako lze detekovat problémy s funkčností (kontaktujte buď mě nebo Petra Tůmu).
Cílem projektu by bylo přidat framework pro spouštění podobných testů a jeho navázání na vhodnou databázi s předchozími výsledky, aby byl uživatel rychle informován o regresích.
Benchmarkování Scaly, Javy a dalším jazyků nad JVM
Renaissance je sada benchmarků pro měření výkonu Javy (JVM). Cílem projektu by bylo rozšířit tuto sadu o další benchmarky: optimálně „osekáním" existující (open source) aplikace a její převedení do menšího benchmarku (který ale pořád reprezentuje realistickou práci).
HelenOS, tj. programování operačního systému
Tipy lze najít nejlépe mezi otevřenými tickety nebo na speciální stránce. Mezi zajímavá témata určitě patří rozšíření podpory Raspberry Pi, port DosBoxu nebo třeba ovladače pro USB zařízení. Pro náročnější pak vytvoření emulační vrstvy pro aplikace jiného operačního systému (tj. emulace např. FreeBSD syscallů nad HelenOSem). Podrobněji rozpracované jsou nápady z minulých ročníků GSoCu.
Rozšíření MSIMu
MSIM je náš emulátor MIPSové platformy, který věrně emuluje procesor R4000 a základní periferie. Bylo by ale fajn ho rozšířit o další zařízení, např. grafickou kartu (třeba přes SDL) nebo virtualizovanou síťovku.
Pro náročné je pak přidání základní podpory pro PCI pass-through.
Cokoliv dalšího
- Věci související s měřením výkonnosti nebo systémového charakteru.
- C/C++, Java či Python (asi) určitě. C# spíše ne. Ostatní dle domluvy.
„Trufflový" překladač (interpretr) Pascalu
Graal/Truffle poskytuje rozhraní pro psaní překladačů, jejichž výstupem je (nepřímo) Javovský bajtkód. Kromě toho nabízí alternativní implementaci JIT (just-in-time) překladače uvnitř Javovského virtuálního stroje. V současnosti probíhají práce na implementaci překladače JavaScriptu, Ruby a R.
Cílem RP by bylo napsat základ překladače Pascalu, který by umožnil zkompilovat a spustit jednoduché Pascalovské programy. Pilotní verze nemusí podporovat veškeré obraty Pascalu. RP je pochopitelně možné rozšířit na bakalářskou práci – jak obvyklou implementační tak i více teoreticky zaměřenou, pokud by byl zájem hlouběji zkoumat optimalizace (předávané jako „nápovědu" pro JIT překladač).
Dokončen vč. obhajoby bakalářské práce, github.com/Aspect26/TrufflePascal.
PerfJavaDoc
Rozšíření JavaDocu informace o rychlosti jednotlivých metod (podrobnosti). Dokončen vč. obhajoby bakalářské práce, github.com/arahusky/performance_javadoc.