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ů):

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

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

Hezký uživatelský interface na e-mail.

GMail killer: Věc na maily co umí tagy, pořádný fulltext search (jako např. notmuch-web), a má interface co vypadá jako z aktuálního tisícíletí (viz. např. google inbox).

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

Post-kvantová kryptografie

Na BP jsem kdysi zpracovával postkvantovou kryptografii (viz. google codecrypt).

Na MFF už vznikla i částečná náhrada SSL, knihovna využívající SIDH KEX se kterou jde vyrobit bezpečná komunikace.

Na RP/BP je možné jeden z projektů rozšířit, nebo přijít s vlastním souvisejícím nápadem.

Framework pro uživatelskou aplikaci

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.

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.