Profile
Dedicated and enthusiastic computer science student ready to tackle challenges in a fast-moving IT industry. Utilising technical knowledge, communication, and problem-solving skills to ensure projects are completed efficiently and to great satisfaction.
Experience
Liberty IT
Intern Software Engineer (Jul 2024 - Jul 2025)
Created a webpage to display a list of correspondences sent as part of a claim, reducing chances of a letter being inadvertantly sent twice. Reduced time to push a release from 1-2 days to half a day through automation using GitHub Actions. Reduced the runtime of a regular batch job by 98% and decreasing its memory usage by 99%, preventing it from timing out. Created a dashboard to monitor usage metrics to improve observability.
Education
Queen's University Belfast
MEng, Computer Science Incl. Placement (Sep 2022 - Jul 2027)
Created a group project web-based text-adventure sci-fi game in HTML, CSS, and JavaScript; players were confused as to their in-game location and why the game ended, so I lead the creation of a minimap and game over screen, which greatly reduced confusion. Developed a media player to store and play media files from, and book metadata storage application to store book information in Java. Created and maintained relational databases through SQL queries using MySQL.
Modules
(Stage 1): Programming (92%), Introduction to Computer Architecture (85%), Fundamentals of Maths for Computing (84%), Databases (82%), Web Technologies (81%), Introduction to Cyber Security (79%).
(Stage 2): Data Structures and Algorithms (94%), Professional and Transferrable Skills (83%), Theory of Computation (75%), Introduction to Artificial Intelligence (70%), Software Engineering and Systems Development (68%).
Shimna Integrated College
(Sep 2013 - Jul 2020)
Developed a customisable quiz application, and dog-training booking application in C# and Microsoft SQL Server.
A-Levels
Software Systems Development (A*), Digital Technology (A), Irish (B).
GCSEs
ICT (A), Irish (A), Double Award Science (AB), Moving Image Arts (B), Mathematics (B), English Language (B), History (C).
Projects
Webserver
I wrote a webserver in Rust to learn the language. It's actually the webserver that served you this page! The webserver for this page is running on a Raspberry Pi, and is compatible with both Windows and Linux.
Writing a webserver allowed me to learn lots about Rust, HTTP, URLs, domain names, DNS, and practice HTML and CSS. I wrote a build script to cross-compile the code for an ARM processor running Linux, and then deploy it to the Raspberry Pi.
There is still a lot of work to do on the webserver - it can respond to HTTP GET and HEAD requests and dynamically serve files such as this page, but it doesn't yet support HTTPS and only has support for HTTP 1.1 but not HTTP 2 or 3.
Github repositoryBoard Game
Myself and six others created a Monopoly-esque digital board game themed around sustainability. The goal of the game is to provide a clean-drinking solution to a remote village in Cambodia.
Players take it in turns to roll a die and move around the board. After landing on a square, they have the option of taking ownership of that square, which represents a task. Tasks cost a certain amount of resources (money, people and time) to take ownership of. As the game is co-operative, players can transfer ownership of tasks to each other to spread the work amongst themselves appropriately.
Once they have taken ownership of all tasks in a group, representing an objective, they can contribute towards the completion of any square in the group by spending resources. Once all squares in a group are completed, the objective is completed. Some objectives require other objectives to be completed first.
Once all objectives are complete, the game is won. However, should any player run out of resources during the game, the game is lost. At the end of the game, players are presented with statistics about their playthrough.
The game was written in Java, utilising Java Swing for the GUI and JUnit for testing. I wrote 80% of the source code for the game, spending 40 hours on the backend and 60 hours on the frontend.
Text Adventure Game
Myself and three others created a text-based adventure game set on a space station. Pirates have attacked the space station, and the player must navigate throughout the station to defeat the pirates, defuse the bomb, and save any survivors.
The game features a main menu, settings menu, character creation screen, the game itself, and a game over screen. The game is written in HTML, CSS and Javascript.
The player is presented with a list of choices that they can make, such as moving to another room or interacting with something. A minimap shows the player where they are and where they can go. A countdown timer shows how long is left until the bomb explodes. An inventory panel shows what items the player posseses and their status.
Progress is saved as the game is played, so the game can be resumed at a later time. When the game ends, the player is presented with a game over screen showing the outcome of the game and some statistics.
Play it hereChat App
To become more familiar with network programming, I created a basic chat app in C#. The app is comprised of two parts - the client and server. You can create a server, and anybody can connect to it using the client. Once connected, users can exchange messages with other users on the server.
Commands, such as /help, /kick and /admin can be used to get a list of commands (or help on a specific command), kick other users or make them administrators, respectively.
I created a transfer protocol to exchange data between the client and server, where the first few bytes of a message are composed of an ID, message type and message length. When a client connects to the server, the server and client perform a handshake with each other to establish a connection and exchange information about each other.
The client regularly sends a heartbeat message to the server, which responds in kind, to ensure that the connection is still alive. If no heartbeat is received from the other for a few seconds, the client and server assume that the connection has been lost and disconnect.
An acknowledgement is sent when messages are received, which, along with the message ID, ensures that messages are processed in-order. If the connection is lost, a queue of messages which have not been acknowledged is kept, which is used to resend messages which may not have been received, when the connection is re-established. A separate re-connection handshake is used when the connection is being re-established.
The client and server each have their own semantic version number, which are sent as part of the connection handshake. The client and server both have a minimum and maximum supported version number for each other, and if their version numbers are incompatible, they won't connect to each other.
The server and client are multi-threaded and asynchronous. One thread handles the GUI, and the other handles network IO, to ensure that long-running IO doesn't freeze the GUI. Each connection and network IO operation is then handled asychronously.
Github repositoryDog Training Booking App
I created a dog booking application in C#. It allows users to book their dogs into classes, which are based on a programme template. Each class can have several sessions. Each owner can have several dogs, each booked into their own classes.
The app uses Microsoft SQL Server to store data in a relational database. A custom data access layer (DAL) creates and executes SQL queries to interact with the database. Related tables can be viewed side-by-side (e.g, dogs and their owners), with an option to toggle visibility of related tables, and users can select whether they want to display all records, only records linked to the selected record, or records linked to any record in the opposite table. A quick search function can be used to search for records.
Once a dog has completed their training, a certificate of completion can be generated for them. The certificate has the dogs name and the name of the class that they completed, and can be either saved as an image file or printed.
Github repositoryQuiz App
The first software project that I worked on was a customisable quiz application in C#. Users can register and sign-in as either a teacher or a student.
Teachers can create quizzes and add different questions to them, such as single-choice, multiple-choice, or drag-and-drop. Students can take quizzes, where they will get immediate feedback after each question, as well as their total score and percentage at the end of the quiz.
A leaderboard allows teachers to see the scores of all students who have taken a quiz, and sort them by score or date.
Github repositoryLast updated: 10:08PM 16/09/2025