University Modules
|
This page will give a brief summary for each module I completed. The software/hardware tools I used will be listed and the module titles will be colour coded based upon the coding language used in the module.
|
Key
Black: No Language Red: Java Yellow: Python Blue: C/C++ Dark Red: Java and C# |
Green: Haskell Pink: MATLAB Orange: XML, XSL and JSON Purple: HTML, CSS, JavaScript and Python |
1st Year
Professional Software System Design
The primary aim of this module was to develop the foundations for a wide set of professional and academic skills through the execution of phased software development projects. Key skills included team working, software system development and maintenance, and an introduction to the use of methods and models. The projects focused on professional IT roles as practised in a contemporary business context.
The tools I used in this module were IDLE and Tkinter.
Understanding Programming
The module was designed for students completely new to programming. It covered the basics such as how to understand and write basic code, logic gates, algorithms, and fundamentals of programming and functions in Python.
The tools I used in this module were IDLE.
Introduction to Object Orientated Programming
This module covered the fundamentals of object-oriented programming design, testing and implementation. The module gave me the opportunity to apply these programming principles to software development. I acquired the skills and practices necessary to become confident in developing software.
The tools I used in this module were Netbeans and JavaFX.
Software Development Environments
This module aimed to equip me with the essential knowledge and skills required for using professional tools for software development. I was taught how to use the features of the most common Integrated Development Environments (IDEs) to write, debug, document and test the computer programs I developed. Also I was introduced to the use of version control software to manage program code updates.
The tools I used in this module were IDLE, PyCharm and Git.
Networking and Multimedia
The aim of this module was to cover the basics of networking and multimedia. The module introduced basic protocols and techniques used in the communication of multimedia information over a network. TCP and UDP protocols will be analysed and compared.
Discrete Mathematics
An introduction to the key mathematical ideas that underpin computer science with applications to computing.
2nd Year
Foundations of Computation
The theory of computation tells us all about what all our computing practice ultimately depends upon; in much the same way that engineering practice depends on physics. Issues looked at include the role that Logic plays in computing, computation in terms of computational processes, the issue of complexity, computability, and Turing machines.
Further Object-Oriented Programming
Building upon what was learnt in Introduction to Object-Oriented Programming, this module went on to teach topics such as inheritance and abstract classes, JUnit testing, lambda expressions, designing by contract, and recursive programming.
The tools I used in this module were NetBeans, JavaFX and JUnit.
Software Development with C and C++
This module covered programming in C and C++. It went over C programming and goes on to the standard features of C++ and their use for good program design and practice. After completing this module, I was expected and able to write programs in C and C++.
The tools I used in this module were CLion.
Professional Issues and Computer Risks
A study of the professional issues that surround the development of computer systems by the nature of their applications in the context of the society in which the system to be operated and for a recognised level of human safety when implemented.
Current Research
This module introduced me to selected areas of current research and development from sociological, technological and economic perspectives. We worked in groups to carry out a strategic analysis of a topic working in the style of an industrial technical analysis task force. I also carried out an individual analysis of a selected topic. A range of topics were covered in seminars led by specialist and guest lecturers, with practical experience in the topics. Not all seminars were directly applicable to all subject areas, but there was at least 3 relevant to each subject area and I was required to attend them all in order to develop a broader awareness of current topics and trends.
Requirements Specification and Software Design
The module covers the principles, methods and techniques for the specification and analysis of users’ functional and non-functional requirements for information systems and software design.
The tools I used in this module were Papyrus UML Modelling Environment.
Data Structures and Algorithms
Topics covered in this module were abstract data types; static and dynamic storage; linear and non-linear dynamic data structures including stacks, queues, linked lists, binary trees, graphs; traversals. Further exploration of programming topics such as recursion and exception handling.
The tools I used in this module were NetBeans and JUnit.
Reasoning about Functional Programming
This module taught me how to use a functional programming language, how they differ from from conventional procedural languages through emphasize specifying what a program is to achieve rather than how it is to achieve it. In pure functional programming, there are no statements; everything is an expression. Because there are no statements, there is no implicit state, and a variable never changes its value: the language is referentially transparent. This greatly simplifies reasoning about programs.
The tools I used in this module were GHCi.
3rd Year
Foundations of Security
It is now expected of any computing professional to be acquainted with the requirements of secure programming, and other services. This can be summarised in specific methodology to reduce security risks, awareness of security issues in programming and the ability to design a process that is capable of integrating security elements at all stages of the programme development cycle. This course provided me with a basic understanding of the potential and limitations of these methods, such that I can employ them and comprehend the results.
Machine Learning
The module provided me with the principles of computer learning and its applications. It covers the fundamentals of machine learning methodologies, implementations and analysis methods appropriate for machine learning applications. The module enabled me to analyse a machine learning problem, critically evaluate the different approaches that are available and create an effective solution.
The tools I used in this module were MATLAB.
Game Development
This module covered techniques for programming and developing game software in a professional context. It included an overview of the games industry and of gaming platforms and hardware, software engineering and programming problems specific to games, and development of a game using a standard professional game engine.
The tools I used in this module were Visual Studio, Unity, MagicaVoxel, love (with the programming language Lua) and Git.
Databases
The aim of this module was to provide me with the knowledge and skills necessary to analyse the data requirements of a variety of software applications and to propose technically efficient solutions. Emphasis was put on the relational model for databases but the module included a study of contemporary issues in database design, implementation and utilization.
The tools I used in this module were MySQL, Notepad++ and Excel.
Web Application Development
The aim of this module was to provide me with the knowledge of how the web works, how to design and create web pages. It covered the basics of HTML, CSS and JavaScript, before introducing the more complicated tools such as AJAX, jQuery and incorporating SQL into a site.
The tools I used in this module were MySQL, IDLE, Notepad++, PuTTY and WinSCP.
Advanced Object-Oriented Programming
This module is the fourth and final module in a chain of four modules on software development in the Java language. It teaches relatively few new Java concepts but concentrates on how to program well, concentrating on high-quality design.
The tools I used in this module were NetBeans and Visual Studio.
Project
An individually supervised project to investigate a chosen problem to form an extended study of a topic selected from a suitable area of my programme of study and that involves the solution of a practical problem. The project was intended to culminate the course giving an opportunity to present the breadth and the depth of knowledge gained throughout my time at university.
I successfully built an inexpensive tracker to be used to track a light source. The device was built comprising of five light dependent resistors (LDR's), providing information regarding any light sources it can detect to a single-board Raspberry Pi computer. The Raspberry Pi’s GPIO pins are purely digital and so it is fitted with an analogue to digital converter to convert the analogue information provided by the LDR’s. The Pi is connected to two servomotors that orientate the tracker to be perpendicular to the light source detected.
The tools I used for my project were IDLE, a Raspberry PI, 2 servo motors, an electronic breadboard (with wires), 5 LDR's, an analogue to digital converter and a wooden structure to hold the device together.