COM2004 - Data Driven Computing

Autumn Semester

This module is set to build upon the Machines and Intelligence module I took in first year. The module focuses more on the software behind the systems and the algorithms that power them. Machine learning, pattern processing, Bayesian and Linear classifiers, feature selection and extraction, dimensionality reduction, unsupervised learning, clustering, density estimation and mixture modelling were the topics that we were taught about.

Grade: 70%


Assignment: Optical Character Recognition

Optical Character Recognition assigment

The assignment task was to extract the textual information from a scanned image of a book which has had noise introduced (to make it harder and better replicate poor image quality or non-ideal system settings). The assignment then would take a classifier that we have made and using a feature-vector with no more than 10 dimensions extract the text content on all types of noise data. The assignment was made slightly easier by being given the bounding boxes of the text. My approach explored both LDA and PCA, however after testing it clear PCA was much better and so I explored that more. I enhanced the system by implementing a k-nearest neighbour classifier allowing the system to classify data in less than a few seconds.

COM2008 - Systems Design and Security

Autumn Semester

This module set out to cover the different aspects of software development and the design processes behind it. It covered: How to choose an appropriate software development lifecycle model; the interaction between developers and stakeholders; the management and security of information; database development and security of data; user interface design; validation and protection of data and techniques to protect against threats.

Grade: 77%


Assignment: University management system

This was a group assignment during the Autumn semester and was focused on creating a University Management System. We were tasked with coming up with a robust system which would manage Staff, Students and the grades. The project was a Java application with Swing.

Before doing any development we had to create UML diagrams for use cases, class diagrams, database design and state machines this was so that as developers we can see the full system and there is no ambiguity in what we are doing. Building an efficient database model was a critical part of the design process and I was tasked with doing this due to my experience in the field. I also worked on the interaction from the controllers to the database using models. I was also a major part of the testing of the system. I did however also help all the group if they needed help.

COM2009 - Human-Machine Interaction and Robotics

Spring Semester

This module was about giving students a clear understanding of the principles behind the underlying systems that control robotics. It also gave an extra insight into the design and implementation of effective human-machine systems. Topics covered were sensing, actuation and control, autonomy, control theory, local guidance and localisation, maps, path planning, cognitive systems, probabilistic modeling and actioning, and a small section about future technologies in the field.

We had a few talks from professionals in the field such as Rob Deaves who showed us the Dyson 360 Eye robot vacuum cleaner and demonstrated the approaches the system takes so that it can clean the room. He taught us about different localisation techniques such as SLAM (Simultaneous Localisation and Mapping), odometry and different safety systems that can be used to keep humans and the robot safe.

Grade: 58%


Assignment: Labs


The module was covered by 50% lab assignments. Which were broken down into two group lab assignments. They focused on applying what we had learnt in the lectures to real systems through the use of the Lego Mindstorms.

The first assignment was about experimentation with different control strategies through the use of open and closed loop control architectures. And creating a PID controller for the system. We were provided with two ultrasonic sensors for depth analysis. The final part of the lab was to make a closed loop system which would navigate the robot through a maze while avoiding walls.

The second assignment was about creating a search and assist robot by using a multilayer control architecture based on the subsumption architecture created by Rodney Brooks. My system was composed of several behaviours such as obstacle avoidance, search, beaconing, target locating. We experimented with all sorts of behaviours and physical configurations of the robot, and after some analysis and testing we settled on a configuration where we had 2 front facing sensors as we realised in testing that due to our use of the levi flight search strategy the system is only ever moving in a straight line or pivoting on the spot which means it only needs to check for obstacles in front of it rather than on the sides of it. This was also aided by the use of a gyro sensor so the system could know what orientation the vehicle was at. A light sensor was used to beacon to the light source target.

For both of the assignments we were also tasked with writing reports on our tests and provide a breakdown of the system. It was also a place for us to reflect on what we would do differently.

COM2107 - Logic in Computer Science

Spring Semester

This module was about the syntax and semantics of propositional and predicate logic. It also introduced us to natural deduction, soundness and completeness, decideability and undecidability. Applications for it in computer science such as theorem provers using the DPLL algorithm and the resolution method, as well as the modal and temporal logic for computing system verification.

Grade: 40%

COM2108 - Functional Programming

Autumn Semester

This module taught students about a different approach to programming and covered how the functional world works. This was achieved through the teaching of Haskell, one of the most popular functional programming languages in use today. The module was subdivided into 3 main sections each with an assignment relating to that section.

Grade: 65%


Assignment 1: Section 1: Bags

The first section was all about functions, parameters, arguments, binding, environments, types, recursion, patters, and guards.

For the assignment I was tasked with building a data structure in Haskell for a Bag. The bag then had objects inside it.

The second part introduced anonymous and high-order functions, as well as user-defined data structures and type classes. It was followed by the first stage of building an 8-off Solitaire card game. I had to define the data structures to be used in the game, as well as several utilities and functions. The main one would take a game board and would make all possible moves to the Foundations

Assignment 2: Section 2: 8-Off Solitaire

The second section was about high-order functions as well as custom user-defined data structures and type classes.

For the assignment I was tasked with creating the game 8-Off Solitaire. I had to define the structures that make up the deck and the board, as well as multiple utilities for moving the cards around and checks to ensure valid moves are made. This was to be part one of a larger assignment and so we were tasked with creating a way for the system to take a given board and move all the possible moves it can do without user input.

Assignment 3: Section 3: 8-Off Solitaire Part 2

The final section was about algebraic data types and the partial function and its applications in haskell, lazy programming. And introduced us to the IO system of Haskell.

For the assignment I was tasked with finishing the game 8-Off Solitaire by creating a program to auto complete a game. It took the previous assignment and built upon it creating a crude AI to take a given board and search through the possible moves to come up with a finishing solution or a failing board. My solution couldn't get a successful board accurately to say it was a working solution however it could achieve some successes when running off random inputs.

COM2109 - Automata, Computation and Complexity

Academic Year

This module was focused on the concept of automata and its theories behind it. During the autumn semester we covered topics such as finite automata, regular languages, pushdown automata, context free languages, turing machines, and decidability.

For the spring semester the focus was more on computation and complexity diving into topics such as Reduction with Rice's theorem, P vs NP, Cook's theorem, techniques for proving NP-hardness, how to handle NP-hard problems, approximation, and randomisation. We were introduced to some mathematical divisions such as graph theory and Sets which allow us to better represent the problem. We covered issues such as the Knapsack and Vertex cover problem.

Grade: 58%

COM3420 - Software Hut

Spring Semester

This module is based around the concept of a Software House in which we are provided with real world clients who have real world issues. It was building upon the COM1001 module and used what we learnt in that module and then built upon it to get a deeper understanding of how to handle clients changing their minds. It also showed us how to work as a team and how to self regulate the team structure to support one another.

The assessment was broken down into different sections, focusing on team organisation and management, progress and implementation, documentation, tests, quality assurance, client communication, system quality, and the overall impression of the system. The documentation was further divided into: Story cards, requirements documents, database design, state-machine diagrams, mock-ups, and manuals.

Grade: 76%


Assignment: Faculty resource team

FRT system

My teams project was a faculty resource management system and it was provided to us by our client who is part of a team that manages the humanities faculty. They wanted a system which allows the team to manage staff in the faculty and handle staff budgets and requests. It was also expanded further to handle teams of people joining and leaving.

After initial meetings with the client to gather requirements and get a better understanding of the system, we set about creating mock-ups of the project. I took responsibility of the mock-ups as I have a good background in UX design. I took inspiration from the Bootstrap and Material Design Principles and incorporated that into a minimalistic UI which was clear and easy to use. We showed the mock-ups to our client who loved them and so we began development into the final product.

Development was done using Ruby and the Rails framework. This allowed us to create a responsive web app that would work across multiple devices. The Database used to store data was a MySQL database and used an MVC system to interact with it.

FCE2001 - Engineering - You're Hired

January Week 1

This module built upon the Global Engineering Challenge from first year. However this time, we had to do more complex issues such as budgeting and resource allocation. Our presentation was also more in-depth.

Our project was a system for reducing the number of collisions (fatal and non-fatal) in rural areas. We approached the problem in different ways thinking about both cost effective but also safety increasing solutions. We settled on smart cat-eyes which would flash red if a car was coming on the other side of a turn.

Grade: Distinction