Welcome! This portfolio is a showcase of my work and skills, where you can explore some of the projects I've developed.
- Web Development
- HTML & CSS
- JavaScript
- React
- PHP
- SQL
- Application Programming Interface
- Object Oriented Programming
- Java
- Python
- Artificial Intelligence
- Python
- Computer Vision
- Autonomous Systems
Repository: Pong DQN
This project focuses on developing a reinforcement learning model for playing the game Pong. Inspired by the classic Atari game, the aim is to train an agent using the Deep Q-Learning (DQN) algorithm to play against either a computer-controlled or human opponent. The project explores the game mechanics, the challenges of reinforcement learning in reward sparse environments, and the concept of reward shaping. A custom Pong environment is created, allowing the incorporation of additional information and the implementation of reward shaping techniques. The DQN algorithm is implemented using Python and the Keras package from TensorFlow.
- Python
- Keras
- Make sure you have Python installed on your computer.
- Download the PyGame library by running the following command: pip install pygame
- Download the Keras library by running the following command: pip install keras
- Download the ipynb file "Pong DQL Train.ipynb" from the repository below.
- Open the ipynb file using Jupyter Notebook, JupyterLab or on Google Colab Notebooks.
- Run the notebook to train the Deep Q-Learning model, watch as the agent get's better!
The right player is controlled by the AI while the left player follows the balls Y position at a fixed velocity. The AI scores a point around one minute into the game!
Pong.RL.Video.mp4
Repository: Hybrid Music Recommendation System
In this project, I utilised a hybrid methodology combining content-based and collaborative filtering techniques to develop a music recommendation system. To train the model, various algorithms from the Surprise Python Library such as k-NN, NMF and Slope One were tested. Howeverr, the SVD (Singular Value Decomposition) algorithm, inspired by Simon Funk who achieved success in the Netflix Prize, had the best performance. To train the model, the Million Song Dataset from Echo Nest and the R2-Yahoo! Music dataset were used. Additional, song metadata from the Spotify API was used to enrich the two datasets with more features.
The SVD model, based on matrix factorization, predicts a rating (represented as
Various parameters were available to optimise the model's performance. These parameters control the number of epochs (iterations) performed during training, the number of latent factors to be discovered, and hyperparameters such as the learning rate and regularization term, which influence the accuracy and generalisation capabilities of the model. To further refine the recommendation system's accuracy and quality of recommendations, swarm-intelligence algorithms were used to fine-tune the hyperparameters to ensure the best possible results for personalised music recommendations.
- Python 3
- Numpy
- Pandas
- Scikit Learn
- SciPy
- Surprise Python Library
- PySwarms
- Download a ipynb file from the repository.
- Open the ipynb file using Jupyter Notebook, JupyterLab or on Google Colab Notebooks.
- Run the notebook (select run all cells) to train the recommendation system model.
Repository: CHI-Conference API
I built an API along with a documentation page (see screenshot below) for the CHI2018 conference. The API can retrieve data about presenters, venues and events, with filtering capabilities for customised queries. I created a website that imports data from the API for users to easily find events, their location and who will be presenting, along with an admin section to modify any details. Furthermore, the documentation website provides clear instructions on how to interact with the API and is responsive for mobile devices.
- Robust API for data access.
- Filtering parameters for tailored queries.
- A user-friendly documentation website with a responsive layout.
- Server-side development using Object-Oriented PHP.
- Client-side development with modern JavaScript frameworks (React).
- Data representation in JSON.
- Token-based authentication for security.
- Adherence to architectural best practices such as REST, MVC, and N-tier for maintainability, scalability, and robustness.
Repository: Calendar Application
The web-based calendar application is designed to help students plan and organise their learning and activities. It features a user log-in system, various calendar views and a responsive and intuitive interface. Users can create, schedule, modify, and delete events using my application.
- User Log-In: Students can securely log in using their email and password.
- User Interface: The interface is clean, intuitive, and responsive for easy navigation.
- Calendar View: Provides daily, weekly, and monthly views to display important events.
- Event Creation: Users can create and schedule events such as exams, assignments, and extracurricular activities.
- Event Modification: Users can edit or delete events to accommodate changes or cancellations.
- HTML, CSS
- JavaScript & Luxon JS library for date and time manipulation.
- PHP: Object-oriented programming and utiliSing autoloading classes.
- MySQL for storing and retrieving student event data.