Imagine Cup World Finals 2014

Imagine Cup 2014 - All Competitors Photo at the Space Needle

I’ve been very lucky this year because I’ve had a rather busy Summer Break. Rather than sitting around being bored I was fortunate enough to be in an Imagine Cup world finalist team, and then spend a month road-tripping around the United States with my friend Rob. The only downside has been that I’ve been unable to blog about it all! So I’ll try to catch up on it now.

This years Imagine Cup World Finals were held in the wonderful city of Seattle, Washington, just a few short miles from Microsofts headquaters in Redmond, Washington.

I arrived in Seattle and met with the rest of the UK team, with whom I had only ever spoken to online. Our team was called Vanguard and we developed a product called Ripple, a Windows Phone application which allows you to contact people close to you — simply put, a location-based social network. I had developed both the consumer-facing front-end application and the back-end web services.

The Imagine Cup UK Team, from left to right - Mikky, Femi, Danny (me!), Guilliame, our MS representative Rebecca, and our mentor Callum

The Imagine Cup UK Team, from left to right – Mikky, Femi, Danny (me!), Guilliame, our MS representative Rebecca, and our mentor Callum

Microsoft had clearly already shown an interest in the product by making it the winner of the UK heat and promoting it to the World Finals, our job for the first few days of our trip in seattle was to make a splash on the world stage by presenting a complete business-and-technological pitch as well as provide live hands-on demonstrations to both the judges and the public.

The first two days of being in Seattle were manic, sub-five-hour-sleeping days, packed full of pitch writing, code changes and endless pitch practices.

On the third day we presented our application to the world finals judges for the first time, and for any team — let alone one that had only met face-to-face 48 hours prior — I felt we did pretty well. The team laid out the problem cases that the application resolved, a monitization strategy, and some figures on the potential market size. I presented an outline of how our system worked, some of the unique features and algorithms, and a live demonstration.

Later on the third day we had a showcase at the Microsoft Redmond campus for people on-site to try out our applications and provide feedback. The first thing I must say is how beautiful Microsoft’s campus is — it’s really green, with lots of trees and plants, and very inviting. Its definately somewhere I could see myself in the future.

The Blue Angels fly over Microsoft HQ in Redmond

The Blue Angels fly over Microsoft HQ in Redmond

The Imagine Cup took place on the same week as Seafair, a festival of boat racing, air shows and fireworks in seattle. Here you can see the Blue Angels (the american equvilent of the Red Arrows) practicing over MS HQ.

Erik Martin's Selfie using Ripple

Erik Martin’s Selfie using Ripple

A particularly proud moment at this showcase was when Reddit’s General Manager — and one of TIME’s top 100 most influencial people in 2012 — Erik Martin took a selfie using the application I had built.

Day four rolled around quickly, after a night of fixes and changes based on the feedback of people at the Microsoft showcase — which was the first time the application had been used extensively in public. Day four was all about showcases, but the first one was to the judges so we pulled out all the stops. The judges were really useful and gave a lot of feedback about the application, business ideas and development practices. Later in the day we were fortunate enough to be invited to meet Steven Guggenheimer, the man in charge of developer experience at Microsoft. The one thing that stands out to me from day 4 of the event was how surprised both the judges and Steven was at how much we had managed to accomplish in just under 2 weeks of development time, with only one developer. Many of the other applicants had been writing their applications for years.

Day four signalled the end of the competition matters for us, we just had a while to relax and wait for the results. In this time we kayaked (and fell into…) Lake Washington and had a few beers with both the locals and our fellow competitors. It really was great fun to meet people from all around the world who are as passionate about development and technology. We also had time to look round the Microsoft Employee store and catch the fireworks at Seafair.

 I found these T-shirts way funnier than I should have done

The results of the competition were accounced at the Washington Convention Centre in front of several thousand microsoft staff. Myself and the UK team were the first people in so we got to sit in the front row with Satya Nadella (Microsoft CEO), Alexey Pajitnov (Inventor of Tetris), Erik Martin (GM, Reddit) and Hadi Partovi (Code.org, Co-founder) which was really cool.

Unfortunately we didn’t win, but I think everyone in the team can be proud of how much we did in such a short space of time, and with the limited resources at our disposal. I’m thinking of probably entering again next year with a team of my own, and I would encourage everyone else to do the same.

I’d like to thank Microsoft for the amazing oppertunity, both to be in the competition and to visit the beautiful city of Seattle — below you can see some pictures of the UK team exploring the city in the 2 days we had before our flight back to the UK :)

Danny

America Roadtrip Summer 2014

Road tripping in LA

I was going to write a blog post about my month travelling around Arizona, Nevada and California with my friend and fellow computer scientist Rob Crocombe, but frankly I don’t think I could improve on what he’s already written. So, if you want to read about all the exciting places I went this summer including:

  • The Grand Canyon
  • Las Vegas
  • Santa Monica Pier
  • Griffiths observatory
  • Disneyland Anaheim
  • The Pacific Highway
  • The Golden Gate Bridge
  • Silicon Valley
  • Alcatraz

and much more, then make sure you click across to Robs blog posts and pictures:

Blog and Pictures of Arizona

Blog and Pictures of Las Vegas

Blog and Pictures of Los Angeles and Southern California

Blog and Pictures of San Francisco

Thanks to rob for such great work on the blog and images, and of course for coming along and having a great time in the USA.
Danny

MSc Advanced Computer Science Module Choices

ACS Module Choices

Yesterday I chose which modules I wanted to take throughout my time here at The University of York whilst studying for my MSc in Advanced Computer Science.

Our course consists of 80 credits of taught content over two terms, delivered in 8 modules worth 10 credits each, and 100 credits worth of research project (known as the Project for Advanced Computer Science or PACS for short) over the summer term and the long vacation.

At York modules are taught in blocks of four weeks, each term consisting of two four-week blocks and a ‘free’ week between them. Assessments are taken at the end of each four week block.

Term 1 (October – December)

Block 1

Evolutionary Computation (EVCO)

This module covers genetic algorithms, genetic programming, evolutionary strategies, and co-evolutionary frameworks, in other words any computer algorithms or systems that are inspired by natural evolutionary systems.

Model-Driven Engineering (MODE)

MODE will introduce the theory, principles and practices of model-driven engineering.

 

Block 2

Concurrent & Real-Time Programming (CRTP)

The CRTP module will have us using the Real-Time Specification for Java to develop real-time embedded systems.

Constraint Programming (COPR)

Constraint Programming tackles problems such as timetabling, scheduling, allocation, planning, configuration, layout and routing — such problems are known as finite-domain constraint satisfaction problems (FD-CSPs) and require a different approach to other problems due to the large search spaces they can create.

We will use a language called MiniZinc to meta-program a set of constraints for problems to be solved.

Quantum Computation (QUCO)

QC provides an introduction to the cutting-edge world of Quantum Computation and will explain the promises and limitations of its usage as well as some of the algorithms expected to gain performance or indeed only be possible on quantum computers.

 

Term 2 (January – March)

Block 3

Quantum Information Processing (QIPR)

Quantum information processing takes off where the quantum computing module finishes and introduces the theories of quantum communication (which could guarantee against snooping), provides more information about the qubit, and explains the weird effect of quantum teleportation.

 

Block 4

Adaptive and Learning Agents (ALAS)

ALAS is and artificial intelligence module which covers both machine learning and intelligent agents.

Static Analysis and Verification (SAVE)

This module covers the use of state-of-the-art techniques for verification of object-oriented programs. As with all of the modules taught at York this is in Java.

 

I’m really looking forward to studying all of the modules listed, particularly Evolutionary Computation, Concurrent & Real-Time Programming and both Quantum modules. The block 1 modules start on Monday 6th October, just 4 days time. I can’t wait. :)

Danny

Starting at York

York Student Card

Five days ago I arrived at The University of York, prepared to start my life as a postgraduate — studying an MSc in Advanced Computer Science. It feels like it was only yesterday I was writing a similar blog post about starting my BSc at The University of Hull.

During my first week I’ve basically been settling in, meeting new people and fixing up odds-and-ends, such as joining the gym. I’ve also been on a few nights out with my fellow postgraudates, and everyone seems pretty friendly and good fun :). York has a Graduate Students’ Association, which is like a seperate student union for postgrads, and so far their events have really helped me to meet new people.

Tomorrow all postgraduates will be officially welcomed by the Vice Chancellor to the university in a ceremony in the university’s central hall.

Saturday is the official start of freshers week, when the undergraduate students will join us on heslington east — which I’m looking forward to because it’s a bit of a ghost town here at the moment.

On Monday I’ll have my first official contact with the Department of Computer Science itself, with registration, a welcome lecture and an introduction to the labs.

I can only hope I am lucky enough to have as great a time here as I did in my undergraduate degree at Hull :)

I will of course keep the blog up-to-date on my time at York.
Danny

Graduating and Being Awarded the Departmental Prize

Walking past the chancellor as part of the graduation ceremony

On the 14th of July 2014 my degree was officially conferred to me at a graduation ceremony at Hull City Hall.

The day started off with a lunch inside the computer science department at the university, which was a nice opportunity for my parents and siblings to see the labs in which I’ve done a lot of my work over the past three years.

Whilst we were at the lunch I was called up in front of the other students, and their families, to receive the departmental award. The award means that my name will be shown on a golden plaque inside the social area of the department and I will receive £100 from the university. It will be quite cool to have a plaque inside the department, especially as I recognize a lot of the names on the board already as being our current lecturers — my name will be in good company. I received the award for having the highest overall grade of a graduating student — at 86.05%.

 

 

After lunch my family and I made made our way to the Guildhall in Hull City Centre where I picked up my cap and gown.

 

 

We then made our way to the City Hall where the actual graduation took place. Rob Miles, one of my lecturers from the first two years of my degree, explained how the process of graduating worked. We simply had to walk across a stage after our names had been called and nod at the Chancellor of the University. Behind us were some of the lecturers from Computer Science, Maths & Physics and The Hull York Medical School — all of the departments who had people graduating that day.

 

 

Once the graduation had taken place inside we went outside for the traditional slate throwing with the town crier. He was rather funny.

Preparing for Cap Throwing Outside

Preparing for Cap Throwing Outside

Once all of the pomp and ceremony was over my family and I went for dinner and then the drinks started flowing with my brother and university friends out in a few pubs in old town, and then the Piper Club on Newland Avenue.

My degree certificate, and shield, on my living room wall.

My degree certificate, and shield, on my living room wall.

The day after my graduation was my birthday, so its been a truly brilliant few days. Thanks to everyone involved, you know who you are!
Danny

Year 3 Semester 2 Results

Year 3 Semester 2 Results

Today I received my final set of grades for my BSc (Hons) in Computer Science from the University of Hull – This included my two second semester modules, Mobile Devices and Application and Distributed Systems Programming, as well as my Final Year Project.

I achieved a grade of 85% in Mobile Devices and Applications, and 89% in Distributed Systems Programming.

The final year project was worth twice as many credits as each second semester, and so had more of an effect on the final grade. Thankfully I did quite well in the final year project, achieving a grade of 86%.

My overall weighted average for this year, including my first semester modules grades, is 86.5%.

This grade, weighted with my second year grades, means that my final grade for my degree as a whole is 86% – a very high first! I am of course over the moon with this.

I’d like to again say thank you to everyone who has made my time at university not only great for learning, but truly the best three years of my life (so far! :P). Particularly, but not limited to:

  • Rob Crocombe
  • Simon Watkins
  • Hayley Hatton
  • Russell Billingsley
  • Toby Russell
  • Jon Rich
  • Tom “Jeff” Procter
  • Special mention to “our American foreign exchange students”

 

  • Dr Martin Walker
  • Eur Ing Brian Tompsett
  • Rob Miles
  • Dr David Parker
  • Dr Peter Robinson

And of course anyone I spent time with in the labs or any of the many, many nights out in the first two years. Last but by no stretch of the imagination least thanks to my Mum, Dad, Brother and Sister for supporting me throughout the last 3 years.

I’m looking forward to trying to maintain this good score next year at York! Of course I will continue to do this blog throughout my time there too.

Danny

Mobile Devices and Applications Coursework Result – 100%

On Monday 12th May our Mobile Devices and Applications coursework was due in at 9am and I had to demonstrate mine at 1:30pm, which was a very quick turn-around! At the demonstration I received my grade of 100%, which I was of course very happy with.

The coursework this year was to develop an Android Application called AMULET –  “An m-health (mobile health) tool for the valid self-assessment of alcohol-induced impairment” for a real-world research project in the University of Hull’s Social Sciences Department. In this post I will briefly outline the functions of the application.

User Management

 

All users of the service had to sign up to use the AMULET service, which keeps track of all their data. They could do this inside the application itself, and information could be synced with however many devices they decide to use. The interaction with the AMULET web service is via a RESTful JSON API. The user could also manage their account from within the application including deleting it and changing its password.

The Tasks

 

The main point of the application was for users to be able to self-test various attributes and skills whilst sober, as a calibration, and then compare this score with their current score at the time of intoxication. Users were asked to input details of their current drinking session before taking a test, and shown results afterward.

The Inspection Task measures the users speed of information intake. It does this by showing the user 8 sheep and changing one of them to be a wolf for a small period of time — 100ms — the wolf then changes back to being a sheep and the user has to select the correct sheep. If the user selects the correct sheep then they complete the same task again, this time with less time — it goes down in 10ms increments. When they eventually fail this is their recorded score. A sober person should manage a time around 60ms.

The Sequence Task measures the users ability to locate information. It does this by asking them to tap every number, in order, from highest to lowest. The users score is the number of seconds it takes for the user to complete the task.

Finally, the Pilot Task measures the users ability to split their attention between multiple objects. In this task the user has to drag around the white square and keep it away from the red enemy squares. The recorded score is the amount of time in seconds the user avoids the enemies.

In my implementation each task had 3 different difficulty settings; easy, medium and hard.

In the inspection task on easy mode the sheep would change to a wolf (which was both a different shape and colour), on medium mode the sheep would change to a purple sheep, (which was the same shape but a different colour) and on hard mode the sheep colour would change only slightly.

In the sequence task easy mode makes the user count to 9, medium mode makes the user count to 16 and hard mode makes the user count to 28.

In the pilot task the enemies move faster at the higher difficulty settings, and believe me it gets rather tough. Different calibration scores and results are stored for each setting, meaning users can’t calibrate on hard and then compare that score to an easy result when drunk — because that would be cheating!

 

Before each task the user was shown the task brief, which allowed them to access instructions for the particular task they were about to start. At the end they were shown the task finished screen, which compared their results to a calibration or prompted them to make one. At any time the user could go to the home screen and tap “task history” to see their results from the past.

Drink Diary & Unit Calculator

 

As well as keeping track of the users abilities at times of sobriety and intoxication the application also kept track of the users drinking habits through a “drink diary”. This diary allowed users to enter information about a particular brand of drink including the brand name, alcoholic % and portion size, and then store how many they had drank along with a timestamp.

A unit calculator was also included for the users convince. The user could input the number of drinks they had consumed, the class of drink (e.g. Red Wine, White Wine, Average Strength Beer), and the portion size and be given a reasonable estimate of the number of units consumed. This functionality was also called when the user input drinks for the drink diary, to make data entry easier.

RESTful Server Interaction

One of the most interesting parts of the coursework was ensuring we stuck to the standard required by our lecturers server to send and receive data. This server allowed for research to take place on the information submitted by users, backed the data up and allowed users to carry information from one device to another.

All drink diary entries and task results were synced.

User Interface

Though the design of the application was very “windows phone-eseque” it was somewhat unique and supported many of the android features users have become familiar with; such as landscape and portrait support, different screen resolution support (from 3 inch phones to 12″ tablets and above) and notifications for long running processes such as data upload.

Thoughts on Developing for Android

I thought this coursework was a really nice way to pick up the programming language Java which, until now, I hadn’t needed to use. It’s similar to C# in a lot of ways with a few of its own idiosyncrasies, but a lot of the industry (and The University of York) use it extensively, so its a good thing to have learnt.

It was also interesting to have developed an application which worked across mobile phones, from small 3 inch screen devices, to much larger 12 inch tablets. This made me really think about the best way to develop the user interface, and I think I found a good compromise — it was certainly at least usable on all of these devices.

The main issue a lot of people had, including myself, wasn’t with Android itself, or indeed Java but rather the Eclipse IDE which most android developers use when writing applications. We all know that Visual Studio is in a class of its own, but it was a bit of a culture shock to change to an IDE that didn’t support debugging in quite the same way for example. Having said this I think this ability to switch between development environments is a good skill to have picked up. The other issue was just how slow the default andoird emulator is on a non-intel PC — but this can be solved through the use of Genymotion.

I will be getting my results for the module as a whole, along with my final university grade itself on the 2nd of July. I will of course update the blog then!

Danny