Náměty na projekty
Toto jsou rámcové náměty pro zadání bakalářských/diplomových
prací. Pořadí projektů v seznamu není významné.
Některá zadání jsou poněkud náročnější (ale lze je doladit).
Pokud máte zájem, ozvěte se na peringer@fit...
Zadání bude mít po upřesnění formu:
- Prostudujte ..., analyzujte ...
- Navrhněte ...
- Implementujte ...
- Ověřte funkčnost a zhodnoťte přínos ...
Bakalářské práce jsou jednodušší a implementačního charakteru, u diplomových
prací je nutné prostudovat více teorie a obvykle také použít pokročilejší metody
analýzy/návrhu/implementace/testování.
Následující text obsahuje 3 části:
simulační,
programátorskou/verifikační a
speciální (HW, bastlení, ...).
- (Bc?) Implementace demo simulátoru pro výuku: super jednoduchý simulátor s možností
vizualizace interních procesů (např. jak probíhají události při simulaci modelu SHO,
jak funguje spojitá simuace s Eulerovou metodou, atd.)
[asi C++/Qt, Webassembly, případně něco pro Android?]
- CUDA/OpenCL: paralelni implementace numerických metod atd... (server s nvidia grafikou mame)
- Computational Science - příklady, simulátory, atd = viz např. kniha:
Shiflet A., Shiflet G.:
Introduction to Computational Science: Modeling and Simulation for the Sciences
, Princeton University Press, 2006
- DP: Paralelní a distribuovaná simulace: otestovat HLA, ...
- DP: Co-simulation, FMI, Openmodelica atd...
- Bylo, ale je co vylepšovat: Implementace a testování kalendáře událostí. Existuje seznam a CQ
implementace, je třeba doladit CQ (SNOOPY?), řádně otestovat, porovnat s ostatními.
- Testování SIMLIB/C++. Regresní testy, testy aritmetiky, simulační
modely, vizualizace rozdílů/chyb, atd. Porovnání s analytickým řešením a s
jinými systémy. (Doplnit benchmarky.)
- Simulace + celulární automaty -- velmi zajímavé téma, jde o
experimenty, hledání zajímavých konfigurací (inspirace = hra Life, modely
růstu mikroorganismů, atd.).
Je dobré se zaměřit na nějaké _konkrétní_ aplikace CA.
- Malý "WWW-browser-based" simulační systém v HTML5/WebAssembly/...
pro výukové účely, včetně vizualizace výsledků. Inspirace např.
zde.
Možnost specializace (např jen vybrané elektrické obvody nebo jen systémy hromadné obsluhy)
- DP: C++ implementace nástroje pro kvalitativní simulaci podle vzoru QSIM,
CQ, atd. Příklady a dokumentace.
- BP: Sbírka příkladů simulačních modelů.
Implementace nejen pro SIMLIB/C++ (základ existuje),
ale i pro Dymola/OpenModelica, Matlab, SciLab, Octave, atd.
Analýza a porovnání použitých simulačních nástrojů.
- Optimalizační metody, knihovna algoritmů,
testy, aplikace v SIMLIB [základ již existuje, je třeba podstatně vylepšit].
- Numerické integrační metody pro výuku - knihovna základních algoritmů,
_testy_, aplikace v C a C++ (Inspirace: GSL, netlib, ...)
[možnost e-learning aplikace]
- Několik souvisejících projektů:
Simulační systém založený na client-server přístupu [základ serveru existuje].
- Editor modelů: grafika, XML, ...
- Řídicí podsystém, komunikační podsystém. [GUI, síť, XML, SOAP?]
- Databáze modelů, experimentů a výsledků. [XML, SQL?]
- Simulační server + nadstavby. [SIMLIB/C++, simulace, Linux]
- Překladače simulačních modelů z různých reprezentací do XML a zpět.
- Simulace někerých jevů v jádru Linuxu s ohledem na výkon OS.
Optimalizační studie, analýza výkonnosti I/O podsystému, VM, atd...
(Náročné, je možné automatické generování modelu ze zdrojových kódů?)
- BP+DP: Simulace na molekulární úrovni (molecular dynamics) -- průzkum bojem. Souvislosti:
nanotechnologie, fyzika, chemie, robotika.
- DP: Simulace prostorových systémů -- využití metod: MOL, FDM, FEM, CFD, ...
(Výuková aplikace, demo)
- ...
- Verifikace
- Modul pro načtení struktury kódu a všech dalších informací ze
spustitelných souborů a/nebo knihoven. Jde o vytvoření datových struktur
(podobných tabulce symbolů), které se budou používat pro verifikaci.
[= vytvoření symbolické reprezentace programu pro verifikaci]
(Podobné jako CIL, CL, ale z binárních souborů.)
Cíl: databáze mezikódu s anotacemi od různých verifikačních nástrojů
(s možností tyto anotace používat dalšími nástroji)
+ update při změnách
- Nástroj pro vizualizaci struktury programu a různé analýzy. CFG, call graph, ...
(Aplikace: reverse engineering, refactoring, forensics, ...)
- ? Sestavení programu z modulů v symbolické podobě (mezikód). Motivace: např. jádro Linuxu
je třeba analyzovat jako celek (alespoň v minimální konfiguraci)
Možné souvislosti: využití LTO, debug-info, ...
- * Generátor programů/testů pro verifikační nástroje:
seznamy všeho druhu (ve všech kombinacích ukazatelových operací), stromy,
seznamy seznamů, seznamy seznamů seznamů ...
("Dynamic-data-structure ZOO", základ bude jednoduchý)
- Refactoring:
- Upravit debugger DDD
pro Qt toolkit a C++
(TODO: Existuje jiný volně dostupný debugger se schopností vizualizace datových struktur?)
Možnost doplnění umělé inteligence pro (téměř) automatickou volbu režimu zobrazení.
- Refactoring:
Převod existujícího kódu do moderního C++ (C++11,...,C++23)
-- cokoli rozumného co je napsané v jazycích jako Java,C#,C (a není
už v C++ implementováno) převést do jazyka C++   (
+ nový návrh s využitím návrhových vzorů
+ drobná vylepšení
+ porovnání efektivity obou implementací
)
např. http://ditaa.sourceforge.net/,
https://github.com/asciitosvg/asciitosvg,
https://github.com/knsv/mermaid,
...
- ? Refactoring: Automatizace převodu starších programů do C/C++ kódu.
Např. hra pro ZX Spectrum:
automatická analýza, generování C++ kódu (+ případné ruční doladění)
-- výsledkem je běžná aplikace se zdrojovým kódem, se kterou se dá dále
pracovat (na rozdíl od Z80 asm, omezené grafiky, malé paměti, atd.).
- ? Android aplikace pro podporu výuky (např.
programování/modelování/simulace/...), dálkové ovládání čehokoli atd.
(=Hledání zajímavých/netradičních možností využití tabletů a mobilů. Pozor: s Javou nepomůžu)
- Arduino, STM32, ESP8266, ESP32, ... : optimalizace kódu knihoven
(lepší čitelnost, návrh, efektivita, ...) + experimenty + repozitář
řada knihoven není dobře napsaná (= větší a pomalejší kód)
- ? Experimenty: (skrytá) komunikace přes audio kanál (ne ultrazvuk, ale něco
co příliš neruší v normálním audio doprovodu např. v TV. Modulace: změna
fáze?, co šum?, ultrazvuk?, "klapání"?, FM?) Může souviset s bezpečností.
- Grafika a vizualizace
- přehled volně dostupných vizualizačních nástrojů (nejen pro simulaci)
- heuristiky: jak automaticky popisovat osy grafu
(Inspirace: GnuPlot, R, ...), jak co nejlépe zobrazit zadaný průběh a
podobné algoritmy pro vizualizaci.
Specializované aplikace pro logický analyzátor/osciloskop/SDR/...
(==Dělat jednu věc, ale na úrovni.)
Příklady: Vizualizace naměřených hodnot, atd.
- ? Vizualizace obecných dat pro ladění:
Program dataDUMP -- strukturovaný výpis obsahu souboru.
+Knihovna pro strukturovaný výpis obsahu paměti.
+Program CONVERT pro převod formátů z/do XML.
+Analýza různých protokolů (inspirace viz. sigrok, wireshark, ...)
Vylepšení UNIX programu "file" (rozpoznávání typu souboru podle jeho obsahu).
- ? VM (Virtual Machines):
Metody efektivní implementace interpreterů, JIT pro Python atd...
Analýza, porovnání existujících VM, dokumentace -- vhodné pro BP.
Experimentální implementace VM -- vhodné do DP,...
- [už asi zbytečné - viz Boost]
[Bc] CONFIG file management -- modul/knihovna pro čtení/zápis konfiguračních
souborů. Inspirovat se UNIXem: implicitní, globální, uživatelská konfigurace.
[Cílem je vyčistit $HOME od .souborů, ponechat jen .config/ adresář]
Použití: např. konfigurace simulačních experimentů v SIMLIBu atd.
- [Bc] Jednoduchý modulární kalendářní program - náhrada starého programu
Ical/Tk/C++ pro X. Implementovat asi v C++/Qt, vylepšit rozhraní, umožnit
synchronizaci s mobilem atd. [inspirace: PalmPilot Calendar]
- [Bc] Jednoduchá demo-knihovna pro výpočty v modulární aritmetice.
Vhodné pro výuku šifrování/el.podpisu. Objektová nadstavba v C++ a/nebo
JavaScriptu. Příklady, testy. [podobné knihovny existují]
- ? Experiment:
Simple GUI -- Analýza návrhu Qt,GTKmm,FLTK a nový návrh s využitím nejnovějšího C++.
+Prototypová implementace. Nebo alternativa: GUI-wrapper?
- Emulátory/simulátory procesorů - pro experimentální účely a výuku ASM.
Existuje qemu, ... (Není to příliš složité, ale dost pracné.)
- Je co vylepšovat:
Inteligentní disassembler -- OO návrh a implementace v C++, heuristiky pro
hledání funkcí a tabulek, call-graph, (pro Z80,i386,...), XML?tabulka
instrukcí/formát výstupu. (Polo)Automatické anotace kódu.
[Inspirace: DesignPatterns, NASM, IDA, ...]
(Automatické hledání určitých sekvencí instrukcí, použitelné pro
analýzu bezpečnosti kódu, ...)
Velmi použitelné jako základ pro projekt
'verifikace binárního kódu aplikací'.
- Je co vylepšovat:
Poloautomatická analýza a organizace dokumentů
-- zdroje: PDF,TXT,HTML,..., cíl: přejmenování
souborů, klasifikace+přesun do adresářů, ...
Vyžaduje nalezení nebo vytvoření heuristik (= +- umělá inteligence).
(Rozdělení do zadaných adresářů podle obsahu: Datasheet, AN, SlashDot, News, atd.
Vyřazení vadných souborů, aktualizace zastaralých, odstranění duplicit, ...)
+ indexování
Motivace: Mám archivy článků, katalogů, AN, e-knih a ruční třídění je příliš pracné.
[Bc?] Inteligentní organizace fotografií (a případně dalších dat), odstranění
duplicit (i např. po otočení), indexace podle exif-data/času, formátu, obsahu, atd.
(Polo)Automatické přerovnání obsahu adresářů, vytvoření HTML indexu a náhledů, "tagy", ...
- Bc: Demo: simulace pro předměty IEL/IMS (zaměření na výukové prezentace:
jak funguje el obvod, polovodič, operační zesilovač, ...) +
vizualizace/animace + dokumentace
- ? DVB-T: Server pro záznam celého multiplexu do kruhové fronty + klientská
knihovna pro čtení + demo aplikace. Možnost vracet se až několik hodin zpět.
[netriviální, inspirace MythTV, tvheadend atd., prozkoumat chování flash paměti v SSD při
neustálém přepisování 3MBps/multiplex]
- ? DVB-T: prozkoumat způsoby levného vysílání (jen pro výzkumné účely)
přes D/A převodníky (VGA výstup, externí HW zařízení, ...).
+odpovídající programy
viz např. zde
- ? HW+SW: [infra] velmi levné=jednoduché optické spojení dvou počítačů (PPP,TCP/IP)
na větší vzdálenost. (Inspirace: RONJA, ale podstatně levněji)
- HW+SW: levný Osciloskop na PC | tablet
-- zobrazovací aplikace (nějaké již existují pro
zvukovou kartu nebo Nucleo desky), vstupní sonda.
(zajímavé, experimentální)
- HW+SW: Měření přes zvukový (nebo jiný) vstup
- např.: zvuk, f, teplota/f, napětí/f, atd.
Galvanické oddělení - asi optočlen s fotodiodou (linka) nebo
fototranzistorem (mikrofonní vstup zvukové karty má zdroj).
(Experimentální, možnost i jiného levného vstupu do počítače/mobilu/tabletu.
Např. audio komunikace odolná proti okolním zvukům.)
Programy pro visualizaci a zpracování výsledků, ...
Průzkum: měření fyzikálních veličin (např. teplota vody ve varné
konvici) analýzou zvukových projevů (FFT, +-doppler, etc).
(Vyžaduje asi kvalitní mikrofon = námět na výzkum.)
Možnost použití mobilu/tabletu (Android) jako zobrazovače
(např. displej pro Arduino).
- Další zajímavosti:
jednoduchý SDR přijímač (75kHz-čas, ELMG smog, rušení ...)
Detektor mikrovln? Detekce WiFI, mobilu, (vadné) mikrovlnky v okolí, atd.
Sledování/analýza/zaměření rušení v DVB-T signálu z pokojové antény/více antén
Senzory (piezo?) + SW pro detekci pohybu/zemětřesení v okolí (=analýza signálu).
Měřicí doplňky k mobilu = jak udělat vstup? (audio, přes kameru, ... ?)
... Detekce zlodějů + aktivace protiopatření ("armed response").
... měření CRI mobilem? (=hranol + kamera + analýza) = spektroskop
Měření? vzdálenosti podle síly signálu (Bluetooth/Wifi/NRF/cokoli)
- ...
Další možnosti:
Zadání RedHat, ...
Poslední změna na této stránce: