Computer Science @ University of St Andrews

University of St Andrews crest

Modules

Level 1000 Computer Science modules

CS1002 Computer Science
This module covers problem-solving skills, object-oriented modelling and programming.
CS1004 Internet Programming
This module provides an introduction to concepts in networked computing: client-server architectures, addressing, protocols and networking technologies.
CS1005 Computer Science in Everyday Life
This module will introduce 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 phones 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.

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 expertise and skills in programming in C, systems programming, digital logic and low-level computer organization.
CS2003 Advanced Internet Programming
This module explores the concepts and abstractions for Internet programming.
CS2006 Advanced Programming Projects
This module introduces two new programming paradigms: functional programming in a strongly typed language, such as Haskell, and the use of a dynamic programming language, such as Python.

Level 3000 Computer Science modules

CS3051 Software Engineering
This module introduces a broad overview of software engineering.
CS3052 Computational Complexity
This module covers both the theory and practice of computational complexity.
CS3053 Research and Professional Issues in Computing
The aim of the module is to develop knowledge of the social and professional issues in computer science along with an elementary understanding of research methodology and some current hot research topics.
CS3099 Software Team Project
This module aims to allow students to take part in a substantial software engineering project as part of a team, using professional development techniques.
CS3101 Databases
This module aims (i) to study data models, indexing techniques and query processing; (ii) to study database systems including concurrency, transactions, distribution and recovery.
CS3102 Data Communications and Networks
This module aims (i) to introduce the basics of data communications and computer networks, and (ii) to examine network protocols and architectures.
CS3104 Operating Systems
This module aims (i) to examine in depth the changing role of the operating system; (ii) to study the concept and implementation of process; (iii) to study the OS/hardware interface with regard to storage and protection; (iv) to study the techniques developed to achieve safety and throughput in a multitasking system.
CS3105 Artificial Intelligence
This module aims to provide understanding of the general features of the A.
CS3106 Human Computer Interaction
This module covers the main aspects of Human Computer interaction.
CS3301 Component Technology
Large modern software systems are seldom built as a single block of code.
CS3302 Data Encoding
This module aims to explain the techniques used to encode data, emphasising in turn the ideas of: security and secrecy, error correcting capabilities, data compression.

Level 4000 Computer Science modules

CS4051 Professional and Social Aspects of Computing
This module aims: (i) to enable students to gain a broad general knowledge of some current research areas in computer science and their application in industry and commerce, and the non-technical factors which may affect decision-making in these areas; (ii) to make students aware of the social implications and ethical problems which may face the users and builders of computer systems; (iii) to develop skills in collecting and communicating information, managing and leading debate and drawing conclusions.
CS4098 Minor Software Project
This module, aimed at Joint Honours students, allows students to undertake a substantial software engineering project using professional development techniques.
CS4099 Major Software Project
This module, aimed at Single Honours students, allows students to undertake a substantial software engineering project using professional development techniques.
CS4102 Computer Graphics
The aims of the module are to provide understanding of the fundamental concepts of computer graphics and to develop the ability to apply the concepts to the generation of realistic, synthetic images of 3D objects and scenes.
CS4103 Distributed Systems
This module aims to help students to understand 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 aims to study the design and implementation of programming languages.
CS4202 Computer Architecture
This module aims to study the principles and technology of modern computer architectures, with particular emphasis on performance and acceleration.
CS4203 Computer Security
This module aims to introduce the basic concepts of computer security and cryptography.
CS4204 Concurrency and Multi-Core Architectures
Multi-core programming is a new paradigm in computer science that is likely to be dominant in the next decade; already, all the microprocessors in computers and game consoles are multiprocessor-based.
CS4302 Multimedia
The module will introduce students to the concepts of analogue and digital media and review current standards and technologies used in the production, transport and rendering of digital multimedia.
CS4303 Video Games

Computer games are now a bigger industry than films.

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 Single Honours students in the School of Computer Science for whom exceptional timetable arrangements (such as a semester or year of absence) restrict the availability of modules unduly.