Computer Science


I've been passionate about Computer Science and Programming since I first learned about them. I've always loved Science, and I especially enjoy building solutions and solving problems, so I was instantly a fan of programming. I love how Computer Science unifies so many topics in Maths, Biology, Psychology and Engineering

Within Comp Sci one of my main interests is Cybersecurity. I am the President of Sheffield Ethical Student Hackers society, where I help to create high quality learning resources; I also regularly practice my skills on online learning platforms and CTFs

I love to program in a variety of languages - you can view some of my favourite projects here, and view all of my public projects on my GitHub

Scroll down to find out more about my degree, my Year in Industry, and my specific interests, skills, and favourite technologies

My Degree

I'm currently studying MComp Computer Science at the University of Sheffield, with an Industry Year Placement. I will be graduating in 2023

My Year in Industry is in a Cybersecurity role in the public sector. The work is very varied and has a great mix of development and research, and I have produced innovative solutions that have solved complex problems and improved productivity for teams. Read more here

The topics covered in my degree include:

  • Software Engineering; we have had two modules, focusing on Ruby and RoR and learning to interact with real-world clients and elicit requirements
  • Java Programming; learning efficient design patterns in large software projects, and the complexities of the Object Oriented Programming paradigm
  • Algorithm Design & Complexity; covered complexity classes of basic algorithms in first year; covered various Automata and Formal Languages, and the details of more complex algorithms (from Graph Theory to Optimisation problems) in second year
  • Artificial Intelligence & Big Data; covered the fundamentals of Artifical Intelligence, including 'GOFAI' and search trees, in first year; covered big data powered classification methods using PCA in second year. Practical implementations included Java Search and Python Classifiers with Numpy
  • Web Technology; learned the basics of modern web design, and put these skills to the test with frameworks such as Ruby on Rails
  • Robotics; we covered various aspects of Robotics, from programming simple robots using Java in first year, to using ROS and WeBots in second year to implement a pathfinding robot; we also covered various aspects of bioinspired robotics
  • Functional Programmming; we learned the basics of Haskell and reproduced a working Enigma Machine and Bombe; I was extremely proud to achieve 99% overall in this module
  • Formal Logic; we had a very enjoyable module on formal logic, exploring Propositional and Predicate Logic, SAT Search, and the basics of Model Checking. I loved this module, and I am keen to see how I can apply it to my interests in other areas, especially in research such as information flow modelling
  • Devices & Networks; in first year we covered the basics of computer networking and low level hardware, including some Assembly Programming
  • Throughout the degree we have covered lots of relevant mathematics, including Linear Algebra, Set Theory, Combinatorics, Number Theory, and the maths behind Cryptographic Algorithms such as RSA

My academic interests include Cybersecurity research (such as Cryptography and Advanced Systems); Formal Logic and Verification (for example in Critical Systems); Artificial Intelligence and Agent-Based Modelling (for example, how AI and big data can be applied to cyber threat modelling and child protection). I also have an interest in efficient Algorithm Design, and love reading about elegant solutions to problems (like the Project Euler Problems)

A laptop on a table, displaying a website called 'Cookie Crumbs'

Demoing our 'Cookie Crumbs' project at HackSheffield 5 in 2019

A computer screen with some Python code

Developing the code for my custom Repeater in Python

Tools & Technologies

I am comfortable using the following tools, techniques, and programming paradigms

  • Object-Oriented Programming with Java, especially Model-View-Controller and Model-Delegate patterns, and some experience with C#
  • Functional Programming with Haskell, and applying this to formal logic and mathematical problems
  • Extensive experience with Python programming, on both small and large scale projects; skills include Multiprocessing, Automated Website Interaction and Scraping with Beautiful Soup, and Numpy for data processing
  • Experience with web-based languages such as HTML5, CSS, Javascript, and PHP; use of these languages in a web development context, and when assessing and exploiting web vulnerabilities
  • Experience with modern Model-View-Controller Web Frameworks, such as Ruby on Rails, Laravel, and Django; confident use of templating languages such as Jekyll
  • Confident use of both Windows and Unix-based development; comfortable with Command Line Interfaces, remote interaction with machines, and virtualisation technology
  • Extensive use of Amazon Web Services, with projects built and hosted in AWS from scratch; skills include web hosting in EC2 and S3, storage solutions within RDS and S3, configuring secure networks with VPC, and automatic deployment of secure infrastructure with CloudFormation. I would be confident to quickly and securely deploy a solution in the Cloud using AWS, and have gained my AWS Certified Cloud Practitioner certification
  • Confident use of several Cybersecurity tools, especially for web application testing and Linux enumeration; comfortable use of Kali Linux, and able to build custom scripts for automating exploits
  • As part of my work as an IT Support Administrator at NCC Group I gained experience with basic hardware maintenance and a multitude of IT management tools including HEAT, Active Directory, and IPAM
  • Use of project and code management tools such as Git, Issues, and Kanban Boards; confident with project management and administration, and I enjoy a good spreadsheet (which I know is boring, but the rest of these techs have been fairly cool)

Interests

I am extremely interested in Cybersecurity and spend a large amount of time practising my skills on online platforms such as Hack the Box. I also enjoy passing on my skills as President of the Sheffield Ethical Student Hackers Society (SESH), where I present lectures and demos on Cybersecurity topics and help to build tools and CTFs for educational purposes

I have a love of automation within Computer Science, and I'm always looking to improve productivity. I enjoy creating bash scripts and simple aliases to make my work faster, and creating scripts to easily replicate complex steps during Cybersecurity practice such as Hack the Box

I enjoy web development, and have had experience with both front end and back end development. I enjoy making 'modular' websites using templating languages such as Jekyll, and have built several websites from scratch as part of my Year in Industry and personal projects, sometimes with a quick turnaround time. I have also had the opportunity to assess my own websites for cybersecurity vulnerabilities, and enjoy testing my projects

I am interested in helping others learn Computer Science; I have found helping with SESH extremely rewarding, and even had a chance to help upskill members of my team during my Year in Industry by delivering technical training on Computer Networking

I love polishing off and delivering a project; I have been lucky enough to present proof of concepts to international partners, and enjoy producing thorough and succinct technical documentation that can be understood by less technical colleagues

I have a strong creative streak, and I love making things other people can use and enjoy - whether this is a website, a game, a tool, or an educational package. In my work I have developed good interpersonal skills and the ability to discuss software requirements with both technical and non-technical staff and clients, which has been invaluable. Most of all, I love the problem solving opportunities Computer Science presents

Here you can find links to several of my favourite programming projects

CTF Tools

A constant WIP, this repository is a collection of tools such as Password Crackers and Repeaters

Cybersecurity Notes

My collection of Cybersecurity writeups, cheatsheets, and more. Built in Obsidian

Personal Site

The source code for the site itself!

SESH Website

The site for Sheffield Ethical Student Hackers, built by our committee using Jekyll and hosted on GitHub pages

Writeup Converter

A tool for exporting folders of Obsidian notes and their attachments, and formatting these files for displaying on a website

Year in Industry Placement

I was extremely fortunate to be on a Year in Industry placement from July 2020 - August 2021

This placement was in the public sector, working on a Cybersecurity focused innovation team. I worked closely with technical and non-technical partners within my organisation, and produced solutions for regional teams as well as presented proof of concepts internationally

We were given the opportunity to drive our own projects and self-manage within our teams. I worked with other interns on large scale team projects, building complex Web Scraping systems from the ground up, and experienced agile methodologies and project planning

My work focused on innovating within our sector and examining Cybersecurity trends. I produced solutions involving Web Scraping, Secure Networking and Infrastructure development, and productivity tools. I deployed multiple web applications in several languages and frameworks to suit the needs of the project, and interacted with cloud storage solutions including RDS and S3

We regularly worked within AWS, and I gained invaluable experience deploying projects in the cloud and managing infrastructure. Outside of programming, one of my largest projects was to configure and deploy secure infrastructure to be used by all members of the team, using AWS CloudFormation. This taught me a lot about Networking and the benefits of automation

I also had the opportunity to learn a lot about the public sector, teamwork, and project management. I even presented technical training packages to my colleagues, helping to upskill them in Computer Networking; this experience was a fantastic test of my knowledge, presentation skills, and ability to communicate effectively with staff from a wide range of backgrounds