Over my four years at ECS, I’ve been involved in a large number of coursework projects, of many different kinds, ranging from the basic essay to creating three dimensional worlds. Many have been enjoyable, many have been stressful, and a lot have been both at the same time. There are some projects that really stood out for me though, projects that in consequent years I wished I was doing again (and sure I will do in the future). So, after hours (seconds) of deliberation and thorough (non-existent) judgement the time has come to reveal my top three favorite projects in computer science at ECS.
Building a 3D world
This coursework project will always have a special place in my heart, having eaten up almost the entirety of my Christmas break in third year. However, this probably didn’t need to be the case – I spent probably far longer than necessary tweaking and perfecting it – but ultimately I found myself waking up every day looking forward to working on it.
Given only the “space invaders” theme (in which we were free to interpret in any way), we were asked to create a three-dimensional animating world using OpenGL which the user could explore using the mouse and keyboard. OpenGL has a very steep learning curve, but once you’ve got the hang of it and the basic features down, creating a world is nothing more than adding objects in a three-dimensional coordinates system. In other words, addictive.
Other than adding the basic landscape and objects, I decided to try out some advanced features as well. Transparency is a very interesting one, as it doesn’t always work out the way you would expect it to. By changing a few lines of code, you can also change the lighting to use cel shading, giving a kind of comic book style as shown in the picture.
D-touch was the base on which my third year project was conducted, and the basis for a summer internship at ECS as well. The software allows anyone to build and use their own tangible interface – a computer interface based in the real world. D-touch allows the user to move paper blocks around on a piece of plain paper and, using only a standard web-cam, ascertain the positions of these blocks. This can be used for any number of different applications – the two most used are the drum machine and the sequencer, which can be seen below.
My job was to try and get this working with a screen, rather than a piece of paper as a background. This made d-touch a lot more versatile, because it meant we could actually show things animating around the blocks themselves, rather than on a separate screen. You can see this in this video.
This project was not only fun in the rewarding sense, but gave me a great grounding in a lot of different areas – C++ and computer vision (allowing the computer to spot things in images) being the two main ones. It was also great to work on a real research project that is actually being used.
Although the previous two projects were very enjoyable, I think this is the one that stands out for me over the whole of my university career. This coursework asked us to create a trading agent that aimed to buy holiday packages for a set of clients, where each component of the package was sold in a different type of auction. In addition, the agent would have to compete against other agents built by other people in the year to get the best deals. The results of these mini competitions were averaged for each player over a day-long tournament and part of the coursework mark was based on your standing in the final average scores.
Doing the sensible thing given a couple of months to do this, we decided to leave everything to the last minute and try and build the agent in three days. To begin with, this was understandably stressful – my particular component of the agent was working worse than the basic example, which was definitely frustrating. However, after several cans of energy drink, cups of coffee and massively simplifying the technique (less important of course), things were starting to look up.
When it finally came to game day, we had a great start winning our first two games and landing at the top of the table – very surprising considering our last-minute changes. Things however took a downturn after that, causing us to lose a few places. In the final climactic game, a huge win took us up into third place; cheers erupted from around the labs, although probably not for us specifically.
Although this coursework was great in that it gave us free reign over the techniques we used and allowed us to do our own research, it is ultimately my favorite for the awesome atmosphere in the labs during the tournament. Can’t really beat a good competition 🙂