Projects

Using Swarm AI to Map a Cave Network

CS310: Dissertation

December 2018 - April 2019

C++
OpenGL

Cave exploration is dangerous and time-consuming. This project demonstrates how swarm AI could be used in a group of autonomous flying drones to navigate and explore a cave as efficiently as possible. The project also includes realistic cave environment generation.

Using Swarm AI to Map a Cave Network

OpenGL Roller Coaster

CS324: Computer Graphics

December 2018 - January 2019

C++
OpenGL

A simulation of a 3-car roller coaster which traverses a small track featuring a lift hill, drop, loop-the-loop and turns. The coaster can be viewed from a first-person perspective in each of the carts, as well as additional views that follow the carts round the track.

OpenGL Roller coaster

RSCBot

CS261: Software Engineering Group Project

February 2018 - March 2018

JavaScript
jQuery
PHP
HTML
CSS
Materialize
SQL
MySQL

A specialised, personalisable Trader ChatBot that can fetch data and current news on stocks and sectors from the FTSE 100 index. Our ChatBot communicates with the user in a natural way, and has been designed to identify and adapt to the user’s main interests in the stock market, making for a more personal trading experience.

RSCBot

Scratch Clone

CS256: Functional Programming

December 2017

Haskell

A Haskell project which handles the evaluation of user constructed scratch-like programs on a web-based interface. Uses Monads to evaluate statements such as binary operations, if statements, case statements, iterative statements and simple memory handling.

Scratch Clone

Department Store Database Analysis

CS258: Database Systems

November 2017

Java
SQL

A database system for a department store that stores the inventory, orders, collections, deliveries and staff. The system allows staff to create in-store purchases, collections and deliveries, review the biggest selling products, calculate staff life-time success, staff contribution and candidates for employee of the year all using SQL queries. Input is carefully santised and validated before the SQL query is constructed.

Database Analysis

Multi-Threaded Packet Sniffer

CS241: Operating Systems and Computer Networks

November 2017

C

Packet sniffer that can detect and analyse Ethernet, ARP, IPv4 and TCP packets. Can also detect intrusions such as: Xmas tree scans, ARP poisoning and blacklisted URLs. Packets are analysed concurrently using a thread pool of a maximum of 10 threads.

Packet Sniffer

Mastermind

CS256: Functional Programming

October 2017

Haskell

A Haskell console program that simulates a player vs computer game of the board-game Mastermind. The computer was made to solve a game in 5 moves or less utilising Knuth's mastermind algorithm. This project is my first using a functional programming language.

Mastermind

URL Shortener

April 2017

JavaScript
Node.js
jQuery
MongoDB
HTML
CSS
Materialize

A URL shortening tool creating using the Node.js framework, Express.js for routing GET and POST requests and MongoDB to store URLs. The project is my first using all three of these technologies. Long URLs are stored in the database and the ID is encoded and used as the short URL.

URL Shortener

Graph Algorithm Visualiser

April 2017

JavaScript

A visualiser which displays the process of graph algorithms on complete graphs such as: Prim's, Kruskal's, Graham Scan, Nearest Neighbour and 2-Opt. The project was primarily a learning tool to help me improve my ability using JavaScript and better understand graph algorithms.

Graph Algorithm Visualiser

Cavern Minesweeper

March 2017

Ruby

The project served as a tool for teaching me Ruby. It is my first Ruby program. Cavern Minesweeper is based off of Minesweeper but with tiered ores (mines) which can only be mined if the player has levelled up enough. The player can level up by mining ores of lower or the same tier as the player.

Cavern Minesweeper

BSplit

CS139: Web Development Technologies Coursework

February 2017 - March 2017

PHP
JavaScript
jQuery
SQL
SQLite
HTML
CSS
Bootstrap

BSplit is a web application that allows registered users to split payments between parties. The app allows users to create and settle payments between parties. The app's dashboard utilises AJAX requests to prevent web page reloading to enchance user experience. Dashboard and Email notifications are sent when a new bill or group is created.

BSplit - Homepage

Portfolio

December 2016 - Current

PHP
JavaScript
jQuery
HTML
CSS
Sass
Bootstrap
Materialize

Website created to showcase my programming projects and learning progression with different technologies.

Portfolio

Witter

CS126: Design of Information Structures Coursework

February 2017 - March 2017

Java

Implemented various data structures to store Users, Weets and Folowers for a fictional Twitter clone called 'Witter'. Implemented a Red-Black tree, Minimum heap, Hash table and Linked list.

Witter

To Do List

CS139: Web Development Technologies Lab Work

January 2017 - February 2017

PHP
JavaScript
jQuery
SQL
SQLite
HTML
CSS

Created a To Do List Web application where users can signup and create their own lists. Learned and integrated PHP and SQL to store and query user's lists. Protected the application from SQL injection and Cross-Site scripting.

To Do List Homepage

Tic Tac Toe Web App

January 2017 - February 2017

JavaScript
HTML
CSS

Interactive Tic-Tac-Toe game with Single-player and Two-player modes. First experience with JavaScript. Three AI difficulties: Easy, Medium and Impossible. Two-Player mode.

Tic Tac Toe Game

Virtual Machines and Secure Email

CS140: Computer Security Coursework

January 2017 - February 2017

Bash

Set up and identified security defects in a Linux Virtual Machine and Apache web server. Sent and received secure email using GnuPG and Thunderbird.

Terminal

Steganography Embedder and Extractor

December 2016 - January 2017

Java

Steganography tool for hiding and extracting files within PNG files. Uses the least significant bit algorithm to embed message files. Analyses the available space within the carrier image. Detects the extracted file's MIME type.

Steganography

Linux Reference Guide, Shell Scripts & Lab Diary

CS133: Professional Skills Coursework

October 2016 - January 2017

LaTeX
Bash
HTML
CSS

Wrote a Linux Reference Guide using LaTeX for beginners of Linux. Created Bash Scripts for directory analysis. Designed and created an online lab diary of my progress whilst using Linux, Bash, LaTeX and Git. Achieved 100% on the coursework.

Lab Diary

3D Printer

CS132: Computer Organisation and Architecture Coursework

November 2016 - December 2016

C

Created a C program to move a 3D Printer's nozzle to create 3D shapes. Built upon simple 2D shapes to create more complex 3D shapes. Produced a report containing the development stages from analysis and design to implementation, testing and evaluation.

3D Printed Cube

Robot Maze

CS118: Programming for Computer Scientists Coursework

October 2016 - December 2016

Java

Wrote program using Java which controls a robot through a maze. Developed implementations utilising a Stack ADT, depth-first search and Tremaux's algorithm. Final implementation worked on mazes with multiple loops and reached the end quicker on the second run using data from the first run. Achieved 100% on the coursework.

Robot Maze

Delivery Route Planner

A-Level Computing Coursework

December 2015 - March 2016

C#
SQL
Access SQL

Created software in C# which creates an efficient route between multiple delivery locations. Used SQL to store and query data on products, clients and their deliveries. Produced a report which communicates the route, all items in the deliveries and the estimated time. Used graph algorithms such as Dijkstra's & Nearest Neighbour with 2-Opt to optimise the route.

Delivery Route Planner

Sorting Algorithm Visualiser

September 2015 - November 2015

C#

Visualises the sorting process on a dataset, highlights swapping and sorted elements in real-time. Supports 20 sorting algorithms including: Bubble & Quicksort. Options to change size of datasets, range of numbers in the dataset and delay. Ability to compare and visualise two sorting algorithms concurrently. Supports 18 types of start data including: Random, Normal Distribution, Sawtooth and Structured.

Sorting Visualiser