Being in Final Year

Something which I really enjoy about final year is the way that my degree is coming together. My dissertation uses skills from my Scripting Languages module and all of the Databases modules, as well as Human Computer Interfaces in first year, and even things I’ve picked up from projects outside of uni such as My Game Theory and Formal Methods modules only mean anything to me because of Foundations of Computer Science and Logic in Computer Science. My modules this semester: Formal Methods, Multi-Agent Systems, and Advanced Web Technologies, are all so related to one another it’s fascinating. On the first day back, I went from discovering about The Semantic Web in a Web Tech lecture immediately to it being mentioned in Multi-Agent Systems. In one MAS lecture I was confused as to why the lecturer was introducing logic symbols we had just been using as though they were a new topic, until I realised that was in Formal Methods. It’s very nice to feel that none of these are isolated topics and everything can build upon past experiences. When I was studying Game Theory I was just doing it out of interest and for fun, I didn’t think it would be relevant, and yet Nash Equilibria and optimisation techniques are actually pretty important in MAS, so I will find these applications easy to pick up and understand.



Prospects for Leaving Uni

I have been terrified of the idea of leaving education for a long time. The idea that I just have to go out into the world and find someone who wants me to work for them so that I can get money to live is scary. However, since meeting Bourban last year, I have really been looking forward to my future.

I am very proud of him for securing a place at Abertay University to study for an MProf in Games Development  and although it’s scary to move all the way up to Dundee next year, it has given me direction and a better feeling of certainty about what the future holds. I can now narrow my job search to the area in and around Dundee, and have the motivation of supporting the both of us for the year which makes me much more enthusiastic about the world of work.

Since I’ve never had an official salaried job, I never realised how much experience I have. From helping with various office and accounting tasks at my dad’s job all my life, to assisting on a website project for my brother’s company, making Bourban’s and my own wordpress sites, and various favours such as modernising , I have plenty of work experience – I just never seemed to count it as work since I was just helping people out.

I know that I will miss uni but I am also unbelievably excited to go out there into the great wide world and get on with it.



Software Engineering II

Software Engineering II really brought together a lot of real world practical skills. Now that the module is over, the idea that I won’t be able to take any more modules taught by Sebastian Coope, with his decades of industry experience and wealth of knowledge of real-world workplace issues and anecdotes, is upsetting.

Seb introduced us to many concepts from pair programming to poker planning, the details of XP and Agile Development, and project management issues, whilst giving out tips on how to ensure that we communicate realistic time and cost estimations, improving our EQF, and general good practice programming and debugging techniques from program slicing to object patterns.

This is possibly one of the most invaluable modules I have studied at University, and has really been made relevant and useful by Seb.

Introduction to Computational Game Theory

Another module in the first semester of my final year was Game Theory. To the uninitiated, this may sound like some kind of Computer Games Technologies module, not so much.

‘Games’ refer to mathematical games – the idea that decision-making can be represented mathematically in many situations. This was only an introductory course, so remained relatively simple, but was fascinating none the less. Discovering that even theoretically, as long as everyone is telling the truth, truthfulness remains the dominant (optimal) strategy, was particularly poignant.

We were taught about finding Nash Equilibria (the combination of choices under which no player wishes that they had made a different choice), about auctions of different types, and about the strategies used by search engines to auction off page positions for particular queries. We also covered potential games  as well as matching markets- finding the optimal result for all sellers and buyers in a market (those with higher valuations of a product are more likely to get it, and others will get a different product) – and finding market clearing prices – the prices at which each product would be preferred (or is indifferent for) a buyer.

Although I’m unsure whether selecting this module was the most useful for my desired future career in software development or web development, I was fascinated by the topic and priveleged to take advantage of the opportunity to be (wow, if we had a simple word like aprovechar eh?) taught by Professor Paul Spirakis, who had casually proved some unproved theorem or something over the summer before returning to teach us.

Mobile Computing

In first semester of my final year at the University of Liverpool, I studied the module Mobile Computing. The assignments for this involved learning to use the Swift programming language to program iOS apps using XCode.

The first assignment was to draw in json-encoded data on various research articles and use this data within the app. The data given included the title, authors, a link to the pdf of the article etc, and had to be separated  into the relevant variables for use within the app. The Swift programming language has some unusual features which were useful here.

Apple’s Core Data was also useful as a ‘favourites’ button could be used to select and deselect favourite articles, which would be maintained between sessions.


The second assignment used the same ideas for an Artworks app, but with the additional inclusion of images, maps, and location data. Each artwork had associated coordinates which were used to place an annotation on the map. The artworks were also ordered by distance from the user’s current location, and Apple conventions, such as requesting to use location services, were implemented.


The final coursework for this module was simply a portfolio of simple apps such as a multiplication tables app, a ‘favourite places’ map application, and a ‘To Do’ list app (using Core Data).


The content of this course was also fascinating. It covered everything from cell networks and handover types to the rise of m-commerce and the challenges in developing for mobile vs desktop systems.