e-x-a.org » NPRG045 Ročníkový projekt

Můžete přijít prakticky s jakýmkoliv vlastním tématem. Budou se mi líbit projekty co obsahují např. C++, funkcionální programování, Haskell, UNIX, internety/sítě, distribuované věci, kryptografii. Dostatečně akční hry jsou vítány.

Co mám už dlouho v hlavě a chtělo by to zpracovat (seřazené podle obtížnosti vzrůstající dolů):

Traffic shaping

Jednoduchý distribuovatelný traffic scheduler pro internet, založený na principech podobných CoDel a SFQ . Výsledkem bude užitečný algoritmus a zlepšení internetu, které všichni chtějí.

Vhodné pro studenty, kteří vědí něco o počítačových sítích a jejich napojení na operační systémy (třeba jak fungují iptables/tc). Téma je poměrně jednoduché a navazující bakalářská práce má potenciál být velmi dobrá. Je potřeba znát C/C++.

Kryptografie (občas post-kvantová)

Na BP jsem kdysi zpracovával postkvantovou kryptografii (viz. google codecrypt). Na MFF už vznikla i částečná PQ náhrada SSL, knihovna využívající SIDH KEX se kterou jde vyrobit bezpečná komunikace, konkrétně třeba postkvantové SSH. Na RP/BP je možné jeden z projektů rozšířit, nebo přijít s vlastním souvisejícím nápadem.

Jiný zajímavý nápad: Jedna javascriptová funkce v runtime prohlížečů (ověř doménu na auth requestu, vrať soukromým klíčem dešifrovaný auth token) může z webu kvalitně a natrvalo odstranit ošklivá a nebezpečná hesla.

Použitelný uživatelský interface na e-mail.

(téma je zabrané)

GMail/Inbox killer: Interface na maily který umí tagy, pořádný fulltext search (jako např. notmuch-web), a má interface co vypadá jako z aktuálního tisícíletí (dobrý příklad: Google Inbox, antipříklad: outlook).

Poměrně jednoduché téma s dobrým využitím, velmi vhodné k rozšíření na BP. Je potřeba znát javaskript a nějaký “backendový” jazyk.

Hry

Předem, uvědomte si, že “obyčejná hra typu X” není dobré téma na bakalářskou práci. Hry už umí programovat každý. Pokud chcete dělat hru, je potřeba do ní propašovat nějakou zajímavost — třeba algoritmus který je výsledkem současného vývoje, není moc známý (ideálně neexistuje veřejně dostupná implementace) a neotřele a efektivně dělá něco extrémně užitečného a/nebo složitého. O související teorii budete muset napsat cca 30 nenudných stránek.

To ale neznamená, že hry vhodné pro RP/BP neexistují.

Třeba remake Starfighteru 3000. (hlavní featura: dynamická scéna, realistické bourání kopců a domů laserem z letadla.) (téma je zabrané)

Nebo třeba remake Nidhoggu ( v2 ) kde jsou světelné meče a lejzry. Místo Wurma je možné použít libovolnou zrůdu ze SW, tam jich je dost. Možná extra featury? Komba? 2v2?

Nebo třeba remake Die by the sword. Trik: hráč ovládá pohyb meče přímo, takže multiplayer je docela zábava. V tomhle případě taky světelné meče, samozřejmě.

Nebo třeba nějakou hru, kde kouzlit magii je opravdu těžké (ne úplně realisticky těžké, tedy nemožné, ale rozhodně těžší než dokola mačkat klávesovou zkratku). Třeba kreslením různých kombinací a konvolucí nějakých run/tvarů třeba hůlkou nebo do písku (tady v té hře je “pozemních” run vůbec kupa). Čím komplexnější obrázek, tím větší efekt. Rozpoznávat runy za běhu hry (hlavně jejich konvoluce) je pěkný a zajímavý problém vhodný na bakalářku. Taky dobré téma na multiplayer (kooperativní kreslení produkuje složitější obrazce, tj. víc zábavy). (téma je zabrané)

Framework pro uživatelskou aplikaci

(téma je zabrané)

Univerzální systém pro jednoduchou tvorbu CRUD-type aplikací založený na grafech. Hlavní featura je programátora úplně oprostit od nutnosti přemýšlet nad uživatelským interfacem — systém se “zprovozní” jen tím, že “programátor” nadefinuje, jak vypadají a souvisejí data a jaké jsou strukturní požadavky. Interface pro aplikaci pak bude univerzální.

Asi celkem dost javascriptu.

Hlavnější featura by měl být pomyslný hřebík do rakve borcům, co institucím prodávají neskutečně předražený a směšně nekvalitní software — napadlo mě to v okamžiku naprostého šílenství nad zpracováním nejmenovaného účetního systému.

Search engine

Asi nejrozumnější open-source distribuovaný search-engine (ElasticSearch) je napsaný v Javě a docela (dost) tím trpí.

Cíl: Z dostupných lokálních C++ search enginů (třeba Xapian?) a nevelkého množství distribuovaných algoritmů udělat něco škálovatelného a podstatně úspornějšího než ES.

Detekce anomálií

Software který dostává (velké) hromady nějak označených časových dat (např. výstupy z nějakého monitorovacího systému, pingy, teploty nebo přenosové rychlosti různých počítačů v čase) nějak je zpracovává aby neukládal všechno, a je schopný upozornit na anomálie chování (náhlé změny, jiný průběh než minulý týden) nebo předpovědět problém (např. že něco postupně roste a vypadá že za nějaký čas přeroste nějakou nastavenou hodnotu).

Cíl: zjednodušit audit rozsáhlých systémů tím, že se program o systému naučí všechno sám a oznámí např. top 100 aktuálně nejvíc podezřelých věcí.

Možno pojmout statisticky nebo nervovo-síťově.

Grafová databáze

Jakákoliv dostatečně cool grafová databáze bez Javy (Javovské viz. třeba Neo4J), ideálně třeba jako middleware před PostgreSQL.

Efektivní routing v obrovské nestabilní síti

Internet s jedinou obrovskou, pokudmožno spolehlivou a proti nepřátelům odolnou routovací doménou. Dynamická adresace pro minimalizaci velikosti routovací tabulky.