Computer Science @ University of St Andrews

University of St Andrews crest

Modules

Level 1000 Computer Science modules

CS1002 Object-Oriented Programming
This module provides an introduction to object-oriented modelling and programming, using UML and Java.
CS1003 Programming with Data
This module explores various aspects of data storage, processing and analysis.
CS1005 Computer Science in Everyday Life
This module introduces key ideas of Computer Science through examination of the working of devices and services which are part of modern everyday life, such as search engines, personal music players, mobile telephones and social networking sites.
CS1006 Programming Projects
This module reinforces key Java programming skills gained in CS1002, by means of a series of coursework assignments posed as mini-projects.
CS1101 Computer Science Skills A
This module develops academic and transferable skills in problem‐solving, team-working, information retrieval and analysis, and study skills.
CS1102 Computer Science Skills B
This module develops academic and transferable skills in problem-solving, team-working, information retrieval and analysis, and study skills.

Level 2000 Computer Science modules

CS2001 Foundations of Computation
This module introduces the fundamental algorithms, data structures and ideas about formal languages which are at the heart of modern software, and develops skills in programming and analysis.
CS2002 Advanced Computer Science
This module develops skills in programming in C, systems programming, digital logic and low-level computer organization.
CS2003 Advanced Internet Programming
This module explores further concepts and abstractions for Internet programming.
CS2006 Advanced Programming Projects
This module introduces the functional and dynamic programming paradigms, using languages such as Haskell and Python.
CS2101 Foundations of Computation (Accelerated)
This module is an accelerated version of CS2001.

Level 3000 Computer Science modules

CS3051 Software Engineering
This module gives a broad overview of software engineering, presenting the fundamental aspects as a collaborative professional activity including its concerns and approaches.
CS3052 Computational Complexity
This module builds upon finite state machines, context-free grammars and big-O notation from 2nd year.
CS3098 Minor Software Team Project
This module allows students to take part in a substantial software engineering project as part of a team, using professional development techniques.
CS3099 Software Team Project
This module allows students to take part in a substantial software engineering project as part of a team, using professional development techniques.
CS3101 Databases
This module introduces data models and modeling techniques, relational design and normalization.
CS3102 Data Communications and Networks
This module introduces the basics of data communications and computer networks, and examines network protocols and architectures.
CS3104 Operating Systems
This module examines the changing role of the operating system, the concept and implementation of process, the OS/hardware interface with regard to storage and protection, and the techniques developed to achieve safety and throughput in multitasking systems.
CS3105 Artificial Intelligence
This module examines the general features of the AI problem solving process, and in particular the various forms of heuristic, together with their implementation and case studies of real systems.
CS3106 Human Computer Interaction
This module covers the main aspects of Human Computer Interaction.
CS3301 Component Technology
This module provides students with understanding of current and emerging component technologies, focusing on the major themes of object-oriented and message-oriented middleware.
CS3302 Data Encoding
This module explains the techniques used to encode data, emphasising the ideas of security and secrecy, error correcting capabilities, and data compression.

Level 4000 Computer Science modules

CS4052 Logic and Software Verification
Building on earlier coverage of elementary logic, this module motivates the need for formal methods and software verification approaches as model checking for guaranteeing the correctness of software systems.
CS4098 Minor Software Project
This module has the same content as CS4099, but with reduced scope appropriate for Joint Honours students.
CS4099 Major Software Project
This module allows students to undertake a substantial software engineering project using professional development techniques.
CS4102 Computer Graphics
This module covers the fundamental concepts of computer graphics, and develops the ability to apply the concepts to the generation of realistic, synthetic images of 3D objects and scenes.
CS4103 Distributed Systems
This module covers the fundamentals of distributed systems, with reference to system models, programming languages, algorithmic techniques, concurrency and correctness.
CS4201 Programming Language Design and Implementation
This module studies the design and implementation of programming languages.
CS4202 Computer Architecture
This module studies the principles and technology of modern computer architectures, with particular emphasis on performance and acceleration.
CS4203 Computer Security
This module introduces the basic concepts of computer security and cryptography, common attacks and defences against them, and relevant legal and policy frameworks.
CS4204 Concurrency and Multi-Core Architectures
This module presents the key concepts of programming multi-core/many-core and other parallel architectures, ranging from the identification and use of parallel patterns; the use of structured parallelism to implement task and data parallelism; key implementation issues, including task identification, granularity, scheduling, threads, garbage collection, task placement, locality; performance monitoring and debugging.
CS4302 Multimedia
This module introduces the concepts of analogue and digital media, and analyses techniques for encoding, manipulating, compressing, and transmitting media based on text, audio, images, and moving images, as well as their connection with human perception.
CS4303 Video Games
This module builds on the general-purpose programming abilities acquired earlier, introducing games-specific techniques and material.
CS4402 Constraint Programming
This module introduces constraint-based reasoning as a powerful mechanism for knowledge representation and inference.
CS4499 Computer Science (Special Subject)
This module is a guided reading module on any aspect of Computer Science not covered by other available modules, intended only for students in the School of Computer Science for whom exceptional timetable arrangements (such as a semester or year of absence) unduly restrict the availability of modules.

Level 5000 Computer Science modules

CS5001 Object-Oriented Modelling, Design and Programming
This module introduces and revises object-oriented modelling, design and implementation up to the level required to complete programming assignments within other MSc modules.
CS5002 Programming Principles and Practice
This module introduces computational thinking and problem solving skills to students who have no or little previous programming experience.
CS5003 Masters Programming Projects
This module reinforces key programming skills gained in CS5002, by means of a series of coursework assignments posed as small programming projects.
CS5010 Artificial Intelligence Principles
This module covers foundational knowledge of Artificial Intelligence (AI).
CS5011 Artificial Intelligence Practice
This module covers practical design and implementation of Artificial Intelligence (AI).
CS5012 Language and Computation
This module covers the major aspects of natural language processing and speech understanding, including computational syntax, computational semantics, discourse processing, machine translation and speech recognition.
CS5019 Artificial Intelligence (Special Subject)
This module is a guided reading module on any aspect of Artificial Intelligence not covered by other available modules.
CS5021 Advanced Networks
This module looks forward to new concepts and topics in networking, and also reviews key abstractions including layered models, protocols and Internet architecture, and key concerns such as reliability, resource utilization and quality of service.
CS5023 Mobile and Wireless Networks
This module examines how computing and communication are used to allow mobile systems to function in heterogeneous environments, with variations in available network resources and diverse/intermittent network connectivity.
CS5029 Networks & Distributed Systems (Special Subject)
This module is a guided reading module on any aspect of Networks & Distributed Systems not covered by other available modules.
CS5030 Software Engineering Principles
This module examines the key concepts in small and large-scale software development.
CS5031 Software Engineering Practice
This module introduces advanced software engineering methods supporting the development of complex, composite software systems with an emphasis on software configuration management, reuse and test-driven development practices.
CS5032 Critical Systems Engineering
This module provides students with an understanding of the concepts and development techniques used for critical, socio-technical systems.
CS5033 Software Architecture
This module introduces students to the concept of software architecture, as an aid to software design, reuse and evolution.
CS5039 Software Engineering (Special Subject)
This module is a guided reading module on any aspect of Software Engineering not covered by other available modules.
CS5040 Human Computer Interaction Principles

This module provides students with fundamental principles underpinning the study of human computer interaction (HCI).

CS5041 Human Computer Interaction Practice
This module provides students with the technical skills to build research prototypes and state-of-the-art interfaces.
CS5042 User-Centred Interaction Design
This module provides students with the methodological and conceptual tools to design new interactive systems that are effective, usable, and meaningful to users, and to use prototypes to achieve better designs.
CS5043 Evaluation Methods in Human Computer Interaction
This module provides an introduction to quantitative and qualitative methods for evaluating interactive systems and digital artefacts.
CS5098 Group Project and Dissertation in Computer Science
This module is a group-based MSc project on a topic in Computer Science.
CS5099 Dissertation in Computer Science
This module is an individually supervised MSc project on a topic in Computer Science.
CS5199 Individual Masters Project
This module allows students to undertake a major software engineering or research project, under the guidance of an individual supervisor.
CS5899 Erasmus Mundus Dissertation in Dependable Software Systems
This module is an individually supervised dissertation, not exceeding 15,000 words, on a topic in computer science.

Level 1000 Interdisciplinary modules

ID1005 IT in the Organisation
This module aims to answer the question "What is it essential for every professional to know about IT?".

Level 4000 Interdisciplinary modules

ID4001 Communication and Teaching in Science
This module is based on the Undergraduate Ambassador Scheme launched in 2002.

Level 5000 Interdisciplinary modules

ID5059 Knowledge Discovery and Datamining
This module covers many of the methods found under the banner of "Datamining", building from a theoretical perspective but ultimately teaching practical application.

Level 1000 Information Technology modules

IS1901 Information Technology I
This is a level 1 Evening Degree module.

Level 2000 Information Technology modules

IS2901 Information Technology II
This is a level 2 Evening Degree module.

Level 3000 Information Technology modules

IS3901 Information Technology 3
This is a level 3 Evening Degree module.

Level 5000 Information Technology modules

IS5101 Masters Core Skills
This module equips students with essential skills for completing an MSc in the School of Computer Science.
IS5102 Database Management Systems
This module introduces the core principles and techniques required in the design and implementation of database systems.
IS5103 Web Technologies
This module introduces the principles and techniques involved in the design and implementation of web applications.
IS5104 Information Security Management
This module reviews key theoretical and practical aspects of Information Security Management.
IS5105 Network Systems Management
This module looks at the history of computer networks, examines how computer networks function, and surveys emerging and future networking technologies.
IS5106 Green Information Technology
This module introduces students to a variety of topics and technologies in the area of Green IT and Sustainable IT.
IS5108 Information Technology Projects
This module reinforces information technology and project management skills gained during semester 1, by means of a selection of coursework assignments posed as information technology projects.
IS5188 Group Project and Dissertation in Management and Information Technology
This module is a group‐based MSc project on an approved topic in Management and Information Technology which shows appropriate competences in both fields.
IS5189 Dissertation in Management and IT
This module is an individually supervised MSc project on an approved topic in Management and Information Technology which shows appropriate competences in both fields.
IS5198 Group Project and Dissertation in Information Technology
This module is a group-based MSc project on an approved topic in Information Technology which shows appropriate competences in the field.
IS5199 Dissertation in Information Technology
This module is an individually supervised MSc project on an approved topic in Information Technology which shows appropriate competences in the field.