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