Caching Web Proxy for HTTP/1.1 written in C
The aim of this project was to gain familiarity with socket programming, and the task was to design and code a simple caching web proxy, that's capable of proxying GET requests.
To accomplish the assignment, 4 different stages were used to develop the proxy:
1. To create a listening TCP socket on the port that listens to all interfaces and proxies all requests without any caching.
2. Building on stage 1, a cache of 10 entries, each 100kB in size, was allocated to keep a copy of all requests and their responses.
3. At this stage, I now had to distinguish between cacheable vs. non-cacheable requests.
4. Expiration. Depending on the Cache-Control header provided in the requests, this specifies how long the response is valid for.
Traffic sign image classification model
A pair project developed for a university course.
The task was to build and critically analyse supervised machine learning models for the goal of classifying German traffic signs.
Given the GTSRB (German Traffic Sign Recognition Benchmark) dataset, my teammate and I implemented a comparison of the following models: SVM, Random Forest, CNN, and a stacking based model.
To train these models, we extracted features from the training and test data to feed into the models, experimenting with SIFT, Daisy, Resnet, and Colour Histogram values. Each feature engineered underwent a mutual information technique to select a subset of features with the most value that allows for better predictions.