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%
Projects
Assignment: Optical Character Recognition
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%
Projects
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%
Projects
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%
Projects
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%
Projects
Assignment: Faculty resource team
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