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).
Three years (full-time)
English
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.
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.
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.
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.
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.
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.
This module serves two purposes:
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.
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:
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.
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
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.
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 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.
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.
The group project’s overall goal is threefold,
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.
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.
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:
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.
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 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.
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.
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 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.
All BSc (Hons) Computer Science students will receive their undergraduate degree from Lancaster University’s Bailrigg campus in the UK.
A degree in Computer Science can open up a range of exciting career avenues, including the following roles: