Michael Mohan
Flick through the slideshow to see screenshots from my final year university projects.
The modules taken during the final year of university are also outlined below along with overviews of the projects completed for the modules.


















University Modules And Projects Completed During Final Year
Advanced Software Design
This module looked in more depth at the techniques used to build software designs and how to use UML to support software design. The module showed ways to bridge the gap between project requirements and code structure by building designs from use cases, modelling, using design patterns, applying model driven engineering and using the unified software development process with iterative and incremental development.
-
This module contained 2 projects. The first project was a software design model for an online version of the Risk board game using UML and OCL diagrams. All of the UML and OCL diagrams for the game can be downloaded here.
-
The second project was a Java system to investigate the time taken for an application to run using the strategy design pattern and without the pattern to measure which version of the program is more efficient. The program runs calls to relevant class methods then outputs the time taken to do so. This is repeated until there are 5 times recorded and these times are written to a text file. The source code and results of the project can be downloaded here.
Algorithms: Analysis And Application
This module investigated different techniques to analyse and measure the efficiency (i.e. performance, complexity, time taken, memory usage) of algorithms. The module looks at ways to compare algorithms, how to analyse complexity, applying upper and lower bounds to an algorithm and determining its growth rate, using graph representations in algorithms, dynamic data structures and the NP-Complete problem. The module also investigated different algorithms such as searching algorithms (binary split search), sorting algorithms (insertion sort, quicksort, merge sort) and string matching algorithms (K.M.P. algorithm, Boyer-Moore algorithm).
High Performance Computing
This module introduced the methods used to write parallel computing programs in order to tap into the capabilities of modern multi-core processors. The module looked at the concepts and terminology in parallel computing, parallel memory architectures, parallel programming models and performance analysis and tuning. The practical parallel programming in the module was done in C, using OpenMP and MPI and running on CUDA.
-
Details about the project for this module can be seen in the High Performance Computing page.
Individual Research Project
This module was defined by the project chosen for it, which in my case was a project to measure optimisation techniques in C++ programs. It also consisted of a dissertation written about the project.
-
Details about the project for this module can be seen in the Individual Research Project page.
Innovation And Entrepreneurship
The aim of this module was to develop entrepreneurial, innovation and presentation skills. The module tasked me with developing an idea within a business context and delivering a prototype solution to foster these skills.
-
Details about the project for this module can be seen in the Innovation And Entrepreneurship page.