BSc in COMPUTER SCIENCE (CS)

Denning School for Artificial Intelligence & Computer Sciences

Program Overview

BSc in Computer Science offered by the University of London provides students with the skills and knowledge in understanding computing skills with a strong programming and mathematics focus, it assists students in learning skills in project management, game development, artificial intelligence, software development, presentation and teamwork which employers value. The program has been curated by Goldsmith University of London which is one of the top computing schools in the UK. Students who opt for this program have an option to select their Majors in machine learning, algorithms and data structure, artificial intelligence, virtual reality, mobile development and databases and networking.

Modules

Year 1 Modules Year 2 Modules Year 3 Modules
Semester 1 Semester 2 Semester 3 Semester 4

Semester 5
(any three)

Semester 6
(any three)

Introduction to Programming I

Introduction to Programming II

Object Oriented Programming

Computer Security

Artificial Intelligence

Physical Computing and the Internet of Things

Computational Mathematics

Discrete Mathematics

Software Design and Development

Graphics Programming

3D Graphics and Animation

Advanced Web Development

How Computers Work

Fundamentals of Computer Science

Databases, Network and the Web

Algorithms and Data Structure II

Mobile Development

Virtual Reality

Web Development

Algorithms and Data Structure

Agile Software Projects

Programming with Data

Data science

Databases and advanced data techniques

Machine learning and neural networks

Games development

Level 4 (Year 1)

Introduction to programming I [CM1005]
This module is focused on basic programming techniques. By taking this module, you will learn how to use the basic elements of computer programming such as variables, conditionals, functions and loops. You will also learn how to create interactive, graphical computer programs. You will also be introduced to basic object-oriented programming techniques.
Introduction to programming II [CM1010]
This module is focused on adding to the basic programming skill set you developed in Introduction to Programming I and giving you experience working with existing code and third-party libraries. By taking this module, you will learn how to customise existing code, to implement basic object orientation and to work with a range of third-party libraries.
Computational mathematics [CM1015]
This module helps you hone your skills in thinking abstractly. It also introduces you to many of the standard continuous models used to help understand and design computational systems. Through this module, you will develop the fundamental computational mathematical tools that will support you throughout the BSc programme. Particular attention is paid to notions of experimentation, reasoning, and generalisation. By taking this module, you will learn a wide range of the computational mathematical concepts and techniques that underpin Computer Science. In particular, you will study number systems, special functions, graphing and linear algebra.
Discrete mathematics [CM1020]
This module helps you to hone your skills in thinking abstractly. It also introduces you to many of the standard discrete models used to help understand and design computational systems. Through this module, you will develop the fundamental discrete mathematical tools that will support you throughout the BSc programme. Particular attention is paid to notions of experimentation, reasoning, and generalisation.
Fundamentals of computer science [CM1025]
By taking this module, you will gain a broad understanding of many of the key topic areas in computer science and the fundamental concepts that underpin them. In the area of fundamental concepts, you will study binary representations and logic, complexity theory and theories of computation, finite state machines and Turing machines. Building on this, you will then study key areas of interest in computer science including databases, artificial intelligence, and machine learning. These will be presented in the light of practical examples to illustrate how they are implemented in modern computer systems.
How computers work [CM1030]
This module aims to help you understand, and to interact with, computer systems. You will learn how to use knowledge about computational processes to analyse and explain the behaviour of computer systems. The module will use the concept of a Notional Machine, an abstract representation of the functioning of a computer system, to help you to reason about computer systems and to predict their behaviour. You will also learn about typical computer system architectures, basic networking and network services such as databases.
Algorithms and data structures I [CM1035]
This module aims to help you to develop your analytical and problem-solving skills, particularly concerning thinking algorithmically. The module will encourage you to start thinking about how to use computers to solve problems. You will develop skills in thinking algorithmically and learn the central concepts of algorithms and data structures. You will learn about linear data structures such as arrays, vectors and lists, and a unifying framework for considering such data structures as collections. You will learn how algorithms can be expressed as flowcharts and pseudocode, and how to convert these expressions into running programs. You will learn specific algorithms used for sorting and searching, and how to express repetition as iteration and recursion. You will learn a simple model for execution of computation, and how to describe computational problems and their solutions. The model will allow you to compare algorithms regarding their correctness and regarding their efficiency.
Web development [CM1040]
This module aims to provide you with a foundational web development skill set. You will learn the critical languages of the web: HTML, CSS and JavaScript. Using HTML and CSS, you will learn how to markup, layout and style web content. You will learn about the document object model and how you can dynamically manipulate it with JavaScript to create interactive web pages. You will consider accessibility and usability issues, and how you can overcome them. You will learn about website deployment and how you can use it to make your websites accessible to other people. The module will also enable you to present your work online in the form of a website.

Level 5 (Year 2)

Object oriented programming [CM2005]
This module aims to provide you with an object-oriented programming skill set. You will learn what objects and classes are and how to write your classes. You will see how objects can interact with each other, including defining and implementing interfaces to control the interaction. You will learn how to use inheritance to inherit and extend functionality from parent classes. You will learn how to write code according to style guidelines and how to write formal code documentation.
Software design and development [CM2010]
This module aims to advance your software development skills so that you can write more robust and complicated programs. You will learn how to use a range of programming techniques that will allow you to deal with unwanted or unexpected events that might happen when your application is running. You will use defensive coding to check data before processing it, and exception handling to gracefully manage unforeseen or unwanted occurrences. You will learn how to discuss program structure concerning cohesion (how to meaningfully organise code into modules) and coupling (how to define the interactions between different parts of the program). You will learn about test-driven development, where you write tests for your code, and write the code itself, in parallel. You will also learn how to use software versioning tools to manage a software project as it develops.
Programming with data [CM2015]
This module will show you how to work with data: getting data from a variety of sources, visualising data in compelling, informative ways, processing data to make it useful and shareable, and reasoning with data to test hypotheses and make parameterised predictions. The module will also introduce you to a new language and programming environment that is well-adapted to languages for these applications.
Agile software projects [CM2020]
This module aims to provide insights and practice in software development using contemporary methods to produce software that meets the needs of users and supports an organisation’s business function. The module will enable you to gain competence in the conceptualisation of a technology-based solution to a real-world problem, fulfilling the requirements of users and taking constraints imposed by the prevailing and foreseen market conditions and lessons learned from prototypes into account. You will then be given the opportunity to present a proposal for a technical project including a structured plan for implementing the solution using the agile development methodology and test driven development practices. During the whole process from concept to solution presentation, you will be required to work in a distributed team using online collaboration, project tracking and version control tools.
Computer security [CM2025]
This module aims to provide you with an understanding of the need for computer security and the technologies that support it. It has both a theoretical component that will teach you mathematical underpinnings of security systems and a practical element that will help you discover the pitfalls of security design and to comprehend the mathematics underlying the protocols by programming small examples.
Graphics programming [CM2030]
This module aims to show you how to work with images in a variety of ways. You will learn how to synthesise graphics and how to process visual signals. You will learn about the mathematical ideas that underpin digital representations of graphics; how digital media files represent graphics, and how to handle and manipulate them; and the basics of working with simulated physics and 3D graphics.
Algorithms and data structures II [CM2035]
This module aims to provide you with detailed knowledge of several common algorithms and data structures. You will improve your understanding of searching and sorting and learn new algorithms to solve new problems. You will learn about a range of data structures such as trees, heaps, sets, maps, stacks, queues and graphs. You will learn how to evaluate and describe the performance of algorithms using big-O notation. You will learn: how to choose appropriate data structures for representing problems, how to define and implement algorithms for manipulating them, and how to analyse the correctness and efficiency of algorithms. You will be expected to have mastered the material in Algorithms and Data Structures I before attempting this module.
Databases, networks and the web [CM2040]
In this module, you will learn theory and practical skills focused on the modern web, internet and client-server applications. You will learn about relational database systems, mainly from a development perspective, emphasising issues related to data modelling and database implementation in SQL. You will learn how to model data in a database, retrieve data from the database and provide access to data through dynamic websites. In particular, you will learn about the Relational Model, Query processing, and socket architectures to enable communication.

Level 6 (Year 3)

Data science [CM3005]
By taking this module, you will gain a data science skillset. With these skills, you will be able to write computer programs that can read, process and analyse textual and numerical data. You will be able to generate plots and interactive visualisations of data. You will understand how to apply statistical methods to the interpretation of results. You will be able to use data analysis in the decision-making process. You will also learn about a range of application domains for data science.
Databases and advanced data techniques [CM3010]
This module aims to show you how to work with data in your computer programs. You will learn how to use SQL and NoSQL databases to store tabular data and documents. You will learn about the ethics of gathering and processing data and why it is important to consider issues around data security. You will learn about open data resources, and how you can access them from your computer programs. You will learn about audio and video data, and the challenges of working with this kind of data.
Machine learning and neural networks [CM3015]
This module provides a broad view of machine learning and neural networks. You will learn how to solve common machine learning problems such as regression, classification, clustering, matrix completion and pattern recognition. You will learn about neural networks and how they can be trained and optimised, including an exploration of deep neural networks. You will learn about machine learning and neural network software libraries that allow you to develop machine learning systems rapidly, and you will learn how to verify and evaluate the results.
Artificial intelligence [CM3020]
This module is focused on Artificial Intelligence techniques. You will understand the historical development of Artificial Intelligence including search, vision and planning. You will become familiar with the foundations of agent-based approaches to software design, decision making and problem solving including under uncertainty. You will have an opportunity to apply Artificial Intelligence techniques to particular problems such as game playing and decision making.
Virtual reality [CM3025]

The module will combine the theory and psychology of VR with practical development skills. You will learn the skills needed to design compelling VR environments and the skills that apply to creative practice, science and industry.

This module aims to give you the skills needed to develop VR. These skills include understanding the basic theory of presence in VR, which underlies the basic design principles. You will also learn practical development skills, using an appropriate 3D engine to create interactive virtual environments. These skills will include creating 3D environments, designing and implementing 3D interaction for VR and building social VR experiences with interactive virtual characters.

Games development [CM3030]

This module will introduce you to i) industry standard tools for game development, such as game engines, and ii) the process of game development, including prototyping and playtesting. You will undertake a short series of game development projects, each lasting a set number of weeks and with a specific brief. For each project, you will propose a game that fits the brief, and then you will implement it. You are expected to deliver the proposed game and document it thoroughly. Through this process, you will develop an awareness of intended audience and the use of media for documentation.

Contemporary video game production draws on a range of techniques from artificial intelligence (AI) to perform tasks such as controlling virtual agents and generating novel game content. This module will also introduce crucial game AI concepts. Compared to mainstream AI, the emphasis is less on optimal problem solving and more on entertaining the player with limited computational resources. This module gives students practical experience of programming game AI systems and an understanding of the relevant theory.

Advanced web development [CM3035]
Through this module, you will learn how to build dynamic, data-driven websites using databases, front-end frameworks and server-side programming. This module provides the skill set required to do full stack web development work. By studying this module, you will develop a web developer skill set that enables you to understand how to build and deploy complete, data-driven websites. You will consider several different technologies for client side-web development such as HTML, CSS, JavaScript and templates. You will explore methods for developing server-side web applications, by building web-accessible wrappers around databases. You will consider issues of scalability, and learn about web application configuration and deployment.
Physical computing and the internet of things [CM3040]

This course provides an introduction to the development and programming of hardware devices that can sense and act in the environment. The course will explain and demonstrate how the environment, which is inherently continuous, can be monitored by analogue electrical and mechanical sensors, then captured and analysed using a computer, which is a discrete system. A focus of this course is the interface between the digital and the analogue.

This study encompasses basic physics, electronics, programming and software engineering. The practical objective of this course is the development of the skills needed for designing and building interactive physical devices.

3D graphics and animation [CM3045]
This module will cover advanced methods used in current state-of-the-art graphics and animation systems. It will include the mathematical foundations, computational techniques and their use in creative practice. By taking this module, you will learn how to write programs that generate animated 3D graphics. There are several distinct study areas: 3D modelling and animation, the graphics pipeline, simulation of physics and shader programming. You will study a range of examples, and through these learn how you can program computer graphics in contemporary graphical software for different applications.
Mobile development [CM3050]
This module aims to give you the fundamental understanding and skills needed to develop mobile applications. By studying this module, you will learn the principles of effective mobile user interface design and how to design and build user interfaces. You will learn about data-driven mobile applications, and how you can integrate a mobile application to a data source. You will learn about the mobile development ecosystem and how you can develop, run and test your applications. You will learn how to work with various sensors available on mobile devices using built-in APIs. The style of the modules will be practical, with a focus on developing functioning applications.
Final project [CM3070]
In this module, you will undertake a substantial independent project that will allow you to demonstrate a wide range of skills such as project planning, management, research, software implementation, and written presentation. If you are enrolled on a specialist pathway, either as part of the BSc or a graduate diploma, you will be expected to undertake a project in your specialist area. You will integrate the knowledge gained throughout the programme and use skills acquired in other modules in the implementation of your final project which will be in computer science or your specialist area. The work will consist of a combination of research and software development in various proportions. You will be expected to make use of methodologies from various components of computer science, including your specialist pathway if appropriate.

Assessment Structure

The BSc in Computer Science at Denning follows a dynamic assessment structure, balancing internal and external evaluations.

Internal Assessment

External Assessment

This includes assignments, practical work, examinations, presentation and projects. The internal assessment is designed to allow students to demonstrate their understanding and application of the knowledge and skills they have acquired through the course.

This includes exams and/or tasks that are set and marked by University of London, the awarding body. The external assessment is designed to provide an independent and objective measure of the student's knowledge and skills and is typically taken at the end of the course.

Eligibility Criteria

Qualification Grade Requirement English Language Requirement Mathematics Requirement Age Requirement Additional Procedures
A Levels or 2 Year Bachelors’ Degree (Standard Entry Route - 3 years) Minimum 3 A Level passes with C grade or above; or Minimum 2 A Level passes with C grade or above and at least 5 O Level passes with a minimum of C grade or above.
  1. IGCSE or GCE O-Level: English as a Second Language (grade C); or
  2. Duolingo: must achieve an overall score of at least 105; or
  3. IELTS: 6 overall, with 5.5 in each sub-test (Academic or General or IELTS Indicator Online Test)

Pass either GCSE Mathematics (Grade A*-B / 9-5) or AS Level Mathematics (A-E), or equivalent)

Or Complete the “Mathematics for Computer Science” course on the Coursera platform.

Min 17 or above by November 1, 2024 Passing of the Denning Interview. If the candidate has an average of Grade C or below they will have to appear for the Denning Admission Test
Intermediate (4 years) Minimum 60% overall percentage Intermediate students who want to opt for the computer science program will have to undergo a one year foundation program - math is a compulsory module which will need to be passed. Minimum 16 or above by November 1, 2024 Passing of the Denning Interview Passing of the Denning Admission Test

Fee Structure

The fee structure for the BSc CS is as follows:

Standard / CertHE Year 1 Year 2 Year 3

Tuition Fee

Rs. 335,000/-

Rs. 350,000/-

Rs. 350,000/-

Library Fee

Rs. 10,000/- Rs. 10,000/- Rs. 10,000/-

Student Activity Fee

Rs. 10,000/-

Rs. 10,000/-

Rs. 10,000/-

Admission Fee / Continuing Fee

Rs. 45,000/-

Rs. 15,000/- Rs. 15,000/-

Total Fees

Rs. 400,000/-

Rs. 385,000/-

Rs. 385,000/-

UOL FEE STRUCTURE - for all three years

Year Application Fee (non-refundable and one time fee) September Semester April Semester

Total Fees

Year 1

£ 60(deadline 16th Sep 2024)

£ 1394 (deadline 23rd Sep 2024) £ 1394 (deadline 18th Mar 2025)

£ 2,848/-

Year 2

-

£ 1,394 (deadline 23rd Sep 2025)

£ 1,394 (deadline 18th Mar 2026)

£ 2,788/-

Year 3 -

£ 1,394 (deadline 23rd Sep 2026)

£ 1,394 (deadline 18th Mar 2027)

£ 2,788/-