Core modules
Your first year will give you the background and skills to develop a deeper understanding of Computer Science including mathematical theory, programming and design of information structures.
The second year builds on this foundation to further your understanding of areas such as operating systems, computer networks and software engineering. In the first two years students will also be introduced to concepts in business by studying options available from the Warwick Business School.
In your third year of study, you will study with Warwick Business School, where you will learn about business and management practices. You will be able to choose from a wide range of options, for example, you may take modules covering marketing and strategy, finance and entrepreneurship.
In the first two years of the course, you will study a core group of modules and make up the required normal load for the year by choosing a set of optional modules.
Your third year comprises entirely of optional WBS modules. There may be requirements to be satisfied by the module choices. For example, you may need to select a minimum number from a specific list or ensure that you meet prerequisites for some modules.
Year One
Programming for Computer Scientists
This module aims to help you develop your programming skills, regardless of your starting skill level. You will develop problem solving skills through the lens of procedural and object-oriented programming. Using the Java programming language, you will engage with practical work that shall enable you to learn concepts such as classes, encapsulations, arrays, inheritance and advanced topics such as multi-threading and reflection. By engaging with the Warwick Robot Maze environment, you can expect to gain skills in errors analysis and debugging that will help you produce well-designed and well-tested code.
Read more about the Programming for Computer Scientists moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Design of Information Structures
Following on from Programming for Computer Scientists, on the fundamentals of programming, this module will teach you all about data structures and how to program them. We will look at how we can represent data structures efficiently and how we can apply formal reasoning to them. You will also study algorithms that use data structures. Successful completion will see you able to understand the structures and concepts underpinning object-oriented programming, and able to write programs that operate on large data sets.
Read more about the Design of Information Structures moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Sets and Proofs
A sound knowledge of mathematical reasoning is an essential skill for computer scientists. Bridging the gap in style and content between A Level and university mathematics, this module will enable you to understand the basic terminology, and the role of formal definitions and mathematical functions in problem-solving. You will become familiar with common mathematical operations, elementary set theory and graph theory, relations, and the axiomatic method. You will also practice common proof techniques, laying the foundation for your ability to reason rigorously about the correctness of computational and algorithmic techniques.
Read more about the Sets and Proofs moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Computer Organisation and Architecture
You will gain a fundamental understanding of the functional components of a computer system, and how they are organised. You will focus on hardware and how it performs during the execution of software operations. You will also develop practical skills in the use and construction of computer components, and their interface with microprocessors. By the end of the module, you will be expected to understand the operation and organisation of electronic logic elements, the architecture of simple microprocessors, input/output mechanisms, memory systems and hierarchies, and digital circuits and their interface with microprocessors.
Read more about the Computer Organisation and Architecture moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Professional Skills
In your first term, you will gain a basic understanding of operating systems, together with a working knowledge of the computing systems and their associated tools and applications that will be used within the Department of Computer Science. With these foundations in place, you will then develop your communication skills, both in writing and orally, with due attention paid to appropriate academic and technical language. You will complete the course studying ethics and behaviour, looking at the place of computers in society and the legal aspects of computing.
Read more about the Professional Skills moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Logic and Automata
Computer Science is founded on logic and abstract machines (automata) to solve computational problems. Whether a computational problem is tractable in the first place or not, requires, for example, understanding of what Turing machines are, and of concepts such as decidability, reducibility and the halting problem. In this module, you will be introduced to formal methods for specifying and analysing the behaviour of computational systems, through studying algorithms and proof calculi for verification, as well as associated techniques, such as propositional and predicate logic and comparing the semantics of a variety of logics. In addition to learning about the basic connections between mathematical logic, formal languages, automata theory and verification by model checking, you will also learn and practise proof techniques for reasoning about the limits of various computational models.
Read more about the Logic and Automata moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2025/26 year of study).
Year Two
Operating Systems and Computer Networks
In this module, you will spend equal time studying the fundamental concepts of modern-day operating systems and computer networks respectively. With a practical bent, this will mean analysing the generic requirements, structure, operation and administration of a modern operating system. Whilst analysing, designing and writing programs in the light of network requirements and protocols; such as system interfaces, concurrency, deadlock detection and recovery, and security threats. Turning to networks, you will learn the relevant factors relating to LANs and WANs and wireless networks, client-server systems, routing algorithms, socket programming, and network management relating to performance, security and monitoring.
Read more about the Operating Systems and Computer Networks moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Database Systems
During this module, you will learn how relational database theory can be used to efficiently organise and retrieve large amounts of data. This includes a study of different relational query languages and practical experience of the SQL language that is widely used in industry. Successful completion will see you equipped to create appropriate, efficient database designs for a range of applications and to translate informal queries into formal notation. You will have learned to identify appropriate data constraints to ensure the integrity of the database and to mitigate various common security threats.
Read more about the Database Systems moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Algorithms
Data structures and algorithms are fundamental to programming and to understanding computation. In this module, you will be using sophisticated tools to apply algorithmic techniques to computational problems. By the close of the course, you’ll have studied a variety of data structures and will be using them for the design and implementation of algorithms, including testing and proofing, and analysing their efficiency. This is a practical course, so expect to be working on real-life problems using elementary graph, greedy, and divide-and-conquer algorithms, as well as gaining knowledge on dynamic programming and network flows.
Read more about the Algorithms moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Software Engineering
Centred on teamwork, you will concentrate on applying software engineering principles to develop a significant software system with your peers from feasibility studies through modelling, design, implementation, evaluation, maintenance and evolution. You’ll focus on design quality, human–computer interaction, technical evaluation, teamwork and project management. With a deeper appreciation of the stages of the software life-cycle, you’ll gain skills to design object-oriented software using formal modelling and notation. You will be taught the principles of graphical user interface and user-centred design, and be able to evaluate projects in the light of factors ranging from technical accomplishment and project management, to communication and successful teamwork.
Read more about the Software Engineering moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Linear Algebra and Calculus
This module follows on from CS130 Sets and Proofs. Linear and matrix algebra, sequences and series, and calculus are the cornerstones of mathematics that are required to solve a wide range of computational problems. In this module, you will learn how to carry out mathematical proofs, use effective techniques for the analysis and transformation of vector spaces, solve sets of linear equations, and perform operations of differential and integral calculus with confidence. You will understand how to apply conversion algorithms between different number systems and understand the properties of complex numbers.
Read more about the Linear Algebra and Calculus moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2026/27 year of study).
Probability and Statistics
This module introduces core probability and statistics concepts which are needed in many key aspects of computer science. You will learn about the basic probability concepts, such as discrete and continuous random variables, conditional probabilities, and density and distribution functions. These will help you to understand stochastic processes (Poisson processes and Markov chains) and basic concepts in statistics, such as Frequentist and Bayesian approaches, estimation, and hypothesis testing. Upon completion you will be able to demonstrate how you can formalise selected computational problems in terms of probabilistic and statistical models.
Read more about the Probability and Statistics moduleLink opens in a new window, including the methods of teaching and assessment (content applies to 2024/25 year of study).
Year Three
In the third year you will select from an extensive list of WBS modules. Some may be linked to prerequisite modules.
Optional modules
Optional modules can vary from year to year. Example optional modules may include:
- Advanced Computer Architecture
- Artificial Intelligence
- Business Law
- Computer Security
- Consumer Behaviour
- Design Thinking for Digital Innovation
- Entrepreneurship in Practice
- Foundations of Entrepreneurship
- Foundations of Finance
- Foundations of Marketing
- Functional Programming
- Improving Process Performance
- Web Development Technologies
Explore our full range of modulesLink opens in a new window