Back to home

Projects

Course and personal projects from the Bachelor of Information Technology programme at FIT VUT Brno, 2023 onwards. In reverse chronological order.

Selected

Encrypted ICMP covert channel

2025

A client/server tool in C that transfers files hidden inside ICMP and ICMPv6 Echo packets. Files are AES-encrypted over raw sockets and reassembled on the receiving end using a custom framing protocol for fragmentation and integrity.

C · OpenSSL · raw sockets · Linux

Secured SOHO network

2025

A complete small-office network on a single VPS: router with NAT, Traefik reverse proxy with TLS, AdGuard DNS, Mailu mail suite, WireGuard VPN, and Authentik for centralised SSO. Hardened with UFW, Fail2ban, SSH key-only auth, and per-service Docker network isolation.

Docker · Traefik · WireGuard · Authentik · Mailu

Interpreter

2025

Two-stage implementation of a small object-oriented language. Python front-end parses the source using Lark and emits an XML AST after static semantic checks. A PHP back-end interpreter walks the tree with classes, methods, blocks, and full message-passing semantics.

Python · Lark · PHP · XML

Winery management system

2025

Full-stack web application for a winery — vineyards, grape varieties, harvests, production batches, purchases, and events with reservations. Role-based access control via Laravel Policies, shipped as a reproducible Docker Compose stack.

Laravel · PHP · MySQL · Tailwind · Docker

ESP32 heart-rate monitor

2025

Embedded heart-rate monitor using photoplethysmography on an ESP32. ADC sampling runs on a hardware timer, the signal is Kalman-filtered for noise reduction, and a threshold-crossing algorithm detects beats. FreeRTOS semaphores coordinate the ISR with the processing thread.

C · ESP-IDF · FreeRTOS · Kalman filter

Other coursework

Advance Wars clone

2026

Turn-based strategy game in JavaFX with grid combat, terrain costs, economy, two AI opponents, and a step-through replay mode. MVC + Command + Observer patterns, Dijkstra pathfinding, 93 JUnit tests. Team project — team lead.

Java 21 · JavaFX · Maven · JUnit 5

L4 port scanner

2025

TCP and UDP port scanner in C supporting both IPv4 and IPv6, written on raw sockets and benchmarked against Nmap.

C · raw sockets · IPv4/IPv6

IPK25-CHAT client

2025

Chat client in C++ implementing the IPK25-CHAT application protocol over both TCP and UDP, with authentication and channel semantics.

C++ · TCP · UDP

Library management database

2025

Oracle SQL project across four parts: ER model, relational schema, DML and queries, then triggers, stored procedures, a materialized view, and analytical queries. Team of two.

Oracle SQL · PL/SQL

Ski resort simulation

2025

Discrete-event simulation of a ski resort in C++/SIMLIB, analysing lift capacity, queue lengths, and throughput under varying skier arrival rates. Team of two.

C++ · SIMLIB

8-bit CPU in VHDL

2024

Synthesisable 8-bit CPU that executes a BrainFuck-like instruction set, simulated in ModelSim. Paired with a second INP assignment implementing the Vigenère cipher in MIPS64 assembly.

VHDL · MIPS64 asm · ModelSim

Signal processing in Python

2024

DSP assignment in a Jupyter notebook covering spectral analysis, digital filtering, and frequency-domain manipulation of audio signals.

Python · NumPy · Jupyter

Data structures in C

2024

Two-part algorithms course implementing linked lists, stacks, queues, recursive and iterative binary tree traversals, and hash tables from scratch.

C · data structures

Hash table library & Unix tools

2024

Generic C hash-table library with string interning, used to build clones of tail and wordcount. A second IJC assignment implements the Sieve of Eratosthenes on a custom bitset, plus a C-comment-stripping preprocessor.

C · Make

OS processes & shell scripting

2024

Operating systems coursework split in two: a Bash project for log processing and filesystem traversal, and a C program coordinating multiple processes through POSIX shared memory and semaphores.

C · Bash · POSIX IPC

Source code

Most of these projects live on my self-hosted git at git.necas.me/roman.necas/Projects.