👋 Hello, I'm

Thomas Barber

A Computer Science Graduate

Scroll Down
Introduction

About Me

Experienced

6+ Years of Programming Experience.

Flexible

Familiar with 15 programming languages.

Reliable

Proven track record of consistent
high-performance.

Highly motivated and ambitious graduate Computer Science student at the University of Liverpool ready and eager to progress into an industry role in software development to continue learning and developing.

Contact Me
My Abilities

Education

Computer Science with Software Development

University of Liverpool

Sep 2019 - Jun 2022

First-Class Honours

Modules Included

Honours Year Computer Science Project

First-Class

Computer Systems

First-Class

Object-Oriented Programming

First-Class

Database Development

First-Class

Software Engineering I

First-Class

Software Engineering II

First-Class

Software Development Tools

First-Class

App Development

First-Class

Principles of Games Design & Implementation

First-Class

Autonomous Mobile Robotics

First-Class

Data Structures and Algorithms

First-Class

Introduction to Artificial Intelligence

First-Class

Advanced Artificial Intelligence

First-Class

BTEC Level 3 Extended Diploma in Computing

Blackpool & The Fylde College

Sep 2017 - Jun 2019

Triple Distinction Star (D*D*D*)

Modules Included

Computer Systems

Distinction

Information Systems

Distinction

Software Design & Development

Distinction

Event-driven Programming

Distinction

Procedural Programming

Distinction

Developing Computer Games

Distinction

Computer Game Engines

Distinction

Human Computer Interaction

Distinction

Computer Games Platforms & Technologies

Distinction

Controlling Systems using IT

Distinction

3D Modelling

Distinction

Client Side Customisation Of Web Pages

Distinction

Digital Graphics for Computer Games

Distinction
Portfolio

Recent Projects

All C# Java Other

Cave Game (Final Year Project)

Description

Cave Game (Final Year Project)

A 2D rogue-like game developed in the Unity game engine as the final year project. Time Management The game integrates itself with Twitch.tv, allowing the player to stream the game to an audience on the site who can then input messages into the chat and actively affect the game environment while they play. The game implements from scratch well known computer science algorithms, such as the A* search algorithm, which is used by non-playable characters within the game. A variety of playtesters were invited to playtest the game and ensure it is both functional and fun.

Demo

Arkanoid

Description

Arkanoid

A fully fledged 3D Arkanoid clone created by myself with Unity and C#, containing a main menu, levels, and failure conditions. Additional features include power ups and a high score system. Further, implemented multiple AI opponents that are capable of both rebuilding any broken bricks and blocking the player.

Demo

Crossing Roads

Description

Crossing Roads

Project undertaken during free time that utilised the ML-Agents Toolkit available within Unity to train a series of pedestrian agents to safely cross a busy simulated road environment without getting hit by vehicles.

Recognition of Handwritten Digits

Description

Recognition of Handwritten Digits

Using Python, trained two separate machine learning models, both of K-Nearest Neighbours Algorithm which were capable of recognising handwritten digits (0-9) in the MNIST dataset with an accuracy of ≈ 99% One approach used the existing K-Nearest Neighbour algorithm within the scikit-learn library, whilst the other was implemented wholly from scratch.

Arduino Reaction Time Game

Description

Arduino Reaction Time Game

Using an Arduino board, created a reaction time game that uses a range of components—an LCD display, RGB LED, and button— to test the reaction time of a player. The game ouputs a 'ready... GO!'—where 'GO!' indicates the user must press the button as fast as possible—and then measures the time taken between first displaying the message and how long it took the player to actually press it. It then displays this in the LCD display, and prompts the user to play again. Additionally, an RGB LED is added which outputs a series of colours: red when 'Ready...' is displayed; green when 'GO!' is displayed; a rainbow when the game either hasn't started, or has finished.

Source Code

Sorting Algorithms Comparison

Description

Sorting Algorithms Comparison

A C# project that compares various sorting algorithms over a range of different array sizes. Implements (at present) Bubble sort, Insertion sort, Selection sort, Cocktail sort, and Quick sort and uses performance tracking metrics like the Stopwatch class to determine the speed of each algorithm over arrays of sizes 10, 100, 1,000, 10,000, and 100,000. Unit testing is also implemented and readily viewable via the MSTest framework to ensure the algorithms are working as intended.

Source Code

HouseHelpers (Group Project)

Description

HouseHelpers (Group Project)

Led a group of six to develop a Java project aimed SCRUM, Pair-Programming, Leadership Skills at helping students meet potential housemates by acting as a form of social media and meeting new people based on common interests, akin to Discord. Agile methodologies were adhered to throughout the development process, with SCRUM sprints occurring every two weeks and development being done in groups of two, using pair-programming.

Querying International Football Statistics

Description

Querying International Football Statistics

A project performing a series of queries on a csv dataset of International Football results from 1872-2022 via Kaggle. Demonstrates a proficiency in various aspects of SQL development - SELECT statements, views, tables, importing data from files - to find data such as the win percentage of the England national team, finding their most common opponents, and the most goals scored by England in a game (home/away). Uses MySQL for the relational database management system.

Source Code

Maze Navigation Robot

Description

Maze Navigation Robot

With Webots, adapted a partially written Java robot controller to successfully navigate a robot around a maze using waypoints in order to generate a full and complete occupancy grid of the arena.

Conway's Game of Life

Description

Conway's Game of Life

A project implementing the zero-player Game of Life (by John Conway) in the Unity game engine, using C#. The project allows the user to set the grid to be wholly alive or dead, as well as randomise each cell. Further, cells can be individually clicked in with the cursor to manually change their state, and the camera can be moved using WASD or zoomed in/out using mouse wheel.

Source Code

Arduino Sensor

Description

Arduino Sensor

Created a working sensor (HC-SR04) using Arduino that reads in the current distance to an object a sensor and displays it to an LCD display in real time.

Source Code

Querying the IMDb Dataset

Description

Querying the IMDb Dataset

A project performing a series of queries on multiple tsv (tab-separated values) datasets of IMDb. Demonstrates a proficiency in various aspects of SQL development - SELECT statements, joins, views, tables, importing data from files - to find data such as the 10 highest rated movies of 2021 (with a minimum of 100,000 user votes), the frequency of each rating occurring, and the average rating per year. The latter identified a trend wherein the average movie is rated higher the older it is, whilst newer movies are rated on average a whole two points (on a ten point scale) less. Uses MySQL for the relational database management system.

Source Code

Hanzi Catalogue: A Language Learning Android App

Description

Hanzi Catalogue: A Language Learning Android App

An android project—available to download on the Google Play Store—made using Android Studio that sorts chinese characters into categories (e.g., animals, body parts, clothes, colours) and allows users to study them by providing the character, Pinyin, and relevant English meaning. A 'study mode' is available, which cycles through hiding the English translations/Pinyin pronunciations/Hanzi characters for each word and lets users tap on the items in the list to reveal the hidden answers. A shuffle mode is also available, shuffling the order of items in the list to help in the learning process.

Play Store

Creating a RESTful API

Description

Creating a RESTful API

A project made for personal development and to otherwise demonstrate general familiarity in creating RESTful APIs, using Python and the Flask framework, as well as a range of extensions (such as SQLAlchemy). The project—which uses old YouTube videos as the data—implements the standard HTTP verbs, including POST, PUT, GET, and DELETE.

JavaScript Calculator

Description

JavaScript Calculator

A calculator made using HTML, CSS, and JavaScript.

A Practice Project using WPF & XAML

Description

A Practice Project using WPF & XAML

A project made for personal development and to otherwise demonstrate general familiarity in WPF and XAML by incorporating the GUI of an imagined successor to YouTube (NewTube). The application also allows for moving between panels using the buttons (home/discover/featured).

Arduino Thermostat

Description

Arduino Thermostat

Created a working Thermostat using Arduino that reads in the room temperature using a thermistor and displays it to an LCD display in real time.

Procedural Terrain Generation using Perlin Noise

Description

Procedural Terrain Generation using Perlin Noise

Within Unity, created a simple custom mesh (of triangles and vertices) and procedurally generated the terrain using perlin noise for the height of each vertex. Additionally, a gradient of colours was implemented that colours each vertex depending on their height, resulting in terrain resembling an archipelago.

Minecraft Mesh & Terrain Generation

Description

Minecraft Mesh & Terrain Generation

A Unity project that generates a terrain similar to Minecraft, using a custom mesh and perlin noise (2D & 3D) for terrain generation. Noise configurations are fully customisable based on an applied biome (perlin scale & offset). Additionally, a range of blocks are included (e.g., grass, stone, bedrock) by allowing for different sides of a cube to map to a different part of the texture (i.e., the sides of the grass block are different top the top). A chunk system is also incorporated, using a customisable view distance to determine which chunks of the world should be visible. Finally, the mesh doesn't generate sides of each cube that arent visible to improve performance.

Testimonials

References

Anonymous [0]

References are available upon request.

Anonymous [1]

References are available upon request.

Anonymous [2]

References are available upon request.

Get In Touch

Contact Me

LinkedIn

Connect

If you would like to contact me to discuss opportunities, feel free to do so via either LinkedIn or email. Please also let me know how you found me (i.e., through this website) when doing so.