Module Overview

Semester 1


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

Semester 2


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

CPU5001

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

View|Download

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

View|Download

CPU5002

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.


Assignment

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

View|Download

Entity Relationship Diagram

ERD XML

Examination

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

CPU5008

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

CPU5000

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

CPU5006

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.


Assignment

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

View|Download

Examination

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

CPU5007

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

View|Download

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

View|Download

Year 2

Summary


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.


Rating

Average Grade

88%