Archive | University – Masters RSS for this section

Graduating from York

On January 23rd I graduated with an MSc in Advanced Computer Science from The University of York. It was a nice occasion to get together and be merry with the family, and of course for some photos in my cap and gown — this time they were grey and blue.

My parents took my degree home with them and hung it up next to my undergraduate degree and departmental award. I think they look nice together.


For some more nice pictures you can check out my dads blog post about it.


MSc Finished


Last week I submitted my thesis, workshop report and conference presentation for my MSc in Advanced Computer Science. Two days after my submission I was also required to present my research and answer a few questions fielded from a lecturer in Yorks Department of Computer Science who had not previously seen my work. The video shown above is the one which will be used to mark my presentation and question answering skills.

Having completed the three deliverables and the presentation my research semester, and thus my masters, is complete.

I expect to find out my final result in 4 to 6 weeks, however currently I am more focused on my impending start at Trainline — which I hope to write about soon.


Thesis writing begins

Thesis Title Page

Today I started work on my masters thesis covering my research for and development of EpsilonGit.

There’s no template provided for the layout of such reports, so today I’ve been sketching out a rough outline of what I hope to include in the report. e.g. Chapter names, section headings and comments for things to talk about in each section. One of the other things I did was make a pretty title page, because who doesn’t like doing that?

I’d like to be in a position by the end of the week whereby I can roll into the lab, open TexPad and start writing within a structure I’m already happy with and have had ‘signed off’ by my supervisor.

Eventually my thesis will sit at around 30,000 words and will be accompanied by a 6 page workshop to briefly describe what my project does and a Beamer presentation which could be used at conferences.


Research Semester Begins

Most people don't do much more than a simple `git log`

My final semester at The University of York has officially begun. Over the next 5 months I will be conducting 100 credits worth of (hopefully) novel research in the area of Git Source Control Querying and Analytics through the use of Model-Driven Engineering under the supervision of Dr. Dimitris Kolovos.

The original project proposal is shown below:

Advanced Querying of Git Repositories

Git is a distributed version control system that is widely used both in academia and industry. Git provides a command-line API through which basic queries can be evaluated against local repositories (e.g. git log) but lacks facilities for expressing complex queries in a concise manner. The aim of this project is to support such complex high-level queries on Git repositories. In the context of this project, the student will need to

1) identify the metadata stored in a Git repository and extract it to an object-oriented representation (e.g. using JGit)

2) develop a driver that will allow languages of the Epsilon platform to query extracted metadata at a high level of abstraction. For example, the following query would select all files larger than 200 lines and which were last modified by on a Wednesday:|f.lines > 200 and 
  (f.lastModifiedBy = "" or f.lastModifiedDay = "Wednesday"))

Such an advanced query facility would enable the development of advanced Git repository analytics and visualisation services (e.g. using Epsilon’s EGL as a server-side scripting language).

I’m currently in the very early stages of literature review and finding out what other git analytics programs are available so there isn’t too much to talk about. However, I will as ever keep the blog up to date with my progress over the next few months.


Formal Specification Module Result – 96%

Z Notation PDF Render

The other module I was working on alongside “Topics in Privacy and Security” was “Formal Specification”.

In this module I used Z notation to formally specify a navigation system for Robot Vacuum Cleaners (A bit of a computer science obsession it seems). I then used the technique of promotion to allow for more than 1 robot vacuum cleaner to be in a room and observed some emergent interaction.

Comparison of the two movement algorithms I formally specified.

Comparison of the two movement algorithms I formally specified.

I really enjoyed this module, I like the challenge of working more on a mathematics level rather than a programming level — you have to work with different ‘data structures’ and work with different operators and structures of notation.

I would recommend for anyone to look in Z as it really makes you think about methods and functons in a different way. In terms of pre-conditions (what must be true for the function to start?), post-conditions (what must be true at the end of the function?) and invariants (what must always hold true?). It strikes me as a very good way to think about testing programs, even if you don’t formally specify them before producing them.

A visualisation of some of the emergent behaviour that happened with two robots -- one robot could effectively trap the other in the middle of the room.

A visualisation of some of the emergent behaviour that happened with two robots — one robot could effectively trap the other in the middle of the room.

Formal specification is probably a bit over the top for most software engineering projects, but if I were to ever work on a Planes autopilot system, or a system which moved the control rods in a Nuclear Power Station, I’d want to know formal specification had taken place. So it’s a useful skill to have learnt. It was also a nice refresh on discrete mathematics.


Topics in Privacy and Security Module Result – 77%

Interactive GUI for Reputation Attack Effect Calculator

Last week was a hectic one. I had a coursework deadline for my Adaptive Learning Agent Systems module, and a exam for Static Analysis and Verification. Amongst all the work I received my results for my Topics in Privacy and Security Module.

The module was assessed by a 100% weighted coursework for which the aim was to develop both a security risk management strategy for a telehealth company and develop some software to determine the best reputation metric for a star-rating system for e-commerce websites to reduce the effect of self-promoting and slandering attacks at different scales.

For the security risk management strategy the ISO/IEC 27002 and ISO/IEC 27005 standards were followed. Assets, user roles, system boundaries and businesses processes were identified, possible violations were considered, threat agents and paths were analysed and critical analysis of which risks had to be managed and which controls to use to mitigate their risks took place.

Identifying Assets can be a Long Process

Identifying Assets can be a Long Process

I used the programming portion of the coursework as an opportunity to learn cross-platform GUI development in Java, using JavaFX. As of the time of writing JavaFX still doesn’t support simple dialog boxes without a host of libraries… which made it interesting. However, it was quite impressive to see ‘write once (carefully), run anywhere (conditionally)’ work in action. I also used it as a chance to try out a form of more modular development, in which all of my business logic was in a library which any GUI could tap into, whether that be a Java Servlet, JavaFX or Command Line program. For the coursework I developed both the aforementioned GUI and a simple Terminal Interface, both running on the same shared .jar library.

Command Line Interface to the Reputation Attack Effect Calculator

Command Line Interface to the Reputation Attack Effect Calculator

Thankfully, now that this week is over, so is the taught portion of my masters degree. For the next 4 months I will be working on my research project, which will be discussed in a future blog post.


Constraint Programming Module Result – 80%

MiniZinc code in the MiniZinc IDE on Mac OS X

One of the more challenging modules I’ve taken at York is Constraint Programming. It’s was an interesting module to take because it was much more mathematical than other things I have done before, and also because it introduced an entirely new way to think about programming and problem solving in general.

Most of the programming I have done has been procedural or, in other words, telling the computer how to solve a problem. Constraint Programming on the other hand allows you to specify a problem through constraints and then ask a finite domain solver to solve it.

Important elements of the process that we covered were: Developing an abstract syntax of a problem; converting from an abstract syntax to a concrete syntax (The constraint programming language MinZinc); symmetry breaking, implied and dominance constraints, and configuring search through the problem space.

The complete process came together in the 100% weighted coursework, in which we developed a solution to determine the minimum number of sheets, of a given size, required to satisfy a given demand for certain sizes of ply wood.

I was given a grade of 80% for the coursework, which I was happy with 🙂 This now means that I have all of my grades for the first half of the taught part of my course:

  • Model-Driven Engineering: 80%
  • Concurrent and Real-Time Programming: 99%
  • Evolutionary Computation: 80%
  • Constraint Programming 80%
  • Average: 84.75%

This means that now, short of an absolute disaster, I should achieve an overall mark of distinction in the taught part of the degree.   🙂 However, there is no rest for the wicked and I am already around half way through the coursework for my Formal Specification and Topics in Privacy and Security modules.