top of page

Projects

Machine Learned Congestion Control in Computer Networks

This was my dissertation during my final year of university.

 

In todays world there are computer networks everywhere, even in our own homes. Network environments and complexities vary significantly across networks, and therefore I chose to explore the state-of-the-art upcoming solutions to the congestion control problem. I had to install a modified kernel on the Debian 9 (Linux) operating system. I then modified the original Orca congestion control algorithm, adding code for tracking the algorithm's overall performance. I then ran it on several network configurations and compared the performance to the standard TCP Cubic algorithm. 

​

Languages: Python, C++, Perl

​

Project Github

Stock Market AI

This was a personal project I decided to delve into because of my personal interest in finance, investing, and macroeconomics. 

​

I used Python and Keras to create a three-layer neural network that predicted whether a stock would close higher than it opened. The initial hurdle in this project was sourcing the vast amounts of training data, feature selection, and data pre-processing. In order to get the necessary data, made a microservice that kept an up-to-date list of stocks in the S&P 500. I then used those stocks to pull their full price history using the Yahoo Finance API. From that data I then calculated various stock market trading indicators, often used by professional traders for market analysis, and used them as the features for my neural network. I then trained the artificial intelligence and assessed its performance. 

​

The performance was consistently just under 50%, therefore it was not practical for predicting the markets. However, I used this opportunity to significantly develop my skills in machine learning. 

​

Project Github

Xnolib

This was a project I worked on while I was on my summer internship in 2021 and 2022 as a software engineer. 

​

My colleague and I collaborated to create tools for the Nano cryptocurrency network, for network analysis and fault detection. This project showed me in a practical way, why it is not feasible to know the full state of a complex network at any given time. We first developed a function for parsing blocks on the network. This included blocks: send, receive, change, state, and open. Each block had its own respective roles and was encountered when pulling ledgers for specific accounts. We then performed handshakes with other nodes and made our first service: the peercrawler. It was intended to identify all the nodes (or peers) on the network. We then developed functions for performing the various types of requests such as the bulk pull for pulling all the blocks from an account. We developed the frontier service, which was a service that kept track of the latest blocks for all nano accounts. We also created a fork detector for detecting anomalies in the network ledger. 

​

Engaging in this project taught me how to use Git effectively as a team, how to collaborate and express ideas effectively with other programmers, and advanced software engineering practices I have not encountered in my academic experience. 

​

Project Github

Monopoly Game

This is a project I completed as a part of my university degree. 

​

I worked in a team of five people to collaborate and create a functional Monopoly game with a user-friendly front-end interface. My colleague and I were responsible for the back-end functionality of the game, two others were responsible for the front-end design, and another colleague was responsible for management and documentation. Python was our language of choice, with PyGame used for the front-end. We used the Agile methodology and test-driven development to guide us and we organised frequent team meetings to make sure we were all up to date throughout the duration of the project. This project emphasised the importance of using Git for version control and effective communication between the back and front-end teams. It taught us how to use Git branching, and how to resolve merge conflicts. It was incredibly interesting to see the Monopoly logic implemented in code from scratch and experience it develop into a fully functional game. One of the major hurdles we encountered was implementing AI players. We overcame this by making the AI players make decisions based on random chance. 

​

Project Github

bottom of page