Ročníkové projekty

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 ;-).

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).

„Strukturovaný“ editor/prohlížeč binárních dat

Pomocí speciálního jazyka půjde popsat strukturu binárního formátu (např. GIFu, ZIPu či souborového systému FAT) a pak příslušný soubor rozumně prohlížet (čti: jednodušeji než v hexa editoru). Program by měl umět vytvořit jednoúčelový parser do konkrétního jazyka (např. C), který bude umět formát načíst do struktur/tříd daného jazyka. Inspirací je ne zcela dokončený projekt Bithenge (zde je příklad na čtení GIFu); původní zadání je tady.

Předpokládaný implementační jazyk je Python, ale nebráním se ani dalším.

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).

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ří rozběhnutí HelenOSu na routeru Turris Omnia, zprovoznění Clangu nebo nejnovějšího GCC uvnitř HelenOSu nebo rozšíření podpory Raspberry Pi. Podrobněji rozpracované jsou nápady z minulých ročníků GSoCu. Kontaktovat můžete také Martina Děckého.

Cokoliv dalšího

„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č).

Zadán jako RP, vývoj probíhá na github.com/Aspect26/TrufflePascal.

PerfJavaDoc

Rozšíření JavaDocu informace o rychlosti jednotlivých metod. Dokončen vč. obhajoby bakalářské práce. Podrobnosti.

Vojtěch Horký