Introduction to C# (20 Credits)
This module introduces you to C# programming language and the Visual Studio Integrated Development Environment (IDE). The module is an initial module in computer programming and will assume no prior knowledge of programming. This module provides support for the Design and Implement elements of the CDIO module.
Mathematics for Computer Science (20 Credits)
This module aims to provide a foundation in applied mathematics covering the areas of: graph theory, probability theory, linear algebra and pure mathematics such as calculus and number theory. The first section of the module will examine a range of standard topics as follows: basic statistics; sequences and series; set theory; difference equations, calculus; complex numbers and graph theory. The second part of teaching will examine more pervasive ideas through for example the application of probability theory, linear algebra and special topics such as game theory which combines a range of mathematical concepts.
Fundamentals of Computer Systems (20 Credits)
This module will introduce you to the base concepts of the binary computer through interaction with small devices such as the Raspberry Pi and programming these to work with external hardware devices. You will examine its components, its operation and basic elements of data storage.
Application Development (20 Credits)
On this module you will increase your capability to develop simple C# solutions to problem situations. This will cover more complex programming concepts as well as concepts of Graphical User Interface development and design and linking C# systems to file store and database systems.
Ethics, Professionalism and Employability in Computing (20 Credits)
This module aims to give a good understanding of ethical, professional and employability issues you will encounter when embarking on a career in computing. The module will focus on the kind of roles available to computer professionals and discuss the choices required, both in general and with regard to the degree modules that might best guide you into a particular career. You will have the opportunity to research and explore the knowledge required for your chosen career and be encouraged to discuss the ethical and professional issues relating to these areas.
Software Lifecycle Group Development Project (20 Credits)
To develop your understanding of the fundamental concepts of software engineering you will work through a project in teams to develop a piece of software. You will work through the software life-cycle tasks to developing a computer-based solution to meet specific user requirements through the development of a simple system. You will also develop your understanding of what is required for good team formation and operation.
Object-Oriented Programming (20 Credits)
Object oriented programming continues the software programming stream from year 1 by looking at a way of thinking about problems and development of solutions – using the class and object model. Continuing the use of the main programming language from year 1 (typically C#) the module deepens your knowledge of how to use the power of this development language. You will also consider the concepts of the ethics of untested software and Intellectual property rights in the software industry and how this may affect their own software development careers.
Database Enhancement Group Project (20 Credits)
This project module aims to give you practical appreciation of the fundamental issues involved in designing, implementing and testing a small relational database application in a multi-user environment using an industry-standard database management system. You will be taking an existing database and making improvements to this while understanding the modelling concepts and theory to understand database systems.
Software Engineering (20 Credits)
This module provides you with an opportunity to understand the basic methodologies, tools and techniques involved in creating comparatively small software systems. The module aims to provide you with the ability to effectively use one of the industry used software development frameworks such as Visual Studio Team Services (VSTS) and its embedded tools to create a full application starting with a scenario of a small project idea and ending with full deployment of a solution application.
Web Development Project (20 credits)
This module aims to provide students with the theoretical knowledge and practical skills to understand and construct interactive websites. The focus will be on client-side and server-side design and implementation enabling students to appreciate the role of various network architectures and system configurations. This module provides support for all elements of the CDIO model.
Networking and Operating Systems (20 Credits)
This module introduces the basic principles of operating systems and you will undertake practical exercises on basic administrative tasks. You will also be introduced to the fundamental aspects of Computer Networks. Key aspects such as the design, construction and operation of Local and Wide Area Networks, and the layered protocol architecture are covered. The module aims to reinforce the taught material using physical equipment and software tools in a laboratory environment.
Artificial Intelligence Computing (20 Credits)
This module presents Artificial Intelligence (AI) as a coherent body of ideas and methods connected to underlying theories about intelligent computer systems. You will explore this through problem-solving paradigms, logic and theorem proving, search and control methods and machine learning.
Optional Year in Industry
The year in industry allows you to develop your knowledge and skills in a business or industrial setting. This allows you to build up the practical skills desired by employers and to demonstrate your capabilities on your CV.
Individual Project - Part A (20 Credits)
The individual project you with an opportunity to individually manage, analyse, design, program and test a good quality, reliable and maintainable significantly sized system using a specified software development life cycle/development methodology, again, of your own choice in a timely fashion. You will work largely on your own, with guidance and some input from a supervising member of academic staff. The module requires the development of a significant sized software artefact and production of a formal report describing and critically appraising its development. The software artefact must meet a clearly identified real-world need, ideally for, a clearly identified business/customer/organisation/end user.
Programming Frameworks and Languages (20 Credits)
High Performance Computing (20 Credits)
This module aims to convey a theoretical understanding of High Performance Computing (HPC) and its practical application to science and engineering. The HPC hardware architectures and the parallel programming techniques will be explored in detail and evaluated in the context of distributed systems and client server modelling. This will convey the importance of HPC architectures and parallel programming approaches when considering optimal solutions to complex problems.
Individual Project- Part B (20 Credits)
You will continue your work on your Individual Project that you started in the first Semester.
Advanced Operating Systems (20 Credits)
This module provides a theoretical overview of the key concepts underpinning the design of modern operating systems. This theoretical knowledge will be used, critically analysed and applied to real-world uses of operating systems. Understanding of the underlying inter-process operation of operating systems will be looked at via shell scripting. The overall structure of an operating system will also be covered, i.e. the layered model, virtual machines, client-server, etc. The module will also consider the user’s view of an operating system in terms of process control, file manipulation, device and information maintenance and the user interface/API.
Advanced Databases and Big Data (20 credits)
This module uses the Conceive Design Implement Operate (CDIO) educational framework utilising software engineering fundamentals within the context of conceiving, designing, implementing and operating a complex value-added real-world database system. The module follows on directly from the Year 2 Database Enhancement Group Project module. It aims to consolidate/extend the practical and analytical skills required to carry out more advanced logical/conceptual database design and explores alternative ways of modelling data. It also aims to keep you abreast of recent developments in the field; particularly in the storage and effective use structured Big Data.