BSc (Hons) Computer Science

Course Length:
3 years full-time; 4 years full-time with the third year spent on industrial placement in a Computing, Digital Design or Information Technology field; 4-6 years part-time.
UCAS:
G400
Typical GCE A-level offer:
ABB or equivalent; see entrance requirements for alternative qualifications.
Entrance requirements:

If you do not have a Science- or Mathematics-based A-level, you should normally have at least Grade B at GCSE Mathematics. If you are already studying for the BSc in Computing and Information Systems on the University of London External Programme, you may transfer onto the second year of this degree.

If your first language is not English, please check our English Language requirements.

After completing this degree, you will have a strong understanding of how to design, develop and apply software in all areas of commerce and industry. You will have a clear sense of the issues involved in building and maintaining reliable software for the sophisticated demands of today's market and for the software industry as it develops throughout the 21st century.

What you study

Courses are taught by a combination of lectures, tutorials, workshops and laboratory sessions.

Our degrees include an optional industrial placement year between the second and final year of study. Although we encourage you to take the opportunity of a placement year, you can also complete your degree in a straight three years.

First Year Courses

Semester One Semester Two
Introduction to Programming
Mathematics
Introduction to Digital Media Audio-Visual Computing
Web Programming
Problem Solving for Computer Science

Second Year Courses

Semester One Semester Two
Principles and Applications of Programming
Software Projects
Algorithms Internet and Distributed Programming
Databases, Networks and the Web

The Final Year

Semester One Semester Two
Option 1 Final Year Project
Option 2
Option 3
Option 4

Your final year consists of option courses and a major project, in which you apply your new technological skills to solve real-world problems in innovative and practical ways.

here is an example project.


Introduction to Programming

This course teaches the basics of programming using a Java-based programming language called Processing. You will be introduced to programming to develop interactive graphical applications, including games. No previous programming knowledge is assumed. Topics include: drawing on screens, interaction with mice and keyboards, simple statements, variables and conditionals, for and while loops; loops within loops, arrays; functions, objects and classes, and inheritance.

Lecturer Matthew Yee-King

Introduction to Programming Course Materials

Mathematics

Students will learn the basic mathematics required for the rest of their program. Topics include:
  1. Set Theory
  2. Boolean Logic
  3. Functions and Relations
  4. Lists and Trees
  5. Numbers in Different Bases
  6. Probability

Lecturer Lahcen Ouarbya

Mathematics for problem solving Course Materials

Problem Solving for Computer Science

Students will be introduced to a number of classical problems in Computer Science and their soutions including:
  1. Computing roots of equations
  2. Converting numbers between bases (e.g. binary to decimal)
  3. Fibonacci Numbers
  4. Factoring Integers
  5. Greatest Common Divisor
  6. Counting Primes
  7. Sampling
  8. Random Walks
  9. Regular Expressions and Parsing
  10. Simulation of Turing Machines
  11. The Travelling Salesman Problem

Lecturer Lahcen Ouarbya


Introduction to Digital Media

See the the blog for more details.

Lecturer Mick Grierson


Audio-Visual Computing

This course will cover the technical fundamentals of computing techniques used in digital media with a particular focus on sound/music computing and computer graphics.The course will cover basic sound and graphics programming, covering a range of topics such as:
  1. MIDI
  2. sound waves and their properties
  3. sound synthesis
  4. mathematical methods (e.g. vectors, trigonometry, complex numbers)
  5. 2D Computer graphics
  6. image processing
  7. interactive graphics and sound
Students will be expected to implement a number of small pieces of software that demonstrate audio processing and graphics, and to analyse the use of digital media and digital content pipelines in a business setting.

Lecturers Marco Gillies and Matthew Yee-King

Audio-Visual Computing Course Materials

Web Programming

This course will be an introduction to HTML5, CSS3 and Javascript. Students will learn the fundamentals of client-side web programming. Topics include:
  • Introduction
  • Basic JavaScript: values, variables, and control flow
  • Functions
  • Data structures: Objects and Arrays
  • Error Handling
  • Functional Programming
  • Searching
  • Object-oriented Programming
  • Modularity
  • Regular Expressions
  • Web programming: A crash course
  • The Document-Object Model
  • Browser Events
  • HTTP requests
  • Have a game of Hangman (This is the sort of program you'll write in Web Programming)

    Lecturer Kate Devlin

    Web Programming Course Materials

    Introduction to Social Computing

    This module will approach the world of social media through the lens of computing. It will explore how the affordances of social technology enable both digital culture and social impact. By the end of this course, students will have developed a critical and constructive approach to social media and social computing. They will gain insight in to the diversity of social media, it's basis in programming, and different ways to understand its impact. They will experiment with a wide variety of social media tools as well as methods for analysis and visualisation. Students will understand through practice how to apply their own skills in computer science to the world of social technology.

    Lecturer Dan McQuillan



    Principles and Applications of Programming

    This course covers the following topics:
    • Program development on a primary (Java) and secondary platform (Android)
    • Fundamental data structures and algorithms
    • Computational complexity, run-time efficiency
    • OO design and implementation
    • General features of programming languages e.g. type, abstract data types, the memory model, virtual machines, scope
    • Libraries
    • Specific language features: primitive and reference types, class and instance variables, overloading, string manipulation, input and output streams, serialisation, Internet connectivity, error handling, generics, threads, memory management
    • Advanced software techniques: concurrency, Internet programming, GUI and event driven programming
    • Android application development

    Lecturer Tim Blackwell

    Principles and Applications of Programming course materials.

    Databases, Networks and the Web

    This course consists of two parts:

    Databases

    An understanding of Databases is essential for all Computer Scientists interested in `real word' applications. This is an introductory course into the theory and practice of databases using PostgreSQL (the world's most advanced open source database) and one of the starting points for the development of the new generation data warehouse technologies (including IBM's Netezza).

    The course will present the functionality of database management systems, and will focus on the study of the relational databases and of the most used database programming language, SQL, in particular of its data definition and data manipulation components. Practical work on SQL will be illustrated in labs using the client server architecture, in particular by employing pgAdmin software as client on local machines, and PostgreSQL as database server running on a central server machine. The course will present also elements of database design, which is a key component in the process of building optimal database systems.

    Due to the SQL standard implemented by PostgreSQL, students get the necessary skills to write portable SQL database code which can run on any other relational databases supporting this standard, including Oracle, MySQL, SQL Server, etc.

    The database theoretical and practical elements studied in term 1 will prepare students for tackling the next phase in building database applications - consisting in adding web interfaces to databases, which will be studied in term 2.

    Lecturer Daniel Stamate

    Databases course materials not yet available.

    Networking and the Web

    PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document. PHP also generates SQL commands to query and update databases.

    This is mainly a PHP course for server-side web-programming. Students will develop applications in term 2 which will integrate web programming with database access. Students will also learn about basic network topologies and TCP/IP protocol stack, IP addressing etc.

    Lecturer Rodger Kibble

    Networking and the Web course materials not yet available.

    Software Projects

    Software Engineering (SE) is about designing, implementing, and modifying software so that it is of high quality, affordable, maintainable, and fast to build. It is a systematic approach to the analysis, design, assessment, implementation, test, maintenance and re-engineering of software, that is, the application of engineering to software.

    This is a 100% coursework unit. The coursework is a software engineering user-centred group project that is chosen by the students in each group. Term 1 involves deciding on the project and creating a proposal: undertaking research about the intended users, designing with the users in mind, and prototyping the software. In Term 2, this proposal is implemented and the groups create their software. Each group has a member of academic staff allocated to them as a supervisor. Lectures cover the main principles of user-centred design and software engineering, and also include research methods. Groups will also give presentations and lead discussions in a seminar style setting.

    Lecturer Kate Devlin

    Software projects course materials.

    Algorithms

    Algorithms are essential to the way computers process data. Many computer programs contain algorithms that specify the specific instructions a computer should perform (in a specific order) to carry out a specified task, such as calculating employees' paychecks or printing students' report cards. Thus, an algorithm can be considered to be any sequence of operations that can be simulated by a Turing-complete system.

    Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty. In this context, a computational problem is understood to be a task that is in principle amenable to being solved by a computer (which basically means that the problem can be stated by a set of mathematical instructions). Informally, a computational problem consists of problem instances and solutions to these problem instances.

    Topics include:
    1. Timing Programs and drawing graphs of the size of the input against the time
    2. Big O notation.
    3. Understanding the difference between linear, O(n log(n), quadratic, polynomial, and exponential time.
    4. Efficient vs. Inefficient Alorithms
    5. Using built-in Data structures; List, Sets and Maps
    6. Recursion
    7. User-defined tree-like structures
    8. Tree and Graph maniputlation
    9. Divide and Conquer algorithms
    10. Shortest-path algorithms

    Lecturer Sebastian Danicic

    Course Materials

    Internet and Distributed Programming

    In this course you will learn to do low-level socket programming in Java which enables computers on different nodes of a network to communicate with each other. These computers, could, in fact be anywhere on the Internet. A key feature of these techniques is to be able to write concurrent (multi-threaded) code.

    You will also learn about important features such as Object Serialisation and how to enable Java programs to communicate with a database server. This will enable you to combine the SQL techniques you will learn in the Databases course in Semester one.

    Topics include:
    1. Sockets in Java
    2. Multi-threading
    3. Multi-threaded Servers and Clients
    4. Web Spiders and Crawlers
    5. Interacting with a database in Java
    6. Object Serialisation

    Using these techniques you will produce interesting and useful distributed applications. You will learn how to program clients and servers and to enable them to comunicate accros the internet. These techniques have many applications including chat systems, communication on mobile phones and social networking systems.

    Lecturer Sebastian Danicic

    Course Materials

    Current Final Year Options

    NEURAL NETWORKS

    The course introduces the theory and practice of neural computation. It offers the principles of neurocomputing with artificial neural networks widely used for addressing real-world problems such as classification, regression, pattern recognition, data mining, time-series prediction, etc.. Two main topics are covered: supervised and unsupervised learning. Supervised learning is studied using linear perceptrons, and non-linear models such as probabilistic neural networks, multilayer perceptrons, and radial-basis function networks. Unsupervised learning is studied using Kohonen networks. Recurrent networks of the Hopfield type are briefly covered. There are offered contemporary training techniques for all these neural networks. Knowledge and tools for the specification, design, and practical implementation of neural networks are also provided.

    Lecturer Nikolay Nikolaev


    INTERACTION DESIGN

    This course provides an understanding of the theoretical and methodological issues that can be applied to the design and evaluation of interactive computer-based systems.

    Lecturer Kate Devlin


    COMPUTER SECURITY

    The overall intention for this half-unit is that you become familiar with the need for security in computer systems and know about particular techniques which are in current use for solving them. You should know how these techniques can be applied and the range of problems where they are applicable. Other units of your programme also look at the security of systems. So you may well be familiar with the need for security for distributed systems, databases and the internet. You may know, for example, that public key cryptosystems (also known as asymmetric cryptosystems) solve some of the problems of key management and authentication. It is the intention of this course to help you understand not only what these techniques can do but how they do it. This will provide you with a knowledge for the potential and reliability of these techniques and should equip you with a sound basis for learning developments as they happen in the future.

    Lecturer Ida Pu


    ELECTRONIC COMMERCE

    This course is aims to familiarize individuals with current and emerging electronic commerce technologies using the Internet. The goal of this course is to provide students with a detailed analysis of the concepts and techniques required to complete the 3rd year course on electronic commerce. In achieving this, a further goal is to equip students with a detailed understanding of the major issues regarding the deployment of Internet technologies within organisations and between organizations. Topics include Internet technology for business advantage, managing electronic commerce funds transfer, reinventing the future of business through electronic commerce, business opportunities in electronic commerce, electronic commerce Web site design, social, political and ethical issues associated with electronic commerce, and business plans for technology ventures. The purpose of this course is to educate a new generation of managers, planners, analysts, and programmers of the realities and potential for electronic commerce.

    Lecturer James Ohene-Djan


    DATA MINING

    This course covers machine learning and statistical techniques applied in the discovery of knowledge or hidden patterns in potentially large volumes of data, field known as \u201cData Mining\u201d. The course also offers pointers towards new developments of the field as those concerning the multimedia data mining, in particular the text, web, and music data mining. Upon completion of this course students will posses theoretical and practical knowledge regarding a broad collection of Data Mining algorithms and Data Mining practices, and will be able to code such algorithms in a programming language and to use them with specialised machine learning software in concrete applications.

    Lecturer Daniel Stamate


    ARTIFICIAL INTELLIGENCE

    The course introduces the essential principles of artificial intelligence as part of computer science. The emphasis is on heuristic problem solving methods. The course material includes the following topics: heuristic search techniques, knowledge representation, rule-based systems for deductive problem solving, search-based planning, and inductive machine learning. The covered heuristic techniques are: depth-first search, breath-first search, iterative deepening, bidirectional search, hill climbing, and adversarial search. There are provided guidelines for implementing practical expert systems, planning systems and empirical learning systems with version spaces using the candidate elimination algorithm

    Lecturer Ida Pu


    ADVANCED AUDIO-VISUAL PROCESSING

    Advanced Audiovisual Processing aims to enhance students' skills and experience in the development of software for the creation and manipulation of sounds and images, both in real and non-real time. The course extends the principles of creative engineering for use in arts, games and more general interaction scenarios so that students can develop their own projects through the use of computational approaches to audiovisual processing.

    Lecturer Mick Grierson


    PHYSICAL COMPUTING

    Physical Computing is of increasing interest to artists, musicians, choreographers and other creative practitioners for the creation of novel artworks and also for forms of computational interaction between these objects and people. There are many other applications of Physical Computing, for example in museums, ubiquitous and embedded computing, robotics, engineering control systems and Human Computer Interaction. A physical environment may be sonic, tangible, tactile, visually dynamic, olfactory or any combination of these. The course will explain and demonstrate how the environment, which is essentially continuous can be monitored by analogue electrical and mechanical sensors. Computers, however, are digital machines programmed by software. A focus of this course, therefore, 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. The course will be taught as a series of seminars and lab sessions oriented around the popular Arduino platform and development environment.

    Lecturer Brock Craft


    ADVANCED GRAPHICS AND ANIMATION

    This course will cover advanced methods used in current state of the art graphics and animation systems. This course will cover the mathematical foundations, computational techniques and their use in creative practice.

    Lecturer Kate Devlin


    Application enquiries

    Please see how to apply for information on applying to this programme.


    Equivalent GCE A-level qualifications

    BTEC National
    Diploma
    Access
    courses
    Scottish
    qualifications
    European
    Baccalaureate
    International
    Baccalaureate
    Other
    requirements
    DDM/DMM 60 Credits including 45 Credits at level 3 (with Merits in related modules) BBBBC (Higher)
    BBC (Advanced Higher)
    75% 6, 6, 5 at HL GCSE Mathematics Grade B

    Facilities:
    The Department has excellent computing facilities for teaching and laboratory work, supporting Windows, Linux and Mac OS X. There are three departmental laboratories, plus a laboratory for final year students working on specialised projects on networking and communications.
    Skills:
    Our degrees are designed to equip you with a wide range of knowledge and skills to meet the current demands of the industry and increase your career prospects.
    Careers:
    In terms of job opportunities and salaries the IT sector is well ahead of most other industrial and commercial sectors. Careers include web developer, software architect, software engineer, software developer, systems analyst, systems engineer, systems programmer, systems administrator, network administrator, web master, software project manager, software project leader, software development manager, database manager. Employers increasingly demand that new recruits are able to add immediate value to their organisation. Because this programme offers the option of an industrial placement year, students can demonstrate that they have already achieved a certain level of professional competence and maturity, which could help you stand out in the job market.
    Fees:
    Please see Undergraduate tuition fees.
    Find out more:
    contact the Programme Leader for Computer Science, Sebastian Danicic.

    The Computer Science Team

    You will be taught by leading experts in the Department of Computing including: