Skip to Main Content
Female student working on computer

Computer Science
BSc (Hons)

Introduction

Computer science is a dynamic discipline with a diverse range of applications and career paths. This programme explores the theory and practice of innovative and experimental computer science, allowing you to develop well-rounded professional and technical skills.

This degree was 3rd in the UK for graduate prospects (The Guardian University Guide, 2020).

Duration

Three years (full-time)

Intakes

  • October
  • January (Foundation start)

Fees 2026/2027

  • International €18,500
  • EU/UK €11,100

Location

Language of Instruction

English

Page Section

Programme Overview

Computer science is a vast but specialised subject. As a result, our degree equips you with the technical and professional skills necessary to apply yourself to a broad range of careers. Our UK graduates have gone on to work with major technology companies such as IBM, Google, BBC, and BAE. Others have chosen to take their software design, development and management skills to SMEs. Some have set up their own technology-centric businesses. Many of our computer scientists also elect to study for MSc or PhD qualifications.

In the first year, you will receive a comprehensive understanding of the fundamental principles of the discipline, combined with their modern day application. Throughout your study, you will gain skills and experience from a range of modules: Software Development, Fundamentals of Computer Science, Professionalism in Practice, or Digital Systems. Taking a practical approach to learning, you are encouraged to build and analyse systems and software. You will also work with end user feedback to refine and adapt solutions.

After gaining an overview of the subject in the first year, you will be motivated by topics that become progressively deeper and more specialised throughout second and third year. You will explore the fundamental concepts of artificial intelligence, preparing you for the more advanced AI modules in third year.

Your third year gives you the opportunity to explore a range of well-constructed and enriching modules. You will undertake an individual project with one of our academics. This allows you to use and further develop the skills acquired throughout your degree.

Programme structure: We continually review and enhance our curriculum to ensure we are delivering the best possible learning experience, and to make sure that the subject knowledge and transferable skills you develop will prepare you for your future. The University will make every reasonable effort to offer programmes and modules as advertised. In some cases, changes may be necessary and may result in new modules or some modules and combinations being unavailable. Not all optional modules are available every year.

Year One Modules

Digital Systems

The creation of the microprocessor revolutionised global innovation and creativity. Without such hardware we would have no laptops, no smartphones, no tablets. Life changing technologies from MRI scanners to the Internet would simply not exist. This module provides an introduction to the field of Digital Systems – the engineering principles upon which all contemporary computer systems are based.

We study the elements that work together to form the architecture of digital computers, including computer processors, memory, data storage and input/output. We also unearth the ways in which these are enabled by digital logic – where George Boole’s theory of a binary based algebra meets electronics. Building on LZSCC.111 we also discover how the software programs we write translate to, and interact with, such hardware. Finally, we also study the effects of multi-process operating systems, and how these interplay with the capabilities and architecture of modern computers to optimise performance and robustness.

Fundamentals of Computer Science

Computing and data drive many critical elements of modern society, directly or indirectly. It’s vital that there is a strong theoretical foundation to Computer Science. This module begins by examining the hard questions central to Computer Science and reasoning itself to prepare you for the in-depth critical thinking and discussion required at university level. It then proceeds to cover the fundamentals in logic, sets, and mathematics of vectors, matrices, and linear algebra which have practical applications in software such as computer graphics. Algorithms, abstract data types, and analysis of algorithms is introduced to allow you to make reasoned decisions about the design of your programs. Finally, we investigate and apply the principles of Data Science to select, process, and analyse data, and examine the way programs and systems can be designed to efficiently support work with data and question the limits of conclusions that can be drawn from such systems.

Professionalism in Practice

This module is designed to provide students with a strong foundation in principles of responsible computing, covering the legal, social, ethical and professional challenges that that a practicing computer scientist regularly faces. It is strongly research-led, delivered by staff actively researching these issues, and draws upon contemporary examples of where technology has resulted in both benefits and harm to people and society. We then develop an understanding of the legal frameworks, professional codes, working practices and civil licenses designed to provide protection from these harms. Particular emphasis is placed on considerations relating to the need for computer systems to be trusted and trustworthy.

We discuss the use of participatory research methods in exposing real-world requirements for computing systems, and ensuring equitable distribution of benefits and harms of digital innovation across the population, in alignment with a changing legal landscape. Inclusive design practices through the development phases from research to implementation are reviewed, examining the prevalence and impact of the gender data gap, accessibility constraints and exploring the benefits of diversity in the workplace through real-world examples. We also discover ethical ways to practice personal and professional development for career progression.

Software Development

Software now forms a central aspect of our lives. From the applications we run on our phones to the satellites in space, all modern technology is enabled by software. This module provides an introduction to the field of Software Development – the processes and skills associated with designing and constructing computer programs. Assuming no previous knowledge of the field, we study the contemporary knowledge, skills and techniques needed to develop high-quality computer software. This includes a thorough treatment of the principles of computer programming and how these principles can be applied using a range of contemporary and established languages such as Python, JavaScript and C. We discover how programming languages can be classified and how to choose the best language for the task at hand.

We also investigate and apply the practical Software Engineering skills needed to ensure software is correct, robust and maintainable. These include techniques for problem analysis, design formulation, programming conventions, software commenting and documentation, testing and test case design, debugging techniques and version control.

Optional business modules

Students are required to undertake 40 additional credits from a selection of 1st year business management and accounting and finance modules.

Programme structure: We continually review and enhance our curriculum to ensure we are delivering the best possible learning experience, and to make sure that the subject knowledge and transferable skills you develop will prepare you for your future. The University will make every reasonable effort to offer programmes and modules as advertised. In some cases, changes may be necessary and may result in new modules or some modules and combinations being unavailable. Not all optional modules are available every year.

Year Two modules

Advanced Programming

This module serves two purposes:

  • Extending and reinforcing knowledge of object-oriented concepts and practice using Java (building on the knowledge, understanding and skills developed in SCC.110). More specifically, topics include inheritance, interfaces, method overriding, method overloading, class variables and methods, inner classes, polymorphism, recursion, class factories, reflection, generics, collections, immutability, enumerations, strong and weak object references, abstract classes, deep and shallow copy, access control and packages.
  • Provides broader exposure to advanced programming concepts and alternative programming language paradigms so that students gain an appreciation of the application domain and relative strengths, weaknesses and performance of each type of language and their domain of application. More specifically, this module illustrates how common tasks and idioms can be mapped between Object Oriented, Dynamic Scripting and Functional programming languages. As case studies, The Java, Python and Erlang languages are used, respectively. Other language concepts such as lambdas and list comprehensions are also introduced.

Algorithms

In this module we build upon the foundations of algorithms and their complexity to develop a deeper understanding of algorithmic approaches to computational problem solving. We explore computational complexity theory, which allows us to consider the very nature of computability – including non-deterministic polynomial (NP) complexity classes such as NP-hard, NP-complete and the classes of problems which cannot be solved. We discuss classical approaches to problem solving such as divide and conquer, recursion and parallel approaches, emphasizing their relative benefits and weakness to different classes of problem. We study advanced data structures in depth, such as tries, heaps, suffix arrays, k-d trees and distributed hash tables. We also explore the approaches for their efficient construction and use.

These theoretical aspects are grounded through practical work in the lab and placed in the context of case studies of extreme scale and embarrassingly parallel computing, derived from real-world problem domains introduced by invited speakers where possible. Finally, we explore key implications of algorithm performance including their impact on energy efficiency and sustainability to provide a coherent interface with other modules.

Computer Networks and Systems

This module aims to introduce the fundamental concepts underpinning present day telecommunications networks and the Internet with the aid of example applications such as electronic mail, file transfer, etc. The content is divided into a number of specific areas:

  • Fundamentals: this will introduce students to the fundamentals of data communications. It will focus on the key ideas of protocol stacks and layering: the need for individual layers to serve the layer above, providing functionality of its own, whilst then being served by the layer beneath. With specific emphasis on the network and transport layers, the module will then look at the base internet communication protocols, including IPv4, IPv6, TCP and UDP. The concepts of IP addressing and sub-netting will also be covered.
  • Routing: the second area will introduce the protocols used to support the routing of IP packets across the Internet; such protocols include BGP and RIP. Also covered at this point will be the concept of bootstrapping networked systems, looking at techniques to support network address discovery and allocation.
  • Data transmission: this area focuses on link layer issues around data transmission, including controlling signal transmission in networks, token vs. carrier sense based systems, and Ethernet. It will also look at home networking technologies such as ADSL, IPoA, and IPoE.

Network programming: to ensure a practical element to the module, this fourth area looks at techniques for programming network systems, socket programming, and basic protocol implementation. Application level protocols are also considered, HTTP, SMTP, etc… with a focus on Email as an example.

Human Computer Interaction

The course consists of 30 hours of lectures covering theoretical and practical topics in human computer interaction. Some topics will be dealt with through assigned directed reading to free lecture time for dealing with motivating examples and practical case studies. Laboratory work will reinforce lessons learnt during lectures giving students hands-on experience of design, implementation and evaluation of interactive systems.

Key Topics (lectures and directed reading) include

  • psychological underpinnings of human perception and cognition, i.e. different forms of perception, forms and processes of memory, motivation theories and their implications for design
  • requirements elicitation, e.g. qualitative methods such as interviews, observation, ethnography, cultural probes, and quantitative methods such as surveys and questionnaires
  • qualitative data analysis, e.g. grounded-theory
  • quantitative data analysis, including descriptive and inferential statistics
  • user-centred design and participatory design processes
  • evaluation design, e.g. planning user studies involving a range of methods such as field study, lab study etc.
  • practical issues in prototyping and implementation, including consideration of different fidelity of prototypes ranging form low fidelity and Wizard of Oz techniques to high fidelity prototype design
  • advanced topics and case studies, i.e. advanced mobile HCI, interaction with situated displays, etc.

Data Engineering

This module builds upon knowledge gained in Part I by providing a theoretical background to the design, implementation and use of database management systems, both for data designers and application developers. It takes into account all relevant aspects related to information security in the design, development and use of database systems. The course consists of a number of related sections, which range from single lectures to multi-lecture streams, depending on the required depth of coverage. The sections are as follows.

  • Introduction: we begin with a brief history of how the need for database management systems (DBMS) grew over time and how they are applied in day to day scenarios.
  • Database Design: before making use of a DBMS, we must capture our requirements : what data do we actually wish to model? We make use of the Extended Entity-Relationship (EER) model which is both a technique and a notation for designing the data in a DBMS independent way.
  • The Relational Model: now the de-facto standard for DBMS, this was a revolutionary step taken in 1970. We extensively examine the Model, looking at relational database systems, the model itself and the normalisation process, the relational algebra (the mathematical theory that underpins the model), the three schema architecture and schema definition in SQL. Finally, we look at how we can map the EER model into an equivalent Relational Model. The resultant database is then examined in terms of access rights and privileges.
  • A (re)Introduction to SQL: SQL is the de-facto standard for DBMS query languages. We look at both the DDL (data definition language) and DML (data manipulation language). We introduce the use of views, a powerful mechanism for providing privacy and security. We look at the Discretionary Access Control (DAC) features that allow the granting and withholding of access rights and privileges.
  • Accessing relational DBMS via Java: we explore the facilities of the JDBC and show how we can write applications in Java which connect with a relational DBMS (in practice, MySQL).
  • The Physical Model: as Computer Scientists, our students need an awareness of the techniques that allow rapid access to stored data. In this section, we examine the physical data organisation and associated access methods. We show under what circumstances the organisations can be applied, and we look at how queries can be optimised.
  • Transaction processing and concurrency control: a huge part of DBMS in practice is the need to support transactions and concurrency, allowing huge numbers of users to access the DBMS at any one time while still ensuring the consistency of the data. This stream examines the problems and solutions in depth.

Secure Cyber Systems

The module will provide information on Authentication, Authorisation & Accountability (AAA) and its building blocks. An emphasis will be given on authorisation, where access control models, policies and mechanisms will be examined. Main categories of existing cryptosystems (e.g. symmetric, asymmetric) will be reviewed to understand their use and offered security properties (e.g. confidentiality, integrity, non-repudiation) in practice. Operating systems security and network security concepts will be discussed, with connection to AAA and cryptosystems. An introduction to formal verification will discuss techniques that can be used to verify properties on cyber security systems. Example models of systems specified along with appropriate properties will be verified to assess their correctness.

Software Design

Software Development is a collaborative and professional process, requiring far more than a single individual undertaking programming activities. This module investigates the processes, tools, techniques and notations required to successfully undertake the development of commercial grade software. Focussing on the key non-functional parameters of software reuse, scalability, maintainability and extensibility we explore the benefits brought by the rigour associated with Object Oriented, strongly typed languages (such as Java). We practice the concepts of composition, inheritance, polymorphism, interfaces and traits and the commonly employed design patterns that they enable. We also study the processes and notations associated with defining the relationship and behaviour of complex computer software systems.

Artificial Intelligence Concepts

This module introduces the key ideas and fundamental principles of artificial intelligence (AI) and the types of problems that can be addressed by AI. We introduce the core concepts and philosophy of AI, including its history and definitions, classify the various approaches to AI, and discuss its presence in the modern world alongside its ethical considerations. We unearth the underlying principles of search spaces, knowledge representation and inference logic that form the core of rule based systems. We discover the principles of machine learning, emphasising clustering (e.g. k-means), classification (e.g. k-nearest neighbour) algorithms, linear regression and neural networks. This deep dive provides the essential grounding necessary to progress to modules in topics such as Machine Learning, Computer Vision and Natural Language Processing.

Group Project

The group project’s overall goal is threefold,

  • to give students the experience to execute a project through all stages (from initial design to implementation to the presentation of the results,
  • to work in groups to the demands of a client (or group supervisor),
  • to apply knowledge being gained in other courses within a project context. One relevant course in this context is SCC 110.

The actual project content may differ from year to year, and may consists of topics in the areas of game programming, computer graphics, user interfaces, mobile computing, or other areas. The course structure of a group project will be the same between different years. Students will get about 25 hours of contact time throughout the two terms, in addition to separate meetings with their group supervisor if necessary, and then will be expected to work independently as a group.

At the end, the students will have experience with a concrete, group development project covering all aspects and being executed in a real-world environment. In particular, the student will learn and apply their knowledge about prototyping, project planning, management and execution, game design, systems design, and/or testing strategies.

Further, a program or system will be implemented by the group. As part of the project, teams will deliver reports, code, and demonstrate a working system. They will present certain elements of their work in written, graphical and verbal forms through the production of materials which may include reports, a demonstration, and/or a presentation.

Programme structure: We continually review and enhance our curriculum to ensure we are delivering the best possible learning experience, and to make sure that the subject knowledge and transferable skills you develop will prepare you for your future. The University will make every reasonable effort to offer programmes and modules as advertised. In some cases, changes may be necessary and may result in new modules or some modules and combinations being unavailable. Not all optional modules are available every year.

Year Three modules

Quality of Scalable Software

In a world where computing has become ubiquitous, ensuring the quality of scalable systems is crucial for everyday life. The need for functionally correct and maintainable software has always been important. Due to the increase in available computing power, data, storage, and connectivity, as well as the growing usage of software in all parts of our lives, quality assurance both for front- and back-end systems requires support from different concepts and technologies.

This module explores various approaches to quality assurance for front- and back-end systems. It covers processes of software quality data acquisition, such as monitoring, load testing, and benchmarking, as well as the process of data analysis, including the data visualization and the usage of statistical tests. Additionally, the module discusses the use of cloud infrastructures for deployment and management of scalable applications. Through interactive lectures and small group practical sessions, students will study common approaches for quality-assured application development, testing, deployment, and observation in production.

Distributed Systems

The fundamental stream introduces fundamental principles that underpin modern distributed systems.

This consists of 20 hours of lectures covering the following topics for fundamental principles that underpin modern distributed systems and practical implementation using JAVA RMI:

  • introduction to distributed systems;
  • key underlying mechanisms: remote invocation (RPC/RMI), indirect communication, group communication; non-functional aspects in distributed systems: scalability, fault-tolerance and dependability, security; applications and services: distributed file systems, Google infrastructure.
  • Practical development of distributed systems using Java RMI and J2EE and also associated tools and techniques that can be employed. These include introduction to Java RMI; distributed systems design, security and Java RMI, the Java Messaging Service, Java Groups, and component architectures including Fractal and Enterprise Java Beans (EJB).

Languages and Compilation

Regular formative assessment that occurs throughout the module via laboratories, workshops, tutorials or supervision meetings. This regularly challenges the student in a supportive, low stress environment and allows them to evaluate their own progress based on feedback from trained SCC staff. A unified summative coursework assessment allows students to demonstrate their cognitive and practical skills in the topic area over an extended period of work. A summative online quiz also provides the opportunity to assess students’ knowledge and cognitive skills in a broad range of learning outcomes. A final summative examination assesses students’ ability to demonstrate knowledge based outcomes and to interpret, analyse and solve problems under controlled conditions.

Secure Cyber Physical Systems

This module discusses the security threats to cyber physical systems (CPS) – such as Industrial Control Systems, IoT, Smart Cities, and Connected Vehicles, and techniques to mitigate these threats. Compared to traditional computer systems CPSs have different characteristics (limited CPU, RAM, ROM, and energy) and are typically deployed in situ into the environment This impacts upon the security techniques that can be used and how they are used. The deployment environment necessitates that physical attacks on a system need to be considered in addition to digital attacks. This module introduces how to identify appropriate security techniques and protocols to use depending on the specifics of a CPS. This involves understanding how to write secure applications for CPSs, and alternative technologies to generic approaches such as Transport Layer Security (TLS). The module will also explain how the limitations of these systems impact the security guarantees that can be provided. In addition to security, this module will examine the safety and privacy threats CPSs will be subject to and explore the interconnectivity between them and security.

Computer Vision

Computer vision is a branch of artificial intelligence, in which we aim to develop computer based systems that can interpret and draw meaningful deductions from digital images. This module begins with the fundamentals to understanding image formation and information relating to the human visual system and some fundamental image interpretation methodologies, including convolution, edge detection and feature extraction and comparison. Key problems tackled in current research will be studied, including semantic segmentation, object detection and three-dimensional image interpretation. A range of approaches will covered, from low-level image processing to convolutional neural networks, which sits at the intersection of machine learning and vision, and is one of the most exciting research areas in artificial intelligence.

Deep Learning

This module will explore machine learning, which sits within the field of artificial intelligence and enables a computer to learn how to perform a task from data rather than traditional programming. We will study the key ideas and techniques of machine learning, which will help students to develop practical skills in problem solving and to understand the implications and potential of machine learning in business and society. We will begin by looking at real-world machine learning problems, challenges and fundamental techniques in current machine learning methodology. Building on this, we will cover a variety of approaches to machine learning, from decision trees to a wide range of deep neural networks, including multilayer perceptrons, convolutional neural networks, long short-term memory, autoencoder and generative adversarial networks.

Third Year Project

The Third Year Project is a substantial individual project, normally involving the principled design, implementation and evaluation of a substantial piece of software, experimental study or theoretical work. Each student choses their topic from a wide selection posted by potential supervisors. The project topic is normally selected prior to the start of the third year. The requirements of the degree scheme, the student’s interests and the supervisor’s area of expertise are taken into account during project allocation. The student normally receives at least bi-weekly guidance (of around 30 minutes) one-to-one from his/her project supervisor. Regular supervision ensures a required level of academic achievement and rigour is maintained throughout the project.

Programme structure: We continually review and enhance our curriculum to ensure we are delivering the best possible learning experience, and to make sure that the subject knowledge and transferable skills you develop will prepare you for your future. The University will make every reasonable effort to offer programmes and modules as advertised. In some cases, changes may be necessary and may result in new modules or some modules and combinations being unavailable. Not all optional modules are available every year.

Teaching and Assessment

Teaching is delivered via a combination of small group lectures and group-based tutorials. Assessment is via individual or group coursework, research projects and examinations. You will be expected to undertake independent study throughout to supplement what is being taught/learned and to broaden your personal knowledge.

Degree Award

All BSc (Hons) Computer Science students will receive their undergraduate degree from Lancaster University’s Bailrigg campus in the UK.

Careers

A degree in Computer Science can open up a range of exciting career avenues, including the following roles:

  • Applications developer
  • Cyber security analyst
  • Data analyst
  • Data scientist
  • Game developer
  • Information systems manager
  • IT consultant
  • Machine learning engineer
  • Multimedia programmer
  • Web developer
  • Web designer
  • Software engineer
  • QA/Test automation engineers

Student Testimonial

Play Video - Nellie studies BSc (Hons) Computer Science
Back to Top