All of the code has been written in Java, C++, or C. Each project details the language. Up to date source code for some projects can be viewed at my GitHub account here.
If you have any problems running any of these samples, or if you have any other queries at all, please feel free to contact me at here.
Android Unit Converter
Unit Converter is an application that I developed for Android mobile phones as an excercise to gain an understanding of how the platform works, as well as to help keep my Java skills ticking over whilst I primarily program in C for my Masters degree.
It initially started out with simple conversions such as length and area, but has been expanded to include live currency conversions that pulls exchange rate information from a publicly available RSS feed. I am also expanding the application to include location support, so that it might detect what country the user is in and alter default currency selection based on their location.
By developing Unit Converter, I have been exposed to a wide variety of different areas of the Android OS, with the possibility of expanding the application further to explore more of the OS.
Simple 3D Custom Physics System with OpenGL (2011)
I have created a simple 3D physics system of spheres which allows the user to spawn new spheres, either by dropping them and letting gravity take its course, or by firing a sphere into the world with a customisable velocity.
I learnt and implemented everything that I used in the demo in under a week as a way of challenging myself to learn and implement something entirely new with a short deadline.
- Simple collision detection which can be turned on or off
- Spawn-able spheres
- Ambient and diffuse lighting
- Sphere blending effect
- Slow motion
- Full screen
- Movable camera with keyboard and mouse
- Collision sound effects
- Switchable textures for the floor and spheres
- MipMapped filtering
- No filtering
- Linear filtering
Parallel Graph Searching Library (GPU) (2009-10)
CUDA Graph Searching Library is my undergraduate dissertation.
To run this project, your computer must have a CUDA enabled graphics card to run.
Using CUDA to write these algorithms allowed me to create parallel versions of the algorithms for CUDA GPUs with the aim of decreasing their running times when compared to their sequential equivalent.
The Graph Library consists of a graph creator and reader. These allow you to specify how many vertices you want on the graph as well as the maximum number of edges per vertex you wish to assign. The resulting graph is saved as a text file. The graph reader can then read one of these graph files for use by the graph searching algorithms.
The algorithms implemented on both GPU and CPU are:
- Breadth First Search
- Depth First Search
- Prim’s Minimal Spanning Tree Algorithm
- Kruskal’s Minimal Spanning Tree Algorithm
- Dijskstra’s Shortest Path Algorithm
You can view the paper I wrote for the project here.
RMI Mini-Library (2009)
The RMI Mini-Library is a distributed system implementing Java’s RMI (Remote Method Invocation) technology which was developed as a university project. I have not as yet compiled the application into appropriate Jar files. As such, the download includes comprehensive instructions as to how to run the application using the popular IDE, Eclipse.
The system allows a user to hire books from a library as well as create books in the library’s catalogue and general user maintenance.
Merry Go Round (2008)
Merry Go Round is a simple visualisation of a fairground merry go round ride and was designed to show understanding in the underlying concepts of 3D graphics, rather than create a graphical showcase.
Instructions are included in the download.
Networked Pac-Man (2008)
Networked Pac-Man is a simple multiplayer game that allows you to play with other gamers over the internet or locally. It consists of a client application that the user runs, and a server application that the client connects to.
It was developed to show understand of networking protocols, rather than creating a fully fledged game.
Networked Pac-Man was created in Java and as such needs Java Runtime Environment to play.
Instructions are included in the download.
Travelling Salesman (2008)
Travelling Salesman consists of three algorithms that solve the travelling salesman problem when given a graph as input from a text file. The three algorithms are A*, Hill Climbing and Greedy Best First. Once complete, the project outputs a text file which contains the solution that it has found.
This project also includes an Abstract Data Type (ADT) that I created that represents a graph. A vertex is represented in the class “Vertex” and an edge is represented in the “Edge” class which consists of two vertices.
Travelling Salesman was created in Java and as such needs Java Runtime Environment to run.
Instructions on how to use the project are included in the download.