Software Engineer & Data Scientist

Built an end-to-end deep learning project using the Oxford Flowers dataset, covering both image classification and generation in PyTorch. Developed a custom CNN with modern training techniques (batch normalisation, dropout, label smoothing, AdamW, cosine scheduling), achieving up to 83% accuracy on a 10-class dataset and 77% on a 102-class fine-grained task. Extended the project to generative modelling by implementing a latent diffusion pipeline, combining a convolutional autoencoder and denoising network to generate realistic flower-like images from noise.

Developed a Java application to determine the largest possible circle that can be placed within a set of telephone locations without enclosing more than 12 points. Implemented a computational geometry approach to evaluate candidate circles and enforce spatial constraints efficiently. This project demonstrates strong problem-solving skills, algorithm design, and the ability to translate complex geometric requirements into an optimised, working solution.

Applied supervised machine learning techniques to classify Spotify songs into low, medium, and high popularity using audio features and streaming data. Performed exploratory data analysis, engineered a custom target variable, and implemented multiple classification models (LDA, QDA, SVM, KNN) in R. Evaluated and compared model performance, identifying key limitations in predicting popularity from audio features alone. This project highlights my ability to build end-to-end machine learning workflows, analyse real-world datasets, and communicate data-driven insights.

Designed and implemented a reinforcement learning agent to play the strategic card game Raj using Q-learning and a softmax action selection policy. Developed a custom state representation and reward structure to enable the agent to learn effective bidding strategies through experience. Trained the agent over 15,000 simulated games against varied opponents, achieving a 64% win rate and demonstrating strong adaptability. This project highlights my ability to apply reinforcement learning concepts, design intelligent agents, and optimise decision-making in complex environments.

Developed a Python application to validate and clean email addresses by enforcing a strict set of formatting rules. Implemented a structured approach to parse emails into components (mailbox, domain, extension) and applied step-by-step validation to ensure accuracy and consistency. Designed comprehensive test cases to cover edge cases and input variations, resulting in a robust and reliable validation tool. This project demonstrates strong problem-solving skills, attention to detail, and the ability to write clean, maintainable code.