Dijkstra’s algorithm
I implemented Dijkstra’s algorithm in C using three different data structures: dynamic arrays, complete binary trees, and doubly linked lists.
I developed all the required primitives and compared their performance using Bash scripts that generated and tested many graphs automatically.
To make the project interactive, I also created a JavaFX graphical interface, connected to the C code through JNI, allowing users to load a graph, choose the data structure, and visualize the computed shortest paths in real time.
This project strengthened my skills in algorithm design, C programming, performance analysis, and GUI development.
Compiler – Syntax Analysis
I designed and implemented a syntax analyzer using LEX and YACC for a small programming language that my team and I created.
Using LEX, I built the lexical analyzer responsible for tokenizing the code, and with YACC, I implemented the grammar, the parsing rules, and the structure of valid programs.
Our language supports functions, procedures, variables, arrays, structures, loops, conditionals, assignments, and arithmetic expressions .
We also defined a complete BNF grammar and built a working parser capable of detecting syntax errors and processing full programs.
This project strengthened my skills in compilers, formal grammars, lexical and syntactic analysis, and helped me understand how real programming languages are structured and interpreted.
Mobile game development – Pac-Man
I developed a Pac-Man–like game in Java using LibGDX, following a strict MVC architecture.
I implemented the game world, its entities, the rendering system, user interaction, and the full gameplay progression across multiple levels.
The project includes a complete Model describing the world (walls, ladders, traps, cannons, ghosts, items…), a Controller handling player input and game logic, and a View responsible for textures, animation, and screen transitions.
Across the different stages, I added core mechanics such as Pac-Man movement, pac-gums, collision detection, traps that open/close, cannons shooting projectiles, life management, animated sprites, active ghosts with random movement, special items, and win/lose screens.
This project strengthened my skills in game development, Java/LibGDX, MVC design, file-based configuration, animations, and general gameplay programming.
AES cryptography with various modes
I implemented the full AES encryption algorithm according to the official FIPS-197 specification, including SubBytes, ShiftRows, MixColumns and the full key schedule.
On top of the core AES, I added support for three secure modes from the NIST standards:
ECB and CBC (from SP 800-38A) and CMAC/CBC-MAC (from SP 800-38B).
My application allows encrypting and decrypting data, choosing the mode, managing IVs for CBC, and generating/verifying MACs in CMAC. Everything follows the exact functional and numerical requirements described in the NIST documents.
This project strengthened my skills in cryptographic engineering, block-cipher modes, secure implementation practices, and the interpretation of real cryptographic standards.