Curriculum Vitae

Education

Doctor of Philosophy (PhD) University College London Begins October 2026
2026-2030
Bachelor of Science (Hons) in Computer Science - First Class Honours University of Liverpool
2024-2026
Certificate of Higher Education in Computer Science - Distinction City, University of London
2023-2024

Awards

Outstanding Stage 1 Student Award City, University of London Awarded for high academic performance
2024

Experience

Student Ambassador University of Liverpool Presented my undergraduate dissertation to prospective students and visitors during university open days Explained the project's motivation, methodology, and findings to audiences with varied technical backgrounds Engaged with prospective students and families, answering questions about Computer Science, university study, and undergraduate research
Jun. 2026
Teaching Assistant University of Liverpool Led lab sessions for COMP218: Introduction to the Theory of Computation Taught DFA/NFA, regular languages, CFG/PDA, Turing machines, and decidability Practiced inclusive teaching with accessible resources and responsive pacing for a mixed ability cohort
Sept. 2025 - May 2026
Junior IT Support 5E LTD. Diagnosed and subsequently repaired PCs Installed and configured PCs in a corporate environment Deployed and configured various applications and utility software
Jan. 2020 - Feb. 2020

Projects

Recursive Massively Multiplayer Noughts-and-Crosses Python, Pygame, zlib, Base64, SQLite3, Socket, Threading, Statistics Built a recursive, massively multiplayer Noughts-and-Crosses game, using scalable class hierarchies and efficient data structures to represent nested board states and propagate game rules Implemented an authoritative client-server multiplayer architecture using Python sockets and multithreading, with server-side move validation and state synchronisation for concurrent players Developed automated opponent functionality and statistical evaluation tools while keeping game logic, networking, persistence, and the Pygame interface modular and maintainable
Sept. 2025 - May 2026
Systematic Ablation Study for Robust CIFAR-100 Image Classification Python, PyTorch Lightning, TorchVision, Matplotlib, NumPy Built an image classification pipeline from scratch and benchmarked candidate architectures to select a strong baseline, ultimately moving from ResNet-34 to a more efficient ResNet-18 while maintaining competitive performance Ran a structured ablation study over key training and regularisation choices including data augmentation, learning rate scheduling, optimiser selection, and dropout, isolating each change to quantify its effect on test set accuracy and generalisation ability Implemented a residual Squeeze-and-Excitation (SE) enhancement in the final stage (d = 512) and evaluated the resulting accuracy vs compute trade-off against the chosen baseline
Sept. 2025 - Dec. 2025
Poker Hand Comparison with Deterministic Policy C++, QMake, Qt Creator Developed an interactive Qt GUI application in C++ for five-card draw poker that renders cards, shows each player's hand category, displays wins, supports human card swaps mirrored by a deterministic rule-based opponent, and runs a best-of-five format with draw handling Built the application in Qt Creator using QMake as a modular multi-file C++ project with dedicated headers and implementations for cards, hands, decks, and game logic, with clear separation of functionality and compile-time interfaces for each module Implemented hand ordering by overloading the comparator operator through a comparator lambda used with standard-library algorithms
Apr. 2025 - May 2025
Synchronous Ring Network Leader Election Simulator Java, Java RMI Developed a Java simulator for round-based ring networks implementing the Le Lann-Chang-Roberts and Hirschberg-Sinclair leader-election algorithms Built a terminal interface supporting processor-count selection, algorithm selection, and detailed results, with per-round and per-message metrics and readable progress and outcome summaries Implemented an object-oriented architecture for nodes, message passing, topology management, and round scheduling, alongside logging, CSV export, robust CLI validation, and checks for single-leader correctness and termination
Feb. 2025 - Mar. 2025
Minimum-Value Grouping Problem (Dynamic Programming) Python Designed and implemented a dynamic programming solution for the Minimum-Value Grouping Problem, using a clear structure to compute exact solutions on tractable instances Built a rigorous testing harness spanning small hand-checkable cases through to large stress tests, validating correctness through edge-case suites, invariants, and automated runs Profiled scaling behaviour by measuring runtime across instance sizes and documented the results in a concise write-up with reproducible experiments
Mar. 2025 - May 2025
Reliable UDP with Acknowledgements Java, Java Socket Developed a terminal-based sender and receiver that adds reliability to UDP using sequence numbers, positive acknowledgements, configurable timeouts, retransmissions, checksum validation, and delivery telemetry Designed the protocol to tolerate packet loss, reordering, and duplication while ensuring in-order delivery Used an object-oriented architecture separating packet construction, acknowledgement tracking, timers, payload validation, communication, timeouts, and checksum-based integrity
Oct. 2024 - Nov. 2024

Technical Skills

Languages Python, C, C++, C#, Java, SQL, HTML, CSS, JavaScript
Developer Tools Git, Linux, LaTeX, VS Code, Visual Studio, Qt Creator, Neovim
Libraries / APIs PyTorch, PyTorch Lightning, TorchVision, OpenCV, NumPy, Pandas, TensorBoard, Matplotlib, Pygame, PyChess, Qt, OpenMP, MPI, Java RMI, Java Sockets, JBox2D, Unity Transport, SQLite, Socket Programming, Multithreading, Serialisation, Compression

Interests

  • Signal processing
  • Machine learning
  • Timeseries modelling
  • Statistical and intelligent sensing