This course is designed to produce high quality graduates command a sound technical knowledge of the broad aspects of computer science.
You will gain an appreciation of current computing practice and skills that you can apply immediately after graduation.
You will graduate with a sound knowledge of the fundamentals of computer science, including an appreciation of the interaction between hardware and software; an understanding of human computer interaction and the sociological impact of information technology; and knowledge of the professional standards and ethics of the computer industry, together with the skills and confidence to react to its ever-increasing rate of change.
This degree programme will prepare you for the growing demands of employers in various sectors as well as the opportunity to pursue postgraduate studies in computer science.
The degree is offered as a three or four-year programme depending on your entry qualification.
For domestic students the course structure follows the Chinese higher education system and is based on a four-year program with the possibility of spending two years at The University of Nottingham's UK campus.
For international students, with relevant qualifications, the course structure follows the UK higher education system and is based on a three-year program with the possibility of spending two years at The University of Nottingham's UK campus.
Year one (preliminary year)
This year is not compulsory for students with appropriate qualifications for year two entry.
The first year consists of a specially-designed intensive academic English programme to prepare students for their studies.
- Foundation Algebra for Physical Sciences & Engineering
- Undergraduate Reading and Writing in Academic Contexts
- Introduction to Programming and Algorithms
- The Scientific Method
- Undergraduate Listening & Speaking in Academic Contexts
- Undergraduate Academic Oral Presentations
- Foundation Science A
- Foundation Calculus and Mathematical Techniques
- Undergraduate English in Specific Academic Contexts b (Science & Engineering Pathways: Engineering; Computer Science; Environmental Science & Architecture)
| Title|| Credits|| Taught|
|Foundation Algebra for Physical Sciences & Engineering
|The Scientific Method
|Foundation Science A
|Undergraduate Reading and Writing in Academic Contexts
|Undergraduate Listening & Speaking in Academic Contexts
|Foundation Calculus and Mathematical Techniques
|Introduction to Programming and Algorithms
|Undergraduate Academic Oral Presentations
|Undergraduate English in Specific Academic Contexts b (Science & Engineering Pathways: Engineering; Computer Science; Environmental Science & Architecture)
Year two (qualifying year)
You will be introduced to the key concepts and tools underpinning modern computer science. You will learn how to program in Java, study the architecture and applications of computer systems and be introduced to the areas of mathematics you will need later in the course.
Typical Qualifying Year modules
AE1PGA: Programming and Algorithms
This module introduces basic principles of programming and algorithms. It covers fundamental programming constructs, such as types and variables, expressions, control structures, and functions. You will learn how to design and analyse simple algorithms and data structures that allow efficient storage and manipulation of data. You will also become familiar with basic software development methodology. You will spend around six hours per week in lectures, computer classes and tutorials.
AE1CSF: Computer Fundamentals
You will gain a basic understanding of the fundamental architecture of computers and computer networks. You will learn how the simple building blocks of digital logic can be put together in different ways to build an entire computer. You will also learn how modern computer systems and networks are constructed of hierarchical layers of functionality that build on and abstract the layers below. You will spend five hours per week in tutorials, lectures and computer classes.
AE1SYS: Systems and Architecture
This module runs alongside 'Computer Fundamentals' (AE1CSF) and provides an expanded view by considering how real computer systems (such as ARM, x86, Linux and *BSD) and networks work. You will also cover the principles of the lower level implementation of I/O using polling and interrupts, and the use of exceptions; how memory and storage is organized as well addressing the issues arising from multicore systems. You will spend around five hours per week in tutorials, lectures and computer classes.
AE1MCS: Mathematics for Computer Scientists
You will cover the basic concepts in mathematics that are of relevance to computer scientists. These include: logic; sets, functions and relations; graphs; induction, basic probability and statistics and matrices. You will spend around four hours per week in lectures and tutorials.
AE1DBS: Database and Interfaces
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; you will then develop an interactive application to access your database. Throughout 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.
AE1FSE: Software Engineering
You will focus on the fact that programming is only one step of the larger software engineering process. To develop good software, you must gather requirements, design it well, plan the development, do the programming, have a testing strategy, test the parts and the product as a whole, and have a maintenance strategy for after the system is delivered. You will spend around two to three hours per week discussing the stages in lectures, whilst carrying out activities in labs that help you understand the underlying issues.
AE1PGP: Programming Paradigms
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. You will spend around five hours per week in lectures and labs for this module.
AE1FAI: Fundamentals of Artificial Intelligence
You will gain a broad overview of the fundamental theories and techniques of artificial intelligence (AI). You will 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 spend two hours per week in lectures.
Year three (Part I)(Ningbo/Nottingham)
In this year you will consolidate what you have learnt so far by taking part in a software engineering group project. At the same time, you will study programming and the underlying theory of computation in greater depth and meet new topics, such as networks and the design of large scale systems. You will select one module each semester from a wide range of options.
Typical Part I modules
AE2ACE: Algorithms, Correctness and Efficiency
This module covers important aspects of algorithms, namely their correctness and efficiency. To address correctness we use a mathematically rigorous approach to formal verification using an interactive proof system. You will study topics such as: proofs in propositional logic and predicate logic; classical vs. intuitionistic reasoning; basic operations on types; verification of list based programs; and introduction to program specification and program correctness. To address the issue of efficiency we cover the use of mathematical descriptions of the computational resources needed to support algorithm design decisions. You will study topics such as: sorting algorithms, heaps, binary search trees, hashmaps, and graph algorithms. The emphasis is upon understanding data structures and algorithms so as to be able to design and select them appropriately for solving a given problem. You will spend about five hours per week in lectures, tutorials, and computer lab sessions.
AE2GRP: Software Engineering Group Project
Working in groups of around five to six people, you will be assigned a supervisor who will provide you with a short written description of a software engineering project to be completed over the course of the module. Each group will meet twice a week, once with your supervisor and once without; you will also have weekly 1-2 hour class sessions to support your team project work.
AE2OSC: Operating Systems and Concurrency
This course covers the fundamental principles that underpin operating systems and concurrency. Topics covered include the architecture of operating systems, process and memory management, storage, I/O, and virtualisation. The principles of concurrency will be introduced from both the perspective of an operating system and user applications. Specific topics on concurrency include: hardware support for concurrency; mutual exclusion and condition synchronisation; monitors; safety and liveness properties of concurrent algorithms, and the use of threads and synchronisation.
AE2LAC: Languages and Computation
You will investigate classes of formal language and the practical uses of this theory, applying this to a series of abstract machines ultimately leading to a discussion on what computation is, what can and cannot be computed, and computational complexity. You will focus in particular on language recognition, but will study a range of topics including: finite state machines, regular expressions, context-free grammars, Turing machines, Lambda calculus. Practical applications includes parsing. This module builds on parts of AE2ACE and introduces concepts which are important to understand the analysis of algorithms in terms of their complexity. You will spend two hours per week in lectures.
AE2SWM: Software Maintenance
This module builds on your basic Java programming and software engineering skills developed in Year 1, extending it to working with larger third party software systems, and the challenges associated with this. Topic examples include: design diagrams and modelling; GUI programming; testing software engineering methodologies (including agile development and tools), all in the context of understanding and refactoring third-party code. You will spend around two hours per week in lectures, three hours per week in computer classes, and one hour per week in workshops studying for this module.
In the second semester of Part I, students may choose modules from a list such as the following. (The actual list of optional modules may vary each year. The following is only indicative.)
AE2HCI: Human Computer Interaction
Through two hours of lectures each week, you will be given an overview of the field of human computer interaction, which aims to understand people's interaction with technology and to apply this knowledge in the design of usable interactive computer systems. You will also learn the concept of usability and examine different design approaches and evaluation methods.
AE2CPP: C++ Programming
You will cover the programming material and concepts necessary to obtain an understanding of the C++ programming language. You will spend around four hours per week in lectures and computer classes, and will be expected to take additional time to practice and to produce your coursework.
AE2IIP: Introduction to Image Processing
This module introduces the field of digital image processing, a fundamental component of digital photography, television, computer graphics and computer vision. You will cover topics including: image processing and its applications; fundamentals of digital images; digital image processing theory and practice; and applications of image processing. You will spend around three hours in lectures and computer classes each week.
AE2AIM: Artificial Intelligence Methods
This module builds on the first year Introduction to AI, which covers the ACM learning outcomes, and introduces new areas. The emphasis is on building on the AI research strengths in the School. As a Launchpad it gives brief introductions to topics including AI techniques, fuzzy logic and intelligent agents, and modern search techniques such as Genetic Algorithms, Tabu Search, Simulated Annealing, and Genetic Programming, etc. Students will also explore the implementation of some AI techniques. You will spend four hours a week in lectures and computer labs.
Year four (part II)(Ningbo/Nottingham)
In your final year you will select the majority of your modules from an extensive list of options. The main compulsory element is the individual project. Project topics are agreed in discussion with a supervisor. This will allow you to specialise in an area of interest such as computer forensics, computer vision, mixed reality or artificial intelligence.
Typical Part II modules
AE3PEC: Professional Ethics
The module looks broadly into professional ethics within the scope of the computing discipline. It covers a range of professional, ethical, social and legal issues in order to study the impact that computer systems have in society and the implications of this from the perspective of the computing profession. In particular, the module covers topics such as introduction to ethics, critical thinking, professionalism, privacy, intellectual and intangible property, cyber-behaviour, safety, reliability accountability, all these within the context of computer systems development. You will spend about two and half hours per week in classes and workshops.
AE3SEC: Computer Security
Spending four hours a week in lectures and computer classes, you will cover the following topics: security of the computer; security of networks; security and the internet; software and hardware security; mobile security; and basic cryptography.
In Part II, students may choose modules from a list such as the following. (The actual list of optional modules may vary each year. The following is only indicative.)
AE3IDS: Individual Dissertation Single Honours
Through several support lectures, and a meeting with your supervisor each week, you will develop your own independent research project and written report. Topics can range from purely theoretical studies to practical work building a system for a third party.
You will begin by considering the attempts to characterise the problems that can theoretically be solved by physically-possible computational processes. You will then consider the area of complexity theory, looking at whether or not problems can be solved under limitations on resources such as time or space. A key topic is an examination of the classes P and NP and the definition of the term NP-complete. You will spend around two hours per week in lectures.
AE3SQM: Software Quality Assurance
Through two to three hours of classes each week, you will be introduced to concepts and techniques for software testing and will be given an insight into the use of artificial and computational intelligence for automated software testing. You will also review recent industry trends on software quality assurance and testing.
AE3MLE: Machine Learning
Providing you with an introduction to machine learning, pattern recognition, and data mining techniques, this module will enable you to consider both systems which are able to develop their own rules from trial-and-error experience to solve problems as well as systems that find patterns in data without any supervision. This is now fashionably termed 'big data' science. You will cover a range of topics including: machine learning foundations; pattern recognition foundations; artificial neural networks; deep learning; applications of machine learning; data mining techniques and evaluating hypotheses. You will spend around six hours each week in lectures and computer classes for this module.
AE3GRA: Computer Graphics
You will examine the principles of 3D computer graphics, focusing on modelling the 3D world on the computer, projecting onto 2D display and rendering 2D display to give it realism. Through two hours per week of lectures and laboratory sessions, you will explore various methods and requirements in 3D computer graphics, balancing efficiency and realism.
AE3DIA: Designing Intelligent Agents
You will be given a basic introduction to the analysis and design of intelligent agents, software systems which perceive their environment and act in that environment in pursuit of their goals. Spending around four hours each week in lectures and tutorials, you will cover topics including task environments, reactive, deliberative and hybrid architectures for individual agents, and architectures and coordination mechanisms for multi-agent systems. You will spend about four hours per week in lectures and tutorials.
AE3VIS: Computer Vision
You will examine current techniques for the extraction of useful information about a physical situation from individual and sets of images. You will cover a range of methods and applications, with particular emphasis being placed on the detection and identification of objects, recovery of three-dimensional shape and analysis of motion. You will learn how to implement some of these methods in the industry-standard programming environment MATLAB. You will spend around four hours a week in lectures, tutorial and laboratory sessions. You will spend about four hours per week in lectures, tutorials, and computer labs.
AE3MDP: Mobile Device Programming
You will look at the development of software applications for mobile devices, with a practical focus on the Android operating system. You will consider and use the software development environments for currently available platforms and the typical hardware architecture of mobile devices. You will spend around three hours per week in lectures and computer classes for this module. You will spend about three hours per week in lectures and computer labs.
AE3PDC: Parallel Computing
A simple sequential computer program effectively executes one instruction at a time on individual data items. Various strategies are used in CPU design to increase the speed of this basic model, but at the cost of CPU complexity and power-consumption. To further increase performance the task must be re-organised to explicitly execute on multiple processors and/or on multiple data items simultaneously This module charts the broad spectrum of approaches that are used to increase the performance of computing tasks by exploiting parallelism and/or distributed computation. It then considers in more detail a number of contrasting examples. The course deals mainly with the principles involved, but there is the chance to experiment with some of these approaches in the supporting labs. Topics covered include: common applications of parallel computing; parallel machine architectures including Single Instruction Multiple Data (SIMD) or short-vector processing; multi-core and multi-processor shared memory; custom co-processors including DSPs and GPUs, and cluster and grid computing; programming approaches including parallelising compilers; explicit message-passing (such as MPI); and specialised co-processor programming (such as for GPUs). You will spend about three hours per week in lectures and computer labs.
You will examine aspects of language and compiler design by looking at the techniques and tools that are used to construct compilers for high level programming languages. Topics covered include: parsing; types and type systems; run-time organisation; memory management; code generation; and optimisation. You will spend around four hours each week in lectures and computer classes for this module. You will spend about four hours per week in lectures and computer labs.
AE3FIV: Fundamentals of Information Visualisation
Information Visualisation is the process of extracting knowledge from complex data, and presenting it to a user in a manner that this appropriate to their needs. This module provides a foundational understanding of some important issues in information visualisation design. You will learn about the differences between scientific and creative approaches to constructing visualisations, and consider some important challenges such as the representation of ambiguous or time-based data. You will also learn about psychological theories that help explain how humans process information, and consider their relevance to the design of effective visualisations. You will spend about two hours per week in lectures.
AE3DEV: Development Experience
Students taking part in activities relating to programming experience such as developing apps in their spare time, contributing to open source projects, or building things in hackathons may receive academic credit for showing they have experience and excellent development skills. The emphasis of this module is that you provide evidence of your significant extra-curricular software development experience. Students will only be able to register for this module with the approval of the convenor/school, once the material for assessment has been checked.
AE3IND: Industrial Experience
Students taking part in activities relating to industrial experience in a computer science or software engineering enterprise may obtain academic credit for them. A full list of approved activities is available from the School Office. Activities will be related to demonstration of involvement in development of complex software in a team situation, subject to quality control procedures of an industrial or business practice. Evidence of working to and completing tasks relating to targets set by an employer and directly related to software development/programming will be required. Students will have undertaken an agreed number of hours on the activities, identified personal goals and targets in relation to these activities and maintained a reflective portfolio as a record of evidence of their competence and achievements. The nature of the activities undertaken will be subject to the approval of the module convenor before acceptance on the module.
AE3SCE: Schools Experience
Students taking part in approved activities, such as running code clubs in schools, organising school computing activity days, or becoming active STEM ambassadors, may receive academic credit for demonstrating they have actively contributed to the development of younger students. Students will have undertaken an agreed number of hours on the activities, identified personal goals and targets in relation to these activities and maintained a reflective portfolio as a record of evidence of their competence and achievements. Students will only be able to register for this module with the approval of the convenor/school, once the material for assessment has been discussed.
Careers and further study
Of the 43 undergraduates who graduated from the department in 2018 and continued onto postgraduate studies, 91% were admitted by world top 100 universities according to the 2013-14 QS World University Rankings. Our graduates have gone on to work at major technology companies, such as Adobe, IBM and Microsoft, and are involved in creating the latest hardware and software products.