doc. Ing. Filip Křikava, Ph.D.

Závěrečné práce

Dizertační práce

Rychlé a robustní kanály pro analýzu dat

Stupeň
Téma dizertační práce
Popis tématu

Analýza dat se obvykle provádí složením řady diskrétních nástrojů a knihoven do datově-analytických kanálů. Ty jsou jádrem datových věd, které dnes zažívají strmý růst počtu výpočetních metod a objemu analyzovaných dat. Díky tomu vznikají problémy se škálovatelností těchto kanálů a důvěryhodností jejich výsledků.

Obsahem této disertační práce je výzkum škálovatelnosti (přizpůsobivosti se rostoucí velikosti dat a výpočetním potřebám) a důvěryhodnosti (usnadňují auditování výsledku) datově-analytických kanálů. Výzkum bude probíhat ve dvou rovinách. První se zaměří na možnosti rozšíření programovacího jazyka R umožňující transparentní vertikální a horizontální škálování. Druhá rovina bude výzkum kombinací technik statické a dynamické analýzy programů k získání informací o typech a závažnosti programovacích chyb, které se vyskytují v kódech datově-analytických kanálů a následně návrh algoritmů pro jejich detekci a možné automatické odstranění.

Bakalářské práce

Implementace actor modelu pro programovací jazyk OCaml

Autor
Narek Vardanjan
Rok
2020
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Petr Špaček, Ph.D.
Anotace
Aktor model je abstrakce pro konkurentní programování, která pracuje s aktory, nezávislými jednotkami. Tyto jednotky vznikají, aby si mezi sebou posílaly zprávy a následně podle nich měnily svůj stav. Zprávy aktor zpracovává postupně, čímž zaručí nutnou synchronizaci pro změnu stavu. Díky tomu se vyhne potřebě používat nízkoúrovňové synchronizační primitivy jakými jsou zámky. Práce popisuje návrh a implementaci hlavních částí aktor knihovny. Obsahuje stručné shrnutí klasického konkurentního modelu s jeho nedostatky a popis aktor modelu včetně příkladů vlivných implementací. Kromě základních konstrukcí aktor modelu pro spawnování, odesílání zpráv a změn stavu, implementuje i rozšířené funkcionality ve formě monitorování/linkování procesů či převody jmen na adresy konkrétních aktorů. Knihovna je napsaná v Objective Caml s využitím zajimavých aspektů tohoto jazyka.

Dynamické tracovaní Haskellu

Autor
Ondřej Kvapil
Rok
2021
Typ
Bakalářská práce
Vedoucí
doc. Ing. Filip Křikava, Ph.D.
Oponenti
Vitaly Bragilevsky, MSc.
Anotace
Haskell je jeden z nejznámějších jazyků s non-strict sémantikou. Na jednu stranu přináší tato sémantika pohodlí nekonečných datových struktur, řídících konstrukcí definovaných uživatelem a možnost vyhnout se nepotřebným výpočtům. Na stranu druhou jsou tyto výhody postiženy daní na výkonu za běhu programu a těžko předvídatelným chováním call-by-need. Nabízí se otázka: Vyplatí se líná evaluace? K zodpovězení této otázky musíme porozumět tomu, jak je lenost využívána v praxi. K tomuto účelu jsme vyvinuli nástroj pro dynamickou analýzu použitelný k trasování evaluace funkčních parametrů. Je implementován jako zásuvný modul kompilátoru Glasgow Haskell Compiler.

ArtilEcho - strategická hra pro nevidomé

Autor
Tomáš Jozífek
Rok
2019
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
doc. Ing. Mgr. Petr Klán, CSc.
Anotace
Videohry jsou velmi populární forma zábavy, jenž díky použití grafiky neníbohužel přístupná lidem s těžkým zrakovým postižením. Naproti tomu audi-ohry pro interakci používají hlasovou syntézu se zvuky, a tak umožňují hranípočítačových her nevidomým. Tato práce se zaměřuje na tvorbu tahové audi-ohry, konrétně hry typu artilerie pro více hráčů podobné hře ShellShock Live.Práce také poskytuje přehled o audiohrách a o jejich návrhu.

Webová aplikace PWiL - Systém pro lokalizaci pacientů

Autor
Vít Medřický
Rok
2016
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Jan Bradáč
Anotace
Tato práce se zabývá tvorbou webového systému, který umožňuje lokalizaci pacientů v pečovatelském domě. Cílem je usnadnit těmto pacientům přivolat si pomoc v případě nouze. V práci jsou analyzovány požadavky na systém a případy užití, na jejichž základě je navrženo uživatelské rozhraní a schéma jednotlivých stránek aplikace. Je implementován prototyp aplikace v jazyce PHP s využitím frameworku Laravel.

Pattern matching v C11

Autor
Jan Jindráček
Rok
2019
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Jan Trávníček, Ph.D.
Anotace
Pattern matching je mechanismus který se využívá ve velkém množství programovacích jazyků, kde je využit jako způsob jak prověřit, jestli daný výraz, objekt, a nebo proměnná má vlastnosti nebo obsah specifikovaný daným vzorem. Tato práce se zaměří na to, zda-li a jak se dá taková feature přidat do jazyku C. Budu tedy implementovat prototyp pattern matchingu do jazyku C, včetně testů a dokumentace.

Interaktivní ovládání PC hry pomocí chytrého telefonu

Autor
Marek Foltýn
Rok
2016
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Vojtěch Jirkovský
Anotace
Tato bakalářská práce se zabývá tvorbou systému pro ovládání PC hry pomocí mobilního telefonu. Hlavním cílem je obohacení herního zážitku pomocí interaktivních prvků, které jsou na mobilních telefonech k dispozici. Součástí práce je analýza způsobů ovládání her, přehled interaktivních technologií v mobilních telefonech a samotná tvorba komunikačního systému, který je demonstrován na jednoduché hře.

Analýza Scala programů pomocí Grafových Databází

Autor
Otakar Vinklář
Rok
2020
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Michal Valenta, Ph.D.
Anotace
Aby bylo možné vyvinout takový programovací jazyk, který budou lidé rádi využívat, je nutné znát, jak je tento jazyk používaný. V článku [KŘIKAVA, Filip; MILLER, Heather; VITEK, Jan. Scala implicits are everywhere: a large-scale study of the use of Scala implicits in the wild. Proceedings of the ACM on Programming Languages. 2019, vol. 3, no.OOPSLA, pp. 1-28.] Křikava a jeho kolegové provádí rozsáhlou studii použití implicitních konverzí a implicitních parametrů v jazyce Scala. Poslední část řešení této analýzy je ale těžkopádná, protože relační datový model není vhodný pro reprezentaci dat s velkým množstvím vzájemných vazeb. Tato práce se snaží zlepšit řešení této analytické části. Za úkol si dává především zjednodušit vyváření nových dotazů. Tyto problémy řeší za použití grafové databáze, která umožňuje ukládat data s velkým množstvím propojení. V této práci byla vybrána grafová databáze Neo4j s jejím dotazovacím jazykem Cypher. Tato práce ukazuje, že grafová databáze a její dotazovací jazyk nabízí vysokoúrovňové rozhraní pro statickou analýzu kódu.

Conjugata - aplikace pro cvičení časování sloves - frontend

Autor
Matěj Sedlák
Rok
2018
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
prof. Dr. Ing. Petr Kroha, CSc.
Anotace
Bakalářská práce je zaměřena na návrh a vývoj uživatelského rozhraní aplikace pro výuku a procvičování časování sloves v cizích jazycích. Konkrétně v této verzi se věnujeme španělštině. Vytvořená aplikace umožňuje dva režimy testování (jednoduchý a složitější) a tři režimy zadávání odpovědí. Konkrétně výběr z pěti tvarů slovesa, skládání slovesa z několika písmen a psaní slovesa na telefonní klávesnici. Dále nabízí statistiku uživatelových odpovědí a vytvá- ření zadání na míru konkrétního uživatele. Aplikaci mohou využívat uživatelé s různými znalostmi španělského jazyka díky tomu, že aplikace umožňuje vý- uku a možnost zvolit si konkrétní kategorie sloves k procvičení. Tato práce spolupracuje s Petrem Polívkou(student FIT), který dělá backend aplikace.

Implementace Simple Object Machine v funkcionálním programovacím jazyce

Autor
Filip Říha
Rok
2023
Typ
Bakalářská práce
Vedoucí
doc. Ing. Filip Křikava, Ph.D.
Anotace
Tato práce se zabývá implementaci dialektu programovacího jazyka Smalltak nazývaného Simple Object Machine (SOM), a to v čistě funkcionálním programovacím jazyce Haskell. Práce zkoumá syntaxi a sémantiku SOM programu a analyzuje již existující implementace. Následně je prezentován návrh, design a implementační detaily virtuálního stroje, který je založený na bajtkódových instrukcích a bajtkodovém interpeteru. Jednotlivé části virtuálního stroje jsou jednotlivě popsány, což jsou lexer, parser, překladač, běhové prostředí a garbage collector.

Conjugata - aplikace pro cvičení časování sloves - backend

Autor
Petr Polívka
Rok
2018
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
prof. Dr. Ing. Petr Kroha, CSc.
Anotace
Tato bakalářská práce se zabývá analýzou, návrhem a následnou implementací backendu mobilní aplikace pro operační systém Android. Aplikace se jménem Conjugata pomáhá se studiem časování sloves v cizích jazycích, konktétně ve španělštině. Aplikace se při vytváření cvičení přizpůsobuje odpovědím uživatele, který aplikaci používá. Obsahuje vybrané časy a kategorie používané ve španělském jazyce. Obsahuje také systém výuky, který uživatele provede pravidly, které se při časování ve španělském jazyce používají. Aplikace je užitečná pro všechny studenty španělského jazyka, kteří si chtějí časování sloves procvičit, ale zároveň i pro nováčky, kteří časování neovládají, ale chtějí se ho naučit. Tato aplikace je vytvářena ve spolupráci se studentem ČVUT Matějem Sedlákem, který vytváří frontend aplikace. V příloze se nachází výsledná aplikace ve formátu APK pro mobilní telefony s operačním systémem Android.

Přehled přístupů postupného typování v dynamických programovacích jazycích

Autor
Rostislav Blaha
Rok
2023
Typ
Bakalářská práce
Vedoucí
doc. Ing. Filip Křikava, Ph.D.
Oponenti
Pierre Donat-Bouillud, Ph.D.
Anotace
Graduální typování je vlastnost programovacího jazyka, která umožňuje kombinaci dynamického a statického typování ve stejné codebase. Tím umožňuje přidávání typových anotací průběžně s tím, jak se kód postupně rozšiřuje. Cílem této práce je prozkoumat stávající přístupy ke graduálnímu typování v progamovacích jazycích Python, Ruby a PHP, a určit, které techniky by bylo možné aplikovat na programovací jazyk R. Práce shrnuje informace z vícero zdrojů zahrnujících dokumentaci, odborné články, blogové příspěvky, formální návrhy a diskuse na fórech. Následně přichází s návrhy ohledně implementace, syntaxe, sémantiky, nástrojů a strategií pro přijetí graduálního typování komunitou jazyka R.

Dynamické generování testů pro balíčky v R

Autor
Filippo Ghibellini
Rok
2017
Typ
Bakalářská práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Anotace
Statistické programování nabývá na popularitě s tím jak se zároveň zvyšuje poptavka v příbuzných oborech jako Machine learning, Big data a podobné. R je hlavním hráčem v této oblasti avšak jeho jedinečný návrh znemožnil adopci pokroku z jiných standartních jazyků. V této práci představujeme nástroj umožnující nahrávání spuštění programu a následné generování unit testů kontrolující reproducibilitu sledovaného chování.

Diplomové práce

Shere - aplikace pro správu osobních poznámek a dokumentů

Autor
Marek Foltýn
Rok
2018
Typ
Diplomová práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Jan Ječmen
Anotace
Tato diplomová práce se zabývá tvorbou aplikace pro psaní poznámek. Součástí práce je analýza existujících aplikací pro tvorbu poznámek a rozbor jejich nedostatků. Návrh implementované aplikace je vytvořen na základě této analýzy a řeší nalezené nedostatky.

Grammatica - mobilní aplikace pro procvičování gramatiky

Autor
Alexander Bublik
Rok
2019
Typ
Diplomová práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
prof. Dr. Ing. Petr Kroha, CSc.
Anotace
Tato práce popisuje proces vývoje mobilní aplikace pro operační systém Android a serverové části s databází, která komunikuje s klientem prostřednictvím REST API. Aplikace je určena pro studium cizích jazyků, podporuje rukopisný vstup a co nejpřesnéji simuluje zážitek ze cvičení v učebnici. Práce obsahuje analýzu možných řešení a konkurenčních aplikací, návrh klientské a serverové části, implementaci a testování aplikace.

SWM - Simple Window Manager

Autor
Jan Bína
Rok
2020
Typ
Diplomová práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
doc. Ing. Jan Janoušek, Ph.D.
Anotace
Tato práce se zabývá návrhem a implementací klasického (nedlaždicového) správce oken pro X Window System. Správce oken se stará o rozmístění a vzhled oken jednotlivých aplikací na obrazovce a je tedy klíčovou součástí jakéhokoliv moderního počítače s grafickým rozhraním. Ačkoliv již existuje mnoho správců oken, zejména pro X Window System, chybí zde jednoduchý nedlaždicový. Tato práce se snaží jeden takový vytvořit. Cílem bylo, aby splňoval freedesktop standardy ICCCM a EWMH a držel se UNIXové filozofie dělat jednu věc a dělat ji dobře. Důraz byl také kladen na jednoduchost, čitelný a testovatelný kód, a na to, aby byl správce oken snadno použitelný a rozšiřitelný.

Power manager pro jakýkoliv linuxový desktop

Autor
Róbert Selvek
Rok
2022
Typ
Diplomová práce
Vedoucí
doc. Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Jiří Kašpar
Anotace
Správce napájení je služba, která reaguje na aktivitu uživatele a spouští různé akce pro úsporu energie. Například ztlumí jas obrazovky, uzamkne uživatelskou relaci nebo převede systém do režimu spánku. Většina stávajících správců napájení je těsně integrována do kompletních desktopových prostředí, jako je GNOME nebo KDE, a proto je nepoužitelná jako samostatná služba pro ostatní desktopy. Těch pár samostatných pak postrádá funkce, které bychom očekávali od správy napájení známé z moderního desktopu. Tato práce popisuje návrh a implementaci nového, samostatného, na desktopu agnostického správce napájení. Podporuje všechny obvyklé akce pro úsporu energie, snadno se konfiguruje a lze jej rozšířit o nové chování.

Ahead-of-time kompilátor pro jazyk microC

Autor
Václav Král
Rok
2022
Typ
Diplomová práce
Vedoucí
doc. Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Jiří Kašpar
Anotace
Cílem této práce je implementace ahead-of-time optimalizujícího kompilátoru microC---jazyku, který se používá v předmětu NI-APR (Vybrané metody analýzy programů) na FIT ČVUT pro výuku analýz programů. Tento kompilátor má především sloužit jako učební pomůcka předmětu NI-APR, která demonstruje uplatnění a užitečnost vybraných statických analýz při kompilaci a optimalizaci. V práci se čtenář seznámí nejen s architekturou kompilátorů, ale i s jednotlivými statickými analýzami, které kompilátor podporuje. Dále se práce zabývá návrhem a především implementací kompilátoru. Optimalizační schopnosti implementace jsou poté demonstrovány na několika ukázkových příkladech. Závěrem práce navrhuje možná zlepšení a rozšíření. Výsledkem práce je funkční optimalizující kompilátor jazyku microC.

Automatizované pipeliny pro analýzu dat

Autor
Michael Vrána
Rok
2023
Typ
Diplomová práce
Vedoucí
doc. Ing. Filip Křikava, Ph.D.
Oponenti
Pierre Donat-Bouillud, Ph.D.
Anotace
Pipeliny pro analýzu dat popisují datovou analýzu, jako sekvenci na sobě závisejících kroků. Tyto pipeliny jsou reproducibilní a lze je vyhodnocovat efektivně. Tato práce se zabývá návrhem a implementací balíčku v jazyce R nazvaným Pipelinr, což je doménově specifický jazyk a runtime pro pipeliny pro analýzu dat. Navržené DSL umožňuje uživateli popsat pipeline jako množinu na sobě navazujících stagí. Dále umožňuje uživateli využívat různé komponovatelné vzory pro dynamické větvení, které umožňují rozpad stage na množinu úloh, jež lze parallelně spouštět pomocí GNU Parallel. Runtime nadále poskytuje metadata ohledně běhu pipeline, které lze využít jako vstup do pipeline samotné.

Lokalizační systém PROWiLOS v1.0

Autor
Vít Medřický
Rok
2019
Typ
Diplomová práce
Vedoucí
Ing. Filip Křikava, Ph.D.
Oponenti
Ing. Jan Bradáč
Anotace
Tato práce navazuje na prototyp webového systému PWiL zhotoveného v bakalářské práci stejného autora. PWiL je systém lokalizace pacientů v pečovatelských domech umožňující efektivní přivolání pomoci pro pacienty v případě nouze. Z prototypu z bakalářské práce byl vytvořen hotový systém připravený k nasazení do testovacího provozu. Uživatelské rozhraní webové aplikace je doplněno o nezbytné chybějící části a jsou implementována a testována komunikační rozhraní. Aplikace je napsána v PHP s použitím frameworku Laravel.