Minahil Computer Science with Artificial Intelligence BSc · nottingham.ac.uk

Course overview

At Nottingham, we teach computer science from the ground up, ensuring you cover everything you need to know about the core foundations of the field. From day one, you’ll get involved in practical problem-solving experiences, getting to grips with how computers work.

You’ll explore topics like programming languages, user interfaces, security, computer ethics and artificial intelligence. Our course offers a wide range of specialist modules that are informed by and linked to our cutting-edge research – including mixed reality, cyber physical systems, assistive robots and the Internet of Things. As you progress on the course, you’ll be able to specialise and tailor your degree to your interests and career ambitions.

10 modules

This module takes a practical approach to give students a basic understanding of the fundamental architecture of computers and software.

It will introduce low-level machine code instructions and show how these can be combined to form programs. We then look at higher-level programming structures, like conditional statements, loops, arrays and functions, to show how they’re implemented at machine code level. 


This module shows how modern computer systems are made of hierarchical layers of functionality which build on and abstract the layers below.

You’ll begin by learning how the simple building blocks of digital logic can be put together in different ways to build an entire computer. Then we’ll go on to consider how the design can improve performance, how multicore/ multiprocessor systems are programmed and the how the software in an operating systems manages computing resources. 


This module considers both the structure of databases, including how to make them fast, efficient and reliable, and the appropriate user interfaces which will make them easy to interact with for users. You will start by looking at how to design a database, gaining an understanding of the standard features that management systems provide and how you can best utilise them, then develop an interactive application to access your database.

Through the lectures and computing sessions you will learn how to design and implement systems using a standard database management system, web technologies and GUI interfaces through practical programming/system examples.


You will gain a broad overview of the fundamental theories and techniques of artificial intelligence (AI).

You’ll explore how computers can produce intelligent behaviour, and will consider topics such as the history of AI, AI search techniques, neural networks, data mining, philosophical and ethical issues, and knowledge representation and reasoning.


You will be introduced to the concept of software engineering and will be taken through the software development process: deciding exactly what should be built (requirements and specification), designing how it should be built (software architecture), development strategies (implementation and testing), and maintaining change (software evolution and maintenance).


You’ll cover the basic concepts in mathematics which are of relevance to the computer scientists.

These include:

  • logic
  • sets
  • functions and relations
  • graphs
  • induction
  • basic probability
  • statistics and matrices

You'll cover the following basic concepts in mathematics which are of relevance to the development of computer software. Topics which will be covered include linear algebra and calculus. 


You’ll learn how  a computer communicates with other computers at a fundamental level. This will help you to build an understanding of the fundamental architecture of computer networks.

We’ll examine how the layers of modern computer systems are implemented in practice, by comparing and contrasting different approaches to solve common problems.

You’ll also discover how modern IP networks can be programmed using the sockets API.


The module introduces basic principles of programming and algorithms. It covers fundamental programming constructs, such as types and variables, expressions, control structures, and functions.

You'll learn how to design and analyse simple algorithms and data structures that allow efficient storage and manipulation of data. You'll also become familiar with basic software development methodology.


In this module you will learn the basic principles of the object-oriented and functional approaches to programming, using the languages Java and Haskell. You will also see how they can be used in practice to write a range of different kinds of programs.


What I loved most was working in a diverse team and with a real industry sponsor. I used Python, AI and UX skills from my course in an agile, real‑world environment. It felt like doing an actual tech job and getting to know how the real industry works."

Read the original on nottingham.ac.uk ↗