Compulsory modules
Introduction to Programming and Databases
The aim of this module is to give students the basic knowledge of procedural programming and a thorough understanding of Entity Relationship Analysis, relational database design and use.
This module also aims to enable students to become aware of and develop their academic, professional and personal skills through Personal Best. Personal Best is a development programme available to all students at Loughborough University.
Computer Systems and Low-level Programming
The module aims to give students a robust mental model of how the various abstractions of computer science are realised in the architecture of a modern computer system's underlying hardware. As an introductory module, simplifying assumptions will explicitly be made wherever they are appropriate. Part of the module's goal is to make clear how a somewhat-low-level language such as C, is transformed into the machine code that will execute on a given CPU. Part of the goal is understanding the significance of the architecture of the various sub-systems that support the CPU's voracious appetite to consume instructions and data.
Part of the module's goal is to look inside the CPU to understand how its internal architecture enables computation to be performed at pace. Along the way, the security consequences of a range of design decisions at various layers of abstraction will be considered.
Operating Systems, Networks, Security
This introductory module aims to establish the core concepts that underpin operating systems, computer networks, and their security. Wherever possible, these abstract concepts are made real, using Linux as the exemplary operating system, and Ethernet, IP4, TCP/UDP as the exemplary network stack. With the exception of cryptography (which is addressed in other modules in later years), security is introduced as it applies to operating systems and computer networks.
Virtualisation will be used to give students root access to experiment with a range of operating system and network configurations. This provides the opportunity to make 'mistakes' in relative safety, without harming systems or data that have real-world value.
Logic for Computer Science
The aim of this module is to provide the student with the fundamental notions of logic and discrete mathematics that are used in computer science and artificial intelligence.
Fundamentals of Software Engineering
The aim of this module is to introduce the student to the basic concepts, principles, and skills for modern software engineering.
Mathematics for Computer Science
The aim of this module is to introduce the student to the main mathematical concepts most frequently used in computer science.
Introduction to Algorithms
The aims of this module are to:
- Establish a fundamental understanding of the design and analysis of algorithms and their importance in computer science, and to introduce several important data structures.
- Give an appreciation of how algorithms can be designed and analysed which will aid deeper understanding of later computer science modules.
Foundations of Artificial Intelligence
The primary aim of this module is to familiarize students with foundational approaches in Artificial Intelligence (AI) like search and logic-based methods. This module will also equip students to comprehend the ethical issues associated with building and operating intelligent agents.
Object Oriented Programming
The aims of this module are for students to acquire:
- Essential skills on object-oriented programming principles.
- Skills in programming with an object-oriented programming language (eg Java).