Year one
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.
Like all UAE Ministry of Education Higher Education Institutions, we also run the below listed compulsory modules. These modules are designed to support talented graduates in the region, with the skills to aid and further employability.
- Entrepreneurship, Innovation, and Sustainability (EIS)
- Arabic Language 1
Please note these modules must be completed and passed, in addition to your core programme modules, during the course of your degree.
Find out more about EIS and Arabic modules.
Year two
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.
Year three
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.
Compulsory
Optional modules
Choose 80 credits, examples of optional modules listed below, each module is 20 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 2024. 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.
There is a continuously increasing number of businesses and industries relying on computer programming. Programming languages, such as Java, JavaScript, C#, C++. PHP, Python, SQL, Perl etc, evidently are the driving force behind the advances in Robots, Voice Recognition, Artificial Intelligence, Block Chain, Virtual Reality, Internet of Things, Cloud Computing, and Big Data, to name a few.
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
Object Oriented Programming (OOP)
This module introduces you to a programming paradigm which greatly helps to organise and manage code more easily. You'll discover fundamentally important concepts like encapsulation (keeping things together in separate boxes), inheritance (inheriting traits from parents), polymorphism (using objects in different ways), and abstraction (simplifying complex ideas). By completing this module, you will learn why OOP is useful and what its limitations are. You will also gain the skills to write, test, and fix computer programs using modern OOP languages.
Full Stack Application Development (FSAD)
This module provides a comprehensive overview of software development, including front-end programming for the user-interface, back-end programming for handling user requests, and connecting to databases for storing application data. It covers elements of both desktop and web programming. You will learn various tools and techniques used in full stack development, allowing you to build fully functional software applications from start to finish.
Operating Systems and Systems Programming
This module focuses on understanding the inner workings of computer systems and programming at a low level. You will utilise low-level languages (e.g., C/C++) to interact with the operating system's core, manipulate pointers, and effectively manage memory. This module aims to provide you with a solid understanding of computer architecture, programming, and operating systems, thus enabling you to excel in real-world software development.
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
Mathematical and Logical Foundations of Computer Science
Mathematical and logical reasoning underpins almost all of Computer Science, from linear algebra in graphics and machine learning, to algebra in cryptography and logic in verification.
This module introduces essential topics in mathematics and logic including linear algebra; abstract algebra; set theory (a fundamental language of mathematics); and propositional and predicate logic. The key ideas will be illustrated with applications across a range of topics in computer science.
Theories of Computation
This module introduces the quest to solve computational problems, and the analysis of how difficult that may be. Some problems are easy, some are hard (as far as we currently know), and some are impossible. We start by looking at syntactic correctness problems.
They come up so often in computing practice that special languages have been invented for them: regular expressions and context free grammars. We'll look at apparently hard problems, such as solving a Sudoku puzzle of unlimited size, or planning a route for the legendary travelling salesperson. Can they be solved efficiently? Nobody knows! Then there are examples of the baffling P=NP question, which has flummoxed computer scientists for decades.
Finally, we'll look at impossible problems, such as testing whether a program code is correct. How useful it would be to do this automatically! But alas it can't be done, and we'll learn why not. At each stage, we start with an intuitive idea of what a computer is and how it runs, and turn this into a mathematical definition, following in the footsteps of the famous computing pioneer, Alan Turing. This brings the power of mathematical reasoning to bear on these key challenges at the heart of computer science.
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.
Functional Programming
Functional Programming is another way of implementing software, by dividing the programs into pure functions. In simple terms, a functional program focuses on results, not on the process and the emphasis is on what is to be computed? Functional programs avoid the concepts of shared state and mutable data as we typically observe in imperative and Object-Oriented Programming languages.
Functional languages emphasize on expressions and declarations rather than execution of statements. Therefore, unlike other procedures which depend on a local or global state, value output in functional programs depends only on the arguments passed to the function. Some of the key features of functional languages include pure functions, immutability, recursion, higher-order functions, curried functions, monads, dependent types, and type classes.