Year One
Programming for Computer Scientists
In this module whatever your starting point you will begin your professional understanding of computer programming through problem-solving and fundamental structured and object-oriented programming You will learn the Java programming language through practical work centred on the Warwick Robot Maze environment which will take you from specification to implementation and testing Through practical work in object-oriented concepts such as classes encapsulation arrays and inheritance you will end the course knowing how to write programs in Java and through your ability to analyse errors and testing procedures be able to produce well-designed and well-encapsulated and abstracted 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 2022 23 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 2022 23 of study)
Mathematics for Computer Scientists I
A sound knowledge of mathematical reasoning is an essential skill for computer scientists so in this module you will be provided with sufficient professional knowledge that will enable you to understand terminology and the role of formal definitions and mathematical functions in problem-solving You will become familiar with day-to-day mathematical operations including probability (Bayes’ theorem standard deviation and variance) propositional and predicate logic (Boolean operators truth values and various laws of logic) elementary set theory and graph theory (including Eulerian and Hamiltonian graphs) relations and the axiomatic method
Read more about the Mathematics for Computer Scientists I moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 of study)
Mathematics for Computer Scientists II
In this module you will gain sufficient mathematical knowledge to understand common mathematical operations and functions in computer science By the end of the module you will be expected to be able to carry out mathematical proofs analyse vector spaces and use linear equations and to perform operations of the differential and integral calculus with confidence and precision Specific topics you will cover include linear and matrix algebra sequences and series calculus and abstract algebra
Read more about the Mathematics for Computer Scientists II moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 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 2022 23 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 2022 23 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 2022 23 of study)
Database Systems
How does the theory of relational algebra serve as a framework for the efficient organisation and retrieval of large amounts of data? During this module you will learn to understand standard notations (such as SQL) which implements relational algebra and gain practical experience of database notations that are widely used in the industry Successful completion will see you equipped to create appropriate efficient database designs for a range of simple applications and to translate informal queries into formal notation You will have learned to identify and express relative integrity constraints for particular database designs and have gained the ability to identify control measures for some 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 2022 23 of study)
Formal Languages
You will gain a fundamental understanding of formal languages and how the Chomsky hierarchy classifies them You’ll study techniques for exploring the regularity of languages using closure properties and pumping lemmas whilst also considering automata models alongside the notion of computability These concepts are central to computer science and completion will see you able to specify between and translate various forms of formal language descriptions You’ll learn methods of lexical analysis and parsing and be able to argue whether a formal language is regular or context free The teachings will discuss Turing machines and philosophical concepts such as decidability reducibility and the halting problem
Read more about the Formal Languages moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 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 2022 23 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 2022 23 of study)
Logic and Verification
The theory and practice relating to the reliability of systems forms a vital part of computer science So from this module you’ll develop your understanding of mathematical logic and learn to apply it when specifying and verifying computing systems Studying algorithms and proof calculi for verification as well as associated techniques such as propositional and predicate logic You will be able to comprehend and construct proofs understand and compare the semantics of a variety of logics and understand basic algorithms along with formal tools for verification
Read more about the Logic and Verification moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 of study)
Year Three
Individual Project
In this project-based module you will gain experience in designing developing and implementing a significant project under supervision From submission of the outline and detailed specification you will produce regular progress reports throughout before presenting your final results This is an excellent opportunity to develop important employability skills including independent learning self-discipline organisation and time management
Read more about the Individual Project moduleLink opens in a new window including the methods of teaching and assessment (content applies to 2022 23 of study)
Optional modules
Optional modules can vary from to Example optional modules may include
Artificial Intelligence
Computer Security
Cyber Security
Functional Programming
Mathematical Programming 1
Web Development Technologies
Show less