About Me
I am a recent Computer Science graduate, currently looking for a Software Engineering graduate role in London. As part of my degree, I spent a year working at PQShield, an Oxford-based start-up specialising in post-quantum cryptography. I believe this industry experience, along with my consistently strong academic performance, will enable me to be successful in any technical role.
Technical Skills
Languages and Build Systems
- C - Used professionally with the CMake build system on commercial projects
- Python - Including for data processing, AI and machine learning projects
- Java - Experience with OOP and data structures
- C++ - Modified a ray tracer code template to create complex images
- C# - Developed a 3/4 view stealth game in Unity
- Dart - Currently learning mobile app development via Udemy
- HTML, CSS - Used in building this portfolio website
- Haskell - Experience in functional programming coursework
- SQL - Knowledge of declarative query languages
Software Engineering Skills
- Version Control - Proficient with Git, including complex rebase commands, and GitHub
- Development Environments - Competent using Linux command line
- Methodologies - Experience in Agile/Scrum and Kanban, with Jira to monitor progress and keep on track with large commercial projects.
- CI/CD - Used GitLab pipelines for automated builds and verification
- Docker - Built and ran complex products with multiple Dockerfiles
- Static Analysis in C - Used tools to ensure code developed was CERT-C and Clang compliant
Libraries and Frameworks
- NumPy - For data manipulation and analysis
- PyTorch - Used for training deep reinforcement learning agents
- NLTK - Used for natural language processing, extracting tokens out of large datasets
- OpenAI Gym - Library that provides reinforcement learning environments
- Unity - Developed a 2D stealth game using C# and pixel art animations
- Flutter - Learning app development through a Udemy course
Other Technical Skills
- IDEs - Competent using VSCode, Visual Studio, and experience with Android Studio and Eclipse
- Operating Systems - Competent across Windows, macOS, and Linux (Ubuntu)
- Technical Documentation - Used Latex typesetting for formal reports
- Virtualisation - Experience using virtual machines
- Productivity Tools - Microsoft Office and Google Workspace
- Project Management - Familiar with Jira and Confluence
- Computer Construction - Built my own desktop for productivity and gaming
Projects
Explainable Reinforcement Learning Dissertation - Python
- Implemented two state-of-the-art explainable reinforcement learning methods from scratch on an autonomous driving environment.
- Assessed the effectiveness of each method at generating clear and meaningful explanations of the autonomous driving agent.
- Compared the two methods against each other and explored why their results may have differed.
PQNoise - C
- For PQShield, I co-wrote a C library for a post quantum secure communication protocol, called PQNoise.
- Used a static analysis tool to comply with CERT-C standards throughout development.
Cryptopals - C
- Completed the first 16 challenges of Cryptopals using C.
Raytracer - C++
- Took a basic raytracer in C++ and added support for complex objects and interactions such as reflection, refraction, and photon mapping.
Atari Breakout Reinforcement Learning Agent - Python
- Implemented a DQN reinforcement learning agent to play the Atari breakout game to a super human level in python.
Personal Website - HTML and CSS
- Designed and implemented this website from scratch with no template, using HTML and CSS.
IMDb Movie Review Classifier - Python
- Used natural language processing techniques to extract features from movie reviews to classify them as positive or negative.