Systems exercises
Smaller coursework implementations that built my backend and networking fundamentals. Most of them have a working demo on the coursework pages.
Open the coursework demos
DNS forwarder with domain blocking and DNS-over-HTTPS
Computer Networks. Python, UDP, scapy, requests
Forwards queries over UDP or DoH, blocks configured domains and logs each query's domain, type and action.
Multi-threaded HTTPS file downloader
Computer Networks. C, POSIX threads, OpenSSL
Splits a large file into range requests fetched in parallel, tries each part up to three times and reassembles the file.
Ping and traceroute statistics
Computer Networks. Python, matplotlib
Runs ping or traceroute, computes average, median, minimum and maximum latency (per hop for traceroute), and writes a JSON report and a boxplot.
Multithreaded FTP client and server
Distributed Computing Systems. Java, TCP sockets, threads
get, put and ls over TCP with concurrent clients, a terminate command and synchronization to keep files consistent.
Persistent and asynchronous multicast
Distributed Computing Systems. Java, TCP, threads
A coordinator and participants with registration, duplicate prevention and temporal persistence controlled by a time threshold.
HMM gene annotation and RNA folding
Algorithms. Python, dynamic programming
A two-state hidden Markov model decoded with Viterbi, and an RNA secondary-structure predictor using dynamic programming.