Záverečné práce dostupné v aktuálnom akademickom roku. Ak máte o niektorú z nich záujem, kontaktujte ma prostredníctvom MS Teams alebo emailom. Témy je možné po dohode upraviť alebo vymyslieť novú tému.

Knižnica projektu astfri na načítanie zdrojového kódu jazyka [Python|C#] Link icon

Projekt astfri poskytuje rôzne spôsoby načítania a transformácie zdrojového kódu rôznych programovacích jazykov. Ústrednou časťu projektu je abstraktná reprezentácia zdrojového kódu vo forme abstraktného syntaktického stromu (AST z angl. “Abstract Syntax Tree”). Projekt je riešený v rámci projektovej výučby a vzniklo z neho viacero bakalarkych prác:

V aktuálnej verzii obsahuje projekt hlavný modul implementujúci AST, modul vstupu (pre jazyky C++ a Java) a modul výstupu (do pseudokódu a UML diagramu).

Štruktúra projektu astfri

Cieľom práce je implementovať knižnicu pre načítanie zdrojového kódu jazyka C#|Python do abstraktnej reprezentácie poskytovanej modulom jadra. Výstupom práce bude knižnica, ktorá bude súčasťou modulu vstupu projektu astfri.

Táto práca rieši časť väčšieho projektu, v ktorom bude možné pokračovať v rámci projektovej výučby na inžinierskom štúdiu.

Bc., Ing. knižnica Vybraný programovací jazyk a C++

Zjednodušenie distribuovanej kompilácie Link icon

Preklad zdrojového kódu jazykov C a C++ je proces náročný na zdroje (pamäť, CPU, čas). Pri väčších projektoch môže tento proces trvať až niekoľko hodín. Povaha týchto jazykov však umožňuje jeho značnú paralelizáciu. Ani tá však pri výkonovo slabších zariadeniach nie je riešením. Efektívnym riešením je presunúť preklad na iné zariadenie s využím nástroja distcc.

V rámci bakalárskej práce je potrebné oboznámiť sa s procesom prekladu jazykov C a C++, a s princípom fungovania nástroja distcc. Následne:

Bc. dokumentácia bash, shell

Porovnanie alternatívnych implementácií AUT zo štandardnej knižnice jazyka C++ Link icon

Štandardná knižnica jazyka C++ obsahuje implementácie základných abstraktných údajových typov (AUT):

ktoré pokrývajú väčšinu bežných prípadov použitia. Okrem vyššie uvedených existuje množstvo otvorených knižníc, ktoré poskytujú alternatívne a rozšírené implementácie. Príkladom je súbor knižníc Boost alebo knižnice väčších spoločností ako napr. FacebookGoogle. Cieľom práce je porovnať vybrané** implementácie AUT zo štandardnej knižnice s alternatívnymi implementáciami z uvedených (a iných) knižníc. Pri porovnaní je potrebné zamerať sa na:

* Nejde o AUT, ale z pohľadu jazyka C++ spĺňa definíciu kontajnera. Zároveň ide o jeden z najpoužívanejších kontajnerov, preto je v zozname zahrnutý.
** Porovnanie všetkých implementácií je nad rámec jednej práce. Preto je potrebné najprv vhodne vybrať porovnávané implementácie AUT. Výberu môže predchádzať napr. analýza početnosti použitia vo veľkých otvorených projektoch.

Bc. CLI aplikácia, dokumentácia C++

Porovnanie implementácií tabuliek s rozptýlenými záznamami v jazyku C++ Link icon

Abstraktný údajový typ (AUT) tabuľka patrí k často používaným údajovým typom. Charakteristickou operáciou tohto AUT je sprístupnenie prvku podľa kľúča. Jednou z najčastejšie používaných implementácií je tabuľka s rozptýlenými záznamami (hešovacia tabuľka), ktorá ponúka konštantné časové zložitosti operácií. Reálny výkon tabuľky je však podmienený mechanizmom riešenia kolízií a kvalitou hešovacej funkcie. Cieľom bakalárskej práce je porovnať riešenie kolízií otvorenou adresáciou a zreťazovaním. Prakticky pôjde o porovnanie implementácie zo štandardnej knižnice (std::unordered_map) s implementáciami z otvorených knižníc.

Bc., CLI aplikácia, dokumentácia C++

Rozšírenie knižnice TeDDy pre binárne rozhodovacie diagramy s potlačenou nulou Link icon

Binárny rozhodovací diagram (BDD z angl. “Binary Decision Diagram”) je orientovaný acyklický graf, pomocou ktorého pokážeme efektívne reprezentovať Boolovské funkcie. Boolovské funkcie nachádzajú uplatnenie v rôznych oblastiach matematiky a informatiky. Jedným z uplatnení je reprezentácia množín, kedy množinu popisujeme tzv. charakteristickou funkciou, ktorá má podobu Boolovskej funkcie. Charakteristickú funkciu teda môžeme reprezentovať pomocou BDD. Napriek tomu, že BDD je veľmi efektívnou reprezentáciou Boolovskej funkcie, dokážeme v špecifickom prípade reprezentácie množín reprezentáciu ešte viac zefektívniť použitím špeciálneho typu BDD a to binárneho rozhodovacieho diagramu s potlačenou nulou (ZDD z angl. “Zero-suppressed Decision Diagram”). V súčasnosti máme na katedre C++ knižnicu TeDDy, v ktorej sú implementované klasické BDD. Cieľom práce je rozšíriť knižnicu o možnosť vytvárať a pracovať so ZDD. Rozšírenie bude postavené nad jadrom existujúcej knižnice a bude sa zameriavať na implementáciu základných množinových operácií ako napr. zjednotenie, prienik, rozdiel, …

Bc., Ing. knižnica C++

Nástroj na správu nástrojov jazyka C++ Link icon

Cieľom práce je implementovať nástroj podobný nástroju ghcup pre ekosystém jazyka C++. Nástroj by mal umožniť inštalovať a spravovať verzie nástrojov:

Bc., Ing. CLI aplikácia vybraný programovací jazyk