A group project written in Java to develop a compiler with the use of ANTLR, compiling an imperative language called WACC to ARM Assembly. Personally responsible for building the Abstract Syntax Tree data type, architecting code generation, and making the language object oriented by introducing classes.
The Round Pegs and Square Holes of Big Data
Winner of 2 awards: 'One of the most outstanding group projects' and 'One of the most outstanding presentations'. A first year topics project involving researching an area and producing a website based on the research. This project was supervised by Dr William Culhane. We researched common flaws in decision trees and extensions to improve their perfomance. I was responsible for leading the project, investigating and producing documentation on performance measuring and random forests, and using Python to implement some of the models we had researched. This included developing a simple ML handwriting recognition model. Our website is available below.
Ex_Machidog Reinforcement Learning Project
An ML research project written in Python that simulates a sheepdog using reinforcement learning in order to learn how to herd sheep into a pen. My paper on this is available below.
Haskell ML Handwriting Recognition From Scratch
An ongoing project designed to replicate the handwriting recognition program written using Scikit in 'The Round Pegs and Square Holes of Big Data', but this time from scratch, and only in Haskell. This includes developing an ML Decision Tree classifier library that uses the ID3 algorithm, and utilising this library.
ARM11 Assembler and Emulator in C
In order to develop my skills in the C programming language, our first year 3rd term group project was to build an assembler and an emulator in C. This not only got us very familiar with using pointers and assigning to the heap in C, but personally it further developed my teamworking skills. We used AGILE project management methodology and found Trello very useful for managing our time. We put a lot of time and effort into the initial software design of these programs and were very pleased with the outcome. As this project is an ongoing project for first years, I am not allowed to share our code. You can download our README however which explains a bit about how they work.