Ročníkové projekty
Úvodem
Nabízím vedení Ročníkových projektů, ať už "malých", nebo takových, z nichž časem vyroste bakalářská práce. Pokud máte o projekt u mně zájem, napište mi, prosím, mail a domluvme se na zadání. Nerad bych ale vedl něco, k čemu nebudu mít žádný vztah (nebo dokonce záporný). To znamená, že by projekt měl splňovat následující podmínky:
- Projekt poběží pod nějakým Unixovým operačním systémem. Pod Windows se necítím doma a nerozumím jim. Z dobrých důvodů lze samozřejmě učinit výjimku, třeba u aplikací pro mobily či jiný specializovaný hardware.
- Cílem projektu nebude pouze získat zápočet, nýbrž i vytvořit něco trvalejšího. To znamená, že by projekt měl být něco více než v pořadí 1024. implementace síťových piškvorek.
- Z téhož důvodu by projekt neměl po odevzdání skončit „v šuplíku“. Měla by vzniknout webová stránka projektu s programem i dokumentací ke stažení. Může být šikovné použít k tomu například GitHub.
Téma
Budu rád, když přijdete s vlastním pěkným nápadem, ale také jich mám pár v zásobě, většinou různé pěkné hříčky nebo programy, po kterých se někomu v mém okolí stýskalo. Další inspirací může být seznam zápočťáků z programování (PDF).
- epubTeX – rozšíření sázecího systému TeX, aby uměl generovat nejen pěkný výstup na papíře (potažmo v PDF), ale také běžné formáty elektronických knih.
- Vrr Revival – kdysi jsme vytvořili vektorový editor Vrr na kreslení obrázků k matematickým článkům. V mnoha ohledech úžasný program, ale má pár zásadních much – zejména nespolehlivý save a load. Hledám dobrou duši, která by se editoru ujala a chybějících pár kousků doprogramovala.
- DNS Sleuth 2 – před dávnými časy jsem vytvořil program DNS Sleuth na odhalování běžných chyb v konfiguraci DNS. Od té doby se ale v DNS ledacos změnilo (třeba DNSSEC a IPv6), takže checkovátko by potřebovalo naučit nové triky, nebo spíš úplně přepsat.
- Gitoscope – nástroj pro vizualizaci historie repozitáře v Gitu schopný sledovat pohyb jednotlivých kusů kódu mezi soubory.
- Kartograf – program pro sazbu a tisk map. Vstupem budiž databáze geografických dat, jako je třeba OpenStreetMap, výstupem pak kvalitní papírová mapa.
- Zvýrazňovač – dnešní programátorské textové editory běžně obarvují zdroják podle lexikální struktury či povrchové syntaxe. Nedaly by se barvičky využít nějakým zajímavějším způsobem, který by vycházel ze sémantiky programu? (další nápady na toto téma)
Z některých projektů se také může později stát bakalářská práce.
Vedu tyto projekty
2024/2025
- Petr Tvrdek: Analyzátor NFS – Sledování provozu mezi NFS serverem a jeho klienty za účelem odhalování výkonových a bezpečnostních problémů.
- Lukáš Koliandr: Git shuffle – nástroj pro editaci historie v Gitu: například pro pohodlné přeskládání commitů ve větvi, než bude zveřejněna či mergeována.
2023/2024
- Jiří Kalvoda: Real-time data PID (hotovo) – Zpracování real-time dat o polohách vozidel PID.
- Vojtěch Vilímek: SNMP pro BIRD (hotovo) – Implementace SNMP agenta do routovacího daemona BIRD (ve spolupráci s CZ.NICem).
- Jaroslav Vedral: Cvičení z Linuxu – Automatické vyhodnocovaní úloh z administrace Linuxu
2022/2023
- Lucie Vomelová: Choreomat (hotová Bc. práce) – automatický generátor tanečních kroků pro rytmické hry, jako je Dance Dance Revolution nebo StepMania. Na vstupu dostane písničku, rozpozná v ní rytmus a (polo)automaticky vytvoří zajímavé taneční kroky. Nakonec se ukázalo, že rozpoznání rytmu vydá na samostatný projekt, tak se zaměříme jen na to.
- Václav Janáček: Orientace na obloze (hotovo) – Aplikace pro interaktivní zobrazování nebeských objektů spojená s hrou na procvičení orientace na obloze.
- Antonín Otmar: Vláčky (hotovo) – síťový železniční screen-saver. Jestlipak jste někdy podobně jako já několik minut tiše zírali na krásný windowsový Traffic Screensaver nebo Railway32, kterak jezdí s vláčky po obrazovce? A jestlipak vás také napadlo, že ještě hezčí by mohla být síťová verze, ve které budou vláčky přejíždět z jednoho monitoru na druhý?
2021/2022
- Pavel Turinský: Vizualizace sítě (hotová Bc. práce) – Vizualizace sítí routovaných protokolem OSPF a detekce anomálií.
- Václav Zvoníček: Polynomiální rovnice (hotovo) – Rozšíření systému Sage o řešení polynomiálních rovnic nad tělesy velké charakteristiky.
- Vojtěch Žák: Bezpečnost na webu (hotová Bc. práce) – Aplikace, která demonstruje bezpečnostní zranitelnosti webových aplikací. Ve spolupráci s CZ.NIC.
2020/2021
- Josefína Čížková: Schrödy (hotová Bc. práce) – Simulátor kvantového počítače a ukázka kvantových algoritmů.
- Tomáš Sláma: Clis (hotová Bc. práce) – Skenování lezeckých chytů a stěny na 3D modely (a jejich realizace pro lezeckou stěnu Smíchoff).
2019/2020
- Richard Hladík: Autotune (hotovo) – VST/LADSPA plugin pro automatické dolaďování zpěvu.
- Petr Gebauer: Chroustač logů (hotová Bc. práce) – Servery produkují obrovská množství logů. Hodil by se program, který bude umět logy zkoumat a hledat v nich zajímavé události, kreslit grafy zatížení různých služeb a třeba i pomocí technik umělé inteligence hledat anomálie.
- Jiří Škrobánek: Persistence (hotová Bc. práce) – Knihovna na stavbu persistentních pointerových datových struktur.
2018/2019
- Václav Luňák: Kartograf (nedoděláno) – program pro sazbu a tisk map. Vstupem budiž databáze geografických dat, jako je třeba OpenStreetMap, výstupem pak kvalitní papírová mapa.
2017/2018
- Ondřej Hrubý: Feather-weight Directory Access Protocol (hotová Bc. práce) – adresářová služba, sloužící například jako databáze uživatelů. Jinými slovy, náhrada LDAPu, která má jednoduchost i jinde než v názvu.
2016/2017
- David Čepelík: Netbufs (hotová Bc. práce) – návrh a implementace nového protokolu pro klientské rozhraní daemona BIRD.
- Václav Končický: Digester (hotová Bc. práce) – nástroj pro kontrolu konsistence diskového pole. Efektivně počítá signatury (kryptografické heše) všech souborů a adresářů a umí je porovnávat s dříve zaznamenaným stavem. Ke zrychlení výpočtu signatur používá různé paralelizační techniky.
- Kateřina Macková: Nanotrubičky (hotová Bc. práce) – výpočty molekulární struktury nanotrubiček.
2015/2016
- Lada Kudláčková: Heuristiky pro Dijkstru (hotová Bc. práce) – průzkum různých heuristik pro vyhledávání v mapách Dijkstrovým algoritmem, zejména heuristik založených na prostorově úsporných orákulech aproximujících vzdálenosti v rovinných grafech.
2014/2015
- Alexandr Mansurov: Crawlcheck (hotová Bc. práce) – program, který „oťukává webovým stránkám kola, než vyjedou na trať“ – základem by mohla být kontrola syntaxe HTML, CSS a provázanosti odkazů. K tomu už pár programů existuje, ale málokterý respektuje aktuální webové standardy a je dost efektivní na kontrolu rozsáhlého webu.
- Tomáš Maleček: PDF processor (nedoděláno) – nástroj pro úpravu dokumentů ve formátu PDF vhodný zejména pro předtiskovou přípravu.
- Jirka Setnička: FenixBackup (hotová Bc. práce) – zálohovací program, kterému se nebudete bát svěřit svá data. Chytré udržování historie (s ohledem na misto, které je na zálohy k dispozici), komprese, vyhledávání stejných a podobných souborů. O spolehlivost jde ovšem na prvním místě. Inspirací může být například Git a jeho systém packů.
- Tomáš Volf: Reinventing the WWWheel (nedoděláno) – minimalistický webový prohlížeč pro pokročilé uživatele, založený na existujících renderovacích knihovnách, který poskytne komfortní Vi-like uživatelské rozhraní bez zbytečného balastu. Důraz se klade též na konfigurovatelnost a bezpečnost.
- Filip Štědronský: Synchronizátor (hotová Bc. práce) – Nástroj pro synchronizaci osobních souborů mezi několika počítači/úložišti (od cloudu po disky v šuplíku). Důraz kladen na vysokou konfigurovatelnost až skriptovatelnost (pravidla typu „soubory X chci mít vždy na počítači Y“, „od věcí ve ~/skola musí existovat tři kopie, ale je mi jedno kde“, etc.), podporu šifrování a silnou kontrolu integrity (à la git).
2013/2014
- Jirka Setnička: CampPlanner (hotovo) – interaktivní plánovátko rozvrhů soustředění a podobných akcí.
- Tomáš Pokorný: Hledání pěších cest (hotová Bc. práce) – vyhledávání pěších cest založené na datech z OpenStreetMap a terenním modelu SRTM.
2012/2013
- Pavol Rohár: Listárna (hotová Bc. práce) – archivátor mailových konferencí. Jedním koncem se napojí na list-server (třeba MailMana), druhým na webový server. Uživatelům pak nabídne pěkně zformátované zprávy se stáhnutelnými přílohami a vyhledávání v archivu.
- Karolína Burešová: Popisky map (hotová Bc. práce) – automatické umisťování popisek k mapovým značkám.
- Tereza Ptáčková: Cesty v grafech (hotovo) – vizualizace průběhu jednoduchých algoritmů na hledání cest v grafech, použitelná jako výuková pomůcka pro střední školy.
- Pavel Taufer: Domácí automatizace (hotová Bc. práce) – program pro řízení inteligentní domácnosti. Funguje jako jakýsi operační systém, který komunikuje s různými zařízeními a nabízí aplikacím jednotné rozhraní k těmto zařízením.
2011/2012
- Jakub Břečka: Webový server se separací práv (hotová Bc. práce) – tradiční webové servery nijak neřeší vzájemnou bezpečnost webových aplikací běžících na tomtéž serveru. Pojďme navrhnout takový (nebo lépe upravit nějaký stávající), který by dovedl dynamicky generovaný obsah (CGI skripty, PHP, mod_perl, …) spouštět s právy toho uživatele, kterému patří, bez výrazného zpomalení.
- Pavel Taufer: Choreomat (nedoděláno) – automatický generátor tanečních kroků pro rytmické hry, jako je Dance Dance Revolution nebo StepMania. Na vstupu dostane písničku, rozpozná v ní rytmus a (polo)automaticky vytvoří zajímavé taneční kroky.
- Martin Polák: DNS Sleuth 2 (nedoděláno) – před dávnými časy jsem vytvořil program DNS Sleuth na odhalování běžných chyb v konfiguraci DNS. Od té doby se ale v DNS ledacos změnilo (třeba DNSSEC a IPv6), takže checkovátko by potřebovalo naučit nové triky, nebo spíš úplně přepsat.
- Jan Tichý: Postscanner (hotová Bc. práce) – program na zpracovávání nascanovaných knížek, který odfiltruje šum, narovná šikmo sejmuté stránky a vygeneruje PDF. Bude se přitom snažit o rozložení stránek na objekty: obrázky, linky, písmena (podobné litery prohlásí za stejné a uloží jen jednou atd.).
- Jan Moskyto Matějka: TeX to HTML (nedoděláno) – konvertor, který z TeXového zdrojáku udělá webovou stránku s vloženými obrázky a vzorci (varianty: HTML+CSS, MathML, obrázky apod.). Skriptovatelný v Perlu.
2010/2011
- Tomáš Kadlec: Orloj (hotovo) – hodiny na pracovní ploše má dneska skoro každý. Ale takový Staroměstský orloj!
- Lucie Mohelníková: Třidič fotek (hotovo) – program pro pohodlné třídění velkého množství fotografií.
- Viktor Šmídl: Čmárací kalkulačka (nedoděláno) – máte tablet nebo PDA s touch-screenem? Používáte ho občas jako kalkulačku a přijde vám, že mačkat pisátkem namalovaná tlačítka je nepohodlné? Nebylo by lepší prostě po displeji malovat vzorečky? Něco takového už umí Nokia Handwriting Calculator, je ovšem dost těžkopádný. Nešlo by to lépe?
2009/2010
- Peter Ondrúška: Puzzle (hotová Bc. práce) – Aplikácia zloží puzzle z naskenovaných dielov štandardných 2D puzzle. Pričom dielce puzzle dostane ako niekoľko naskenovaných obrázkov a dôjde k automatickému vyextrahovaniu príslušných dielcov. Následne sa aplikácia pomocou rôznych heuristických algoritmov pokúsi zložiť puzzle. Základnými využívanými princípmi bude lokálna náväznosť dielcov na základe textúry a tvaru a tiež aj využitie známych stratégii skladania puzzle. Výsledný produkt sa nakoniec vizualizuje na obrazovku s možnosťou uložiť výsledok.
- Ondřej Bílka: Search (hotovo) – efektivněji pracující náhrada Unixových příkazů
locate
aupdatedb
. - Ladislav Láska: Anotující disassembler (hotová Bc. práce) – disassembler pro AMD64, který umí automaticky analyzovat kód, třeba rozpoznávat proměnné, podmínky a cykly, a podle toho do kódu připisovat komentáře.
- Radek Hušek: Strážce pokladu (hotová Bc. práce) – databáze mají pomalé dotazování, ale umí data ukládat na disk persistentně (tj. tak, že se po pádu aplikace či celého systému lze vrátit do konsistentního stavu); naproti tomu datové struktury ve vnitřní paměti jsou časově daleko efektivnější, leč nepersistentní. Zkusme je zkřížit a vytvořit knihovnu, která bude umět udržovat data v paměti a všechny změny na disk ukládat persistentně.
2008/2009
- Matěj Korvas: Regulární výrazy (hotovo) – knihovna na efektivní vyhodnocování regulárních výrazů (všechny, které jsem zatím viděl, mají v nejhorším případě exponenciální časovou složitost, což je dosti příšerné).
- Martin Liška: Nepal (hotová Bc. práce) – pasivní analyzátor síťového provozu. Monitoruje provoz nějakého serveru (třeba webového) pomocí odposlouchávání packetů (tedy aniž by jakkoliv provoz ovlivňoval) a počítá podle toho, jak moc je server zatížený, jaké typy dotazů dostává, jací klienti se k němu připojují atd.
- Pavel Klavík: Mistr skladník (hotovo) – automatické řešení hry Sokoban.
- Jan Štěpánek: Kamelot (nedoděláno) – efektivní distribuce mnoha kopií téhož souboru po lokální síti (například při paralelním instalování OS), nejlépe pomocí stromového šíření nebo multicastů.
- Petr Löffelmann: MP3 editor (hotová Bc. práce) – program na jednoduché úpravy komprimovaných zvukových nahrávek (MP3, nebo třeba OGG Vorbis) bez ztráty kvality.
- Martin Böhm: Labelling grafů (hotová Bc. práce) – algoritmy řešící různé grafové problémy pomocí nálepkování vrcholů.
- Jakub Horák: Retro (nedoděláno) – jádro textového webového prohlížeče (parser a renderer) podporující standardy CSS 2.1 (s CSS 3 selektory) a HTML5, s dynamickým renderováním umožnujícím připojit později javascriptový interpreter nebo jiný jazyk pro manipulaci s DOM stromem.
2007/2008
- Michal Vaner: Re-make (hotovo) – program make. Je na něm bohužel dost vidět, jakou spletitou evolucí prošel, a pro spoustu použití je poněkud těžkopádný. Pojďme vymyslet lepší.
- Peter Bašista: Algorithm Animation Library (hotová Bc. práce) – prostředí pro vizualizaci algoritmů.
- Martin Kupec: NetSelector (hotovo) – program, který dokáže zjistit, k jaké síti je zrovna počítač připojen, a podle toho nakonfigurovat síťové rozhraní.
- Martin Doucha: Céčková školka (hotová Bc. práce) – preprocesor pro jazyk C, který ulehčí začátečníkům odhalování triviálních chyb v céčkových programech. Pomáhat bude jak statickou analýzou kódu, tak přidáváním běhových kontrol (meze polí, inicializovanost proměnných atd.).
- Anička Bernáthová: UMPF (hotovo) – mailový filtr à la procmail, ale s příjemnějším jazykem pro popis pravidel. Filtruje jak při doručování pošty, tak dodatečně přes IMAP.
2006/2007
- Zbyněk Falt: JPEG viewer (hotová Bc. práce) – běžné programy na prohlížení obrázků jsou na obrázcích velikosti obvykle ukládané digitálními fotoaparáty dosti pomalé. Pojďme napsat nějaký rychlejší, nabízí se například při ukazování zmenšeného obrázku dekomprimovat JPEG pouze částečně. Také se z toho pak může stát obecnější program na organizování sbírky fotek.
- Lukáš Mach: 3D rekonstrukce (hotovo) – rekonstrukce polygonálního 3D modelu podle několika fotografií předmětu.
- Martin Major: Classifier (hotová Bc. práce) – tematická klasifikace webových stránek.
2005/2006
- Peter Hladký: HTTP load balancer (hotovo)
- Cyril Strejc: Simple network over sound cards (hotovo)
- Jiří Čmelák Šilhán: Image classifier (hotová Bc. práce) – dostane hromadu roztodivných obrázků a má je rozdělit na skupiny navzájem podobných. Příležitost ke srovnání různých heuristik (třeba vzdálenost v nějaké metrice po přescalování na 8x8) i serióznějších přístupů založených na Fourierově transformaci. Hodí se třeba pro vyhledávače obrázků jako Google Images nebo Morfeo Images.
- Aleš Šnupárek: pspdftool (hotová Bc. práce) – program na závěrečnou úpravu dokumentů před vytištěním, který umí přeskládávat stránky, vybírat k tisku jen část dokumentu, tisknout více stránek na jednu, tisknout otočeně nebo zrcadlově, nebo třeba přidávat čísla stránek. Vstupem i výstupem je Postscript, potažmo PDF.
- Michal Tuláček: FoxAdmin (hotovo) – administrace závodů v rádiovém orientačním běhu
2004/2005
- Milan Straka: Faktorizace polynomů (hotová Bc. práce)
- Petr Pasky Baudiš: HexEditor (hotovo) – editor binárních souborů, rozumně fungující i na značně velkých souborech, podporující rychlé hledání, nahrazování a blokové operace a undo; nejlépe tak, že si bude změny pamatovat zvlášť a až na konci práce (nebo když mu začne docházet paměť) původní soubor podle seznamu změn zmodifikuje.
- Petr Sušil: CSpotter (hotová Bc. práce)