Projects

Below are some of my favourite programming projects, detailing the languages and tools used for each project, along with their GitHub repo link.

Twitter Sentiment Analysis


Languages:

Python

Technologies / Frameworks:

PandasTweepyPlotlyScikit-learnNLTKThreadingMySQL

Final year project, scraped 6000 tweets that were related to the FAANG companies’ climate change performance and implemented a Sentiment Analysis algorithm to measure public opinion.

NBA Data Visualization Website


Languages:

JavaScriptTypeScript

Technologies / Frameworks:

AWSLambdaSageMakerComprehendDynamoDBS3WebSockets

Scraped data and Tweets about NBA teams and used a range of AWS functions to manage this data and produce predictions for future data using ML. This data was then used in the front-end with Plotly for data visualisation.

Machine Learning Categoriser for handwritten digits (UCI)


Languages:

Java

The UCI digits is a data set consisting of 5620 handwritten digits. I implemented 3 approaches for categorising these digits: Nearest Neighbour (98.3% acc.), Genetic Algorithm (Tournament Selection, Uniform Crossover, ~70.4% acc.) and Multilayer Perceptron (Sigmoid Transfer/Activation, MSE loss, ~93.6% acc.). Each of these were ran with two-fold tests for the 5620 digits.

Book Price Comparison Website


Languages:

JavaJavaScript

Technologies / Frameworks:

MavenHibernateSpring BeansSeleniumJUnitThreasRESTful APIMySQL

Built a price comparison website for books from 5 different retailers. Used JSoup and Selenium web scraping, and a range of other Java frameworks/libraries to manage the project. Built a RESTful API, allowing the user to retrieve data from the database in JSON format.

Travelling Salesperson Problem


Languages:

Java

Implemented Held-Karp, a dynamic programming exact algorithm for the TSP that runs in less than 20 seconds for 20 cities. Also implemented a custom Hash Table implementation to provide O(1) get and put functions.

E-Commerce Website


Languages:

JavaScriptPHP

Technologies / Frameworks:

MongoDB

Mock e-commerce website for trainers. Allowed the user to sign up for an account, add items to their basket, and 'purchase' those items (this data was stored in a local MongoDB database). A Content Management System (CMS) was implemented for this project, allowing 'staff' to manually check stock counts, change stock details and view/edit customer purchase history.

Tetris Game Website


Languages:

JavaScriptPHP

Created a local website and a JavaScript Tetris which can be played on the website. It also allows users to sign up for an account (stored in session storage) and save their high scores on a leaderboard.

Mock Running App (Single Page WebApp)


Languages:

JavaScript

Technologies / Frameworks:

PromisesNodeJSMySQL

Created a local website that acts as a running app. This is inspired by Strava, so allows users to record and post exercises, view a timeline of their friends' exercises, and comment and like those posts. As a pseudo social media site, it also allows users to create profiles and upload profile pictures.

Hashtable Library System


Languages:

C++

Technologies / Frameworks:

Catch2 (Testing)

Implemented a Hash Table from scratch with linear probing for collision resolution and a custom String hash function. Works on a simple library system, where it can store, retrieve and delete books from the system and can realistically provide O(1) time complexity and good space complexity if the number of books is of a reasonable size.

Mock Voice User Interface


Languages:

JavaScript

Technologies / Frameworks:

WebKitSpeech

Created a mock IDE which could be controlled by a voice user interface (VUI). This project was more about the exploration of how VUI's could be used in an educational setting, and was less about the implementation, but was highly interesting and very fun to create. The VUI is named 'CLIDE'.

GitHubLinkedIn