Hi, I'm Louis Tarvin

I'm a student studying computer science at the University of Warwick and I love programming!


Some things I've worked on:

NES Emulator

Creating a Nintendo Entertainment System emulator in C++

I love retro games and am fascinated by the clever tricks they use to overcome the extreme hardware limitations of early consoles. I therefore thought it would be a cool project to create an emulator for the NES, a classic 8-bit console with many great games. I had a lot of fun working on this project and learned a lot about the NES hardware. This post will discuss the different parts of the NES and how I went about implementing them.

Source Code Plagiarism Detection Algorithms

Extending the Sherlock plagiarism detector with new algorithms

For my dissertation I performed an investigation into the different algorithms used by source code plagiarism detectors. This involved extending an existing plagiarism detector called Sherlock with three additional algorithms. These were: an attribute counting algorithm, the Greedy-String-Tiling algorithm used by JPlag, and the Winnowing algorithm used by MOSS. In this post I'll briefly go over each of the algorithms and how they where implemented.

Star Strike

Play

A game made using three.js in a couple of weeks

This is a small game I made as part of my computer graphics module at university made using three.js. The objective of the game is to destroy the enemy spaceships by shooting them, while avoiding getting hit by enemy missiles. The player switches between piloting their ship in a top-down view and shooting the gun in a first-person view.

Feedback App

A university group project

Introduction

During my second year at university, as part of our software engineering module, myself and a team of four other students were tasked with designing and developing software for a client, which in our case was Deutsche Bank.

We were tasked with designing a prototype system that could be used to provide live audience feedback, including an estimate of the group mood/sentiment, during a presentation. In this post I'll talk about how we approached this task and how I lead backend development.

Draw Game

A web based multiplayer drawing game

During the lockdown period, a friend and I decided to create a fun online game together. This is a real-time multiplayer drawing game where one person is given a word to draw and everyone else has to guess what it is. First person to guess the word gets a point. The project involved creating a WebSocket server in Rust and using the React JavaScript framework for the front end.

Raytracer

A simple raytracer which runs on the GPU

This is a small learning project I did where I rewrote my CPU-based raytracer as a shader in order to learn GLSL. The end result is capable of rendering spheres and planes, with both directional and spherical lights, and reflective and refractive surfaces, all in real-time.