Projects/README.md
2026-04-21 09:24:11 +02:00

162 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# University Projects — Roman Nečas
Coursework from the **Bachelor of Information Technology** programme at the **Faculty of Information Technology, Brno University of Technology (FIT VUT)**, 20232026.
This repository is a portfolio snapshot — for each course, the version of the project that was submitted and graded. Some projects are team efforts (co-authors credited in the relevant directory); the rest are solo work.
## Repository layout
```
projects/
├── 1BIT/ # Year 1 (2023/2024)
│ ├── winter-semester/
│ └── summer-semester/
├── 2BIT/ # Year 2 (2024/2025)
│ ├── winter-semester/
│ └── summer-semester/
└── 3BIT/ # Year 3 (2025/2026)
├── winter-semester/
└── summer-semester/
```
## Highlights
If you only have time to look at a few projects, start with these:
- **ISA — ICMP Covert Channel** *(C, OpenSSL)* — encrypted file transfer tunneled through ICMP Echo packets.
- **IJA — Advance Wars clone** *(Java 21, JavaFX, 93 JUnit tests)* — turn-based strategy game with two AI opponents and a replay system. Team lead.
- **IIS — Winery Management System** *(Laravel 12, Tailwind 4, Docker)* — full-stack web app with 20+ migrations and role-based access control.
- **IMP — ESP32 Heart-Rate Monitor** *(C, ESP-IDF, FreeRTOS)* — photoplethysmography with a Kalman filter, sampled at 500 Hz.
- **IPK — L4 Port Scanner** *(C, raw sockets)* — TCP/UDP scanner for IPv4 and IPv6, benchmarked against Nmap.
- **INP — 8-bit CPU in VHDL** — synthesisable CPU that executes a BrainFuck-like instruction set.
## Year 3 (2025 / 2026)
### Winter semester
**ISA — Network Applications and Management**
File transfer through an ICMP covert channel. A C client/server that hides arbitrary files inside ICMP/ICMPv6 Echo-Request/Reply payloads, encrypts them with AES before transmission, and reassembles them on the listening side. Includes a custom on-top-of-ICMP framing protocol, a manpage, and a PDF design document.
**IIS — Information Systems**
Winery management web application. Grape varieties, vineyard rows, harvests, wine production, purchases, events, and customer reservations. Laravel 12, Tailwind CSS 4, Vite; role-based access control via Laravel Policies; Dockerised for dev and prod.
**IMP — Microprocessor and Embedded Systems**
ESP32 heart-rate monitor using an optical PulseSensor and an I²C OLED display. 500 Hz ADC sampling on a hardware timer, Kalman-filtered signal, threshold-crossing beat detection. Written in C on ESP-IDF v5.5.1 with FreeRTOS.
**IMS — Modelling and Simulation**
Ski resort discrete-event simulation in C++/SIMLIB. Analyses lift capacity, queue lengths, and throughput under varying skier arrival rates. Team of 2.
**IZV — Data Acquisition, Processing and Visualization**
Three Python assignments covering web scraping, statistical analysis of a real-world dataset, and visualization.
### Summer semester
**IJA — Java Programming Language**
*Advance Wars* clone in Java 21 / JavaFX. Grid-based tactical combat with terrain costs, multiple unit types, economy, two AI opponents (random and heuristic), and a step-through replay. Architecture uses MVC (engine cleanly separated from GUI), Command pattern with full undo/redo, Factory, and Observer. Dijkstra pathfinding. 93 JUnit 5 tests across 15 test classes.
**ITS — Software Testing and dynamic analysis**
Test design exercises: BDD/Gherkin scenarios, test case documentation, and coverage reports.
## Year 2 (2024 / 2025)
### Winter semester
**INP — Computer System Design**
- *Project 1:* 8-bit CPU in VHDL that interprets a BrainFuck-like instruction set (synthesisable, simulated in ModelSim).
- *Project 2:* Vigenère cipher implemented in MIPS64 assembly.
**ISS — Signals and Systems**
Digital signal processing assignment in Python (Jupyter notebook): spectral analysis, filtering, and frequency-domain manipulation of audio signals.
**ITU — User Interface Design**
UI/UX project — mockup, clickable prototype, and a final documentation PDF.
**IAL — Algorithms**
Classic data structures in C across two homework sets: linked lists, stacks, queues, binary trees (both recursive and iterative traversal), and hash tables.
### Summer semester
**IPK — Computer Communication and Networks**
- *Project 1 (OMEGA):* L4 port scanner in C supporting TCP and UDP scanning over IPv4 and IPv6; evaluated against Nmap.
- *Project 2 (IPK25-CHAT):* Chat client implementing the IPK25-CHAT application protocol with both TCP and UDP transport variants, authentication, and channel semantics.
**IPP — Principles of object-oriented programming**
Two-part compiler project for the SOL25 language.
- *Part 1:* Python 3.11 parser using the Lark library; produces an XML AST after lexical, syntactic, and static semantic analysis.
- *Part 2:* PHP 8 interpreter for SOL25, built object-oriented with clean Model / Expression / Statement / Values namespaces.
**IDS — Database Systems**
Library management database in Oracle SQL. Four-part team project (ER model → relational schema → DML and queries → triggers, procedures, materialized view, analytical queries). Team of 2.
**IBS — Information System Security**
Security assignments covering authentication, access control, and common vulnerability classes.
**IZU — Fundamentals of Artificial Intelligence**
Four assignments on classical AI: uninformed and informed search, heuristics, and game-tree algorithms.
**ITY — Typography and Publishing**
Five LaTeX typesetting assignments of progressively increasing complexity — from basic documents to mathematical papers and bibliographies.
## Year 1 (2023 / 2024)
### Winter semester
**Keyfilter** — C project implementing interactive prefix-based filtering over a keyword list.
**Maze** — C project implementing right-hand / left-hand rule maze solving on a triangular-cell maze.
**IEL — Electronics for Information Technology**
DC / AC circuit analysis project with Dia schematics and a written report.
### Summer semester
**IJC — Programming in C**
- *Project 1:* Sieve of Eratosthenes built on a custom bitset data structure, plus a `no-comment` preprocessor that strips C-style comments.
- *Project 2:* Generic hash-table library with string interning, used to implement `tail` and `wordcount` clones.
**IOS — Operating Systems**
- *Project 1:* Bash shell scripting for log processing and filesystem traversal.
- *Project 2:* Process synchronization in C using POSIX shared memory and semaphores.
**INC — Digital Design**
Digital logic assignment (schematic / VHDL level).
**IZLO — Fundamentals of Logic**
Two assignments combining propositional / predicate logic theory with a small C implementation.
## Course code reference
| Code | Course (English) |
| --- | --- |
| IJC | Programming in C |
| IOS | Operating Systems |
| INC | Digital Design |
| IZLO | Fundamentals of Logic |
| IEL | Electronics for IT |
| IAL | Algorithms |
| INP | Computer System Design |
| ISS | Signals and Systems |
| ITU | User Interface Design |
| IBS | Information System Security |
| IDS | Database Systems |
| IPK | Computer Communication and Networks |
| IPP | Principles of object-oriented programming |
| ITY | Typography and Publishing |
| IZU | Fundamentals of Artificial Intelligence |
| ISA | Network Applications and Management |
| IMS | Modelling and Simulation |
| IMP | Microprocessor and Embedded Systems |
| IIS | Information Systems |
| IZV | Data Acquisition, Processing and Visualization |
| IJA | Java Programming Language |
| ITS | Software Testing and dynamic analysis|
## Notes
- All projects were developed for FIT VUT courses and graded by the respective instructors. They are published here as a portfolio snapshot; the faculty's academic integrity rules apply to anyone considering reuse.
- Team projects list co-authors inside the relevant project directory (e.g., `IDS/xnecasr00_xpribik00/`).
- Binary build artefacts and third-party dependencies are generally excluded; follow each project's build instructions to rebuild from source.
## Contact
Roman Nečas — [LinkedIn](https://linkedin.com/in/roman-necas).[roman@necas.me](mailto:roman@necas.me)