We want to give you a really strong education in the fundamentals of computer science, so in first year you'll be given an overview of the subject and gain a firm foundation in the principles of algorithms, artificial intelligence and relevant maths. You will also learn computer programming in Java - an invaluable language widely used in business and industry.
We want you to have a chance to follow your own passions whilst studying, so in your first year you are also given a chance to pursue your own interests, via work within robot programming in the Artificial Intelligence module. We encourage group work as part of our commitment to preparing you for the world of employment and you will learn valuable skills.
- Mathematical and Logical Foundations of Computer Science (20 credits)
- Artificial Intelligence 1 (20 credits)
- Theories of Computation (20 credits)
- Data Structures and Algorithms (20 credits)
- Object Oriented Programming (20 credits)
- Full Stack Application Development (20 credits)
In the second year you move on to study enabling technologies and their application. You will learn about a wide range of subjects from the mathematics for modelling and decision making which underpins much of modern machine learning, to systems-level programming, networks, and cyber security. Your programming repertoire will be broadened by exposure to the C programme language plus further functional programming. You will also be taught professional software engineering techniques and apply them to develop a large team project in Java such as a multiplayer networked game.
You can also apply to spend the second year of your BSc Computer Science course at our campus in the UK. Find our more.
In the final year of your BSc computer science course you will obtain a huge amount of training and experience so you can maximise on your degree to achieve your ambitions and interests.
You’ll spend one third of your time on a project, either developed from your own idea or from a wide selection offered by staff members. This usually involves writing a large piece of software and gives you the freedom to extend and demonstrate your skills in your own way. We will also introduce you to Machine Learning and Advanced Networking.
Optional modules - choose 80 credits:
Please note: The modules listed on the website for this programme are regularly reviewed to ensure they are up-to-date and informed by the latest research and teaching methods. Unless indicated otherwise, the modules listed for this programme are for students starting in 2020. On rare occasions, we may need to make unexpected changes to core modules; in this event we will contact offer holders as soon as possible to inform or consult them as appropriate.
Why Study Intensive Programming (for the connected world)?
Programming plays an important role in this modern age. Imagine you walk into your house and your lighting automatically changed according to your mood, your sofa was set to your favourable seating position, your favourite TV channel switched on, and the coffee machine had already prepared your favourite coffee. How could all of this happen? Programming can give life to any computing device. A programming language powers computing devices to collect, control, store and process data accordingly.
Programming has become a necessity in our digital world, not only in the IT industry, but also in business, engineering, medicine, healthcare, fashion, marketing, gaming, mobiles, websites, multimedia to name only a few.
In our degree programme, we focus on intensive programming in order to develop strong programming skills in our students.
Relevant modules we offer that cover programming:
Programming in Java
The Java programming language continues to be one of the most popular languages in industrial software development. The module will introduce you to the Java language. In addition to the language itself, you will learn basic imperative algorithms and data structures along with exposure to principles of object orientation.
System Programming in C/C++
This module introduces the C/C++ family of programming languages, including programming language design issues arising from the various extensions of C that have been developed. The module assumes some familiarity with programming in Java, and it will emphasise the differences between C-style languages and Java, such as garbage collection vs memory management and pointers.
Robot Programming (in Artificial Intelligence)
In this part of the module, you will will learn how to program and command robots using Java programming while also applying artificial intelligence algorithms. This is a very practical area where you will work in small and big teams to program robots to navigate autonomously and in coordination with other robots.
Data Structures and Algorithms
In order for programs to run efficiently, data must be organised in a structured way and also accessed by algorithms as efficiently as possible. This course will introduce a principled way in which data can be organised. It will also teach how the efficiency of a program can be measured in terms of complexity, and how complexity can be estimated mathematically given a problem. This module has both a theoretical and practical nature.
Why Strong Theoretical Foundations?
The digitally-driven world changes fast, with digital trends raising and fading away in the span of a few years. One example is today's popularity of artificial intelligence, which only 15 years ago was extremely unpopular not attracting much funding from the private and public sector. At the same time, computing skills have an ubiquitous usefulness in society, finding applications much beyond IT, for instance in medicine, biology, finance, banking, businesses, fashion, gaming, and policy-making, among others. An education purely based on practical training would only train a professional that could cope with the current technologies, but unable to cope with changing landscapes (e.g. with the advent of another mainstream technology in 10 years) or unsuitable to cope with a domain that was not represented during training. A strong theoretical foundation along with a balanced mix of practical training is therefore crucial to acquire lifelong cores skills of general applicability, but at the same time it offers the necessary practical skills to enhance employability prospects after graduation.
Relevant modules covering theoretical foundations of computer science:
In this module, you will learn the mathematical skills that will help you to master basic and advanced computer science subjects, such as mathematics for computer graphics and machine learning (linear algebra), for cybersecurity (algebra), for understanding programming languages and natural languages studied in AI (formal languages and automata). It will also teach you the basics of how to tell apart easy from difficult to unsolvable problems in computer science.
Logic and Computation
Logic is a powerful formalism that can teach us, among other things, how human and machines reason. This module teaches the basics of logic and a variety of techniques for proving whether a statement is correct or not. Applications of this module include AI knowledge representation systems as well as development of tools to ensure the correctness of computer programs.
Data Structures and Algorithms
Algorithms lie at the heart of computer science and software development. They embody the way in which we solve problems using computers. This module will introduce the fundamentals of data structures and algorithms. Data structures will be formulated to represent information in such a way that it can be conveniently and efficiently manipulated by the algorithms that are developed. The ideas will be presented both abstractly, and via problem-solving and implementations.
Programming Language Principles, Design and Implementation
This module introduces the foundations how programming languages work, from syntactic and semantic specification to compilation. Rather than focusing on specific programming languages, it will use many as examples to explain how these are built and work in principle.