Module Overview

Semester 1

CPU5001Web ProgrammingMartin Stanhope
CPU5002Database Theory & PracticeAndrew Parker
CPU5008Data Structures & AlgorithmsAbdul Razak

Semester 2

CPU5000Level 2 ProjectLouise Ashby
CPU5006Systems Analysis & DesignAndrew Parker
CPU5007Object Orientated MethodsAbdul Razak


Web Programming

This module covered a lot of web programming fundamentals. Including; HTML5 Canvas; JavaScript Date Object; Onload & Onclick Events; DOM Structure; JQuery; JSON; XML; SVG; Asynchronous JavaScript & AJAX. I really enjoyed this module, loved working with JavaScript. One aspect of web development that I enjoy is the continuous visual feedback you receive as you develop.

Assignment 1

The first assignment tested us on our JavaScript & HTML5 Canvas skills. This first semester was our first major introduction to the language. We were tasked to create a Bingo game.

Your browser DOES NOT support HTML5 canvas

HTML5 Canvas - Bingo Game

Play|Download Source

Supporting Research Document


Assignment 2

This assignment introduced us to the D3.JS (Data Driven Documents) JavaScript Library. It is used for manipulating documents based on data and brings it to life. Below is an example of a bar chart.

Journey Bar Chart Progression

Stage 1|Stage 2|Stage 3|Stage 4|Stage 5|Stage 6|Stage 7

Completed Visualisations

Bar Chart|Pie Chart|Line Chart

Final Report Submission



Database Theory & Practice

This module covered the basics of databases, plus some more advanced skills. These include; Structured Query Language (SQL), Relational Keys; Joins; Referential Integrity; Constraints; Entity Relationship Diagrams; Insertion Anomalies; Normalisation; Views; Aliases & Security.


We were given a bunch of dummy data in which we had to bring to 3rd Normalised-Form. We then had to create an Entity Relationship Diagram, Functional Dependencies & a Data Dictionary. We then had to create the database in a MySQL Command Line and run queries, CRUD operations and joins.

Final Case Study Report


Entity Relationship Diagram



The final database exam tested us on our SQL knowledge. The module was originally supposed to finish with a section on XML. However, given that it was covered in CPU5001 - Web Programming, it was taken out and replaced with more SQL content, meaning our exam was solely on SQL.

Past Paper Examples

2014-15 | 2015-16


Data Structures & Algorithms

This module introduced us to using Eclipse IDE and the fundamental of Object Orientated Programming. Including; Classes, Objects, Methods & Messages; Inheritance; Polymorphism & Dynamic Binding; Encapsulation & Information Hiding. It also covered different data structures such as; Linked Lists; Stacks; Queues; Trees; Hash Maps; Hash Sets; Binary Trees; Tree Sets; Tree Map and their importance in Computer Science.

Assignment 1

The first part of the assignment tested our knowledge of Cloning, Sorting & Searching. The second was based around Queues & Linked Lists.

Over the course of the module, I became very familiar with Eclipse IDE (Versions Neon & Oxygen) and with the Java Language itself. I found the abstract nature of Object Orientated Programming quite challenging, but interesting. I plan to learn Swift and Objective C in my own time in order to develop iOS applications in XCode on OSX.

Eclipse Project Download

Part 1|Part 2

Assignment Specification & Brief

Part 1|Part 2

Assignment 2

The first part of the second assignment tested our knowledge on Tree Data Structures & Recursion. This also involved use of the 'Cloneable' Interface in order to copy objects. The final part tested us on Maps, Enumurative Types & Serialisation.

  • Root

    • Parent 1

      • Child 1

      • Child 2

    • Parent 2

      • Child 3

    • Parent 3

      • Child 4

      • Child 5

      • Child 6

Eclipse Project Download

Part 1|Part 2

Assignment Specification & Brief

Part 1|Part 2


Level 2 Project

This module builds upon the 'Scholarship' module from Year 1, Semester 1. We learnt how to undertake a research project and how to approach both quantitative and qualatitive data. We drafted up ideas for our final year Major Project and produced a literature survey, project proposal and project plan.

Assignment 1

The first assignment was to write up a literature survey for our initial project idea. My initial project research was the study of randomness, pseudo vs. truly random number generation. I took inspiration from a social experiment called 'Twitch Plays Pokémon' which takes chat input from Twitch using an Internet Relay Chat (IRC) bot written in Python in order to control the game. You can read more about my idea in the document below.

Literature Survey

View | Download

Assignment 2

The second part of the assignment was Project Planning & Research. We were introduced to Microsoft Project and had to create a Gantt Chart to visualise the time management and allocation for all required research and development to finish our project.

Project Plan - Gantt Chart

Download .MPP


Systems Analysis & Design

This module, as the name suggests, was about being a Systems Analyst. We covered Project Management; Functional, Structural & Behavioral Modelling; Class & Method Design; Data Management Layer Design; HCI Layer Design & Physical Architecture Layer Design. The module was split into an equally weighted assignment and examination.


This assignment was a big one. We were provided with a case study regarding a company called 'Knott End Marine Engineering' whc were having problems with their business. Our job, as the pseudo-systems-analyst, was to produce a feasibility study for a proposed new system. We had to include use-case, activity, class and object diagrams.

Case Study Report



The Systems Analysis paper was a 'seen exam', meaning we actually received the questions ahead of the exam date. It sounds rather odd, as surely everybody would ace it, right? The idea is you're given 8 possible questions, of which you choose 5. But the marking criteria is very strict.

Exam Questions & Notes

View |Download

Lecture Notes

Download Archive


Object Orientated Methods

This was the core technical module for this semester, building upon Introduction to Programming from Year 1, and Data Structures & Algorithms from this year. Again, we used Java as we were familiar with the language and covered the following; Java.x, JFrame, Swing, AWT, Threads & Concurrent Programming; Software Architecture & Design, JUnit Testing.

Assignment 1

The first assignment was to create a GUI using Java Swing Library components and to implement a multi-threaded program for the given scenario. We had to implement two design principles, the Dependency Inversion Principle (DIP) and the Open Closed Principle (OCP).

Supporting Research Document


Assignment 2

The second assignment was to create a 'Naval Battle Board Game' in Java. The aim of this assignment was to teach software development processes, software architectural design, test driven development and exception handling. It also re-inforced our knowledge of UML.

Naval Battle Program

Eclipse Project|GitHub Repo

Supporting Research Document


Year 2


On one hand, the second year wasn't so difficult as we'd all settled in and understood what was expected of us. On the other hand, the work was harder as we built upon, significantly, the work we had done in year one.


Average Grade