Coding Projects

Timetable Scheduling via Genetic Algorithm

Source Code on GitHub

Screenshot of web app showing a schedule it created

My thesis project in fulfilment of the requirements of my BSc degree, this project is a enterprise-grade application written in Java and JavaScript. It uses a Genetic Algorithm machine learning technique to automatically create a conflict-free schedule for a university classroom program.

Technical diagram showing the architecture of the application
Architecture diagram

The backend is a Java Spring Boot app built by Gradle running in a Tomcat container on an AWS EC2 instance, with a PostgreSQL database running on AWS RDS. The application is organised as a service-oriented architecture, with data access controlled by one microservice with a REST API, and the genetic algorithm being run on a separate microservice with its own API. A frontend is provided as a React progressive web app, interfacing with the remote APIs to start new scheduling jobs in the genetic algorithm and display existing schedules.

Screenshot of web app showing interface that is running a genetic algorithm job
Genetic algorithm in progress in the React web app

Background of the genetic algorithm operation and deeper technical details are available in the thesis report

Machine Learning in Python

Source Code on GitHub

An implementation of Quinlan’s C4.5 decision tree machine learning algorithm, which is written in Python with a Tkinter GUI.

The program imports a CSV data file and allows the user to label the data columns. It can classify using both continuous numerical data and non-numerical categorical data. After the model is constructed and saved as a tree data structure, a Graphviz & Pydot chart is produced and displayed, along with cross-fold validation accuracy percentage.

Screenshot of a python GUI showing  a visual representation of a decision tree machine learning classifier
Learning completed, showing decision tree classifier