|CPU5001||Web Programming||Martin Stanhope|
|CPU5002||Database Theory & Practice||Andrew Parker|
|CPU5008||Data Structures & Algorithms||Abdul Razak|
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.
Entity Relationship DiagramERD XML
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.