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.

Level 5000 Computer Science modules

CS5001 Object Oriented Programming
This module provides a review of the main concepts of object-oriented programming in Java, including abstractions for distributed systems programming and graphical user interfaces.
CS5011 Advanced Artificial Intelligence
This module will cover foundational knowledge of Artificial Intelligence (AI).
CS5012 Language and Perception
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.
CS5013 Knowledge and Reasoning
This module will build on some of the foundations covered in the core module (CS5011), as well as extending understanding to a research level in the areas of Knowledge Representation and Reasoning with knowledge.
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 and Distributed Systems
This module has two interleaved themes: Networking and Distributed Systems.
CS5022 Distributed Systems Architecture
This module will cover Distributed System Case Studies; Transparency in Distributed Systems; Principles of Middleware; Examples of Object-Oriented Middleware e.
CS5023 Mobile and Multimedia Systems
This module examines and analyses the way in which computing and communication are used to allow mobile systems to function across a heterogeneous environment, 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.
CS5031 Advanced Software Engineering
This module introduces advanced software engineering methods with an emphasis on software reuse and test-driven development practices.
CS5032 Critical Systems Engineering
The aim of this module is to provide students with an understanding of the concepts and development techniques used for critical, socio-technical systems.
CS5033 Software Architecture
The aim of this module is to introduce 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.
CS5041 Advanced Interactive Technologies
Desktop and mobile computing are evolving as advanced interactive technologies change our view of applications, services, gaming and computing.
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.
CS5900 Research and Professional Skills in Computer Science
Readings in research topics in Artificial Intelligence, Software Engineering and Networks and Distributed Computing.
CS5999 Dissertation in Computer Science
This module is an individually supervised dissertation, not exceeding 15,000 words, on a topic in computer science.

Level 1000 Information Technology modules

IS1101 Information and Communication Technologies
This module is an intensive practically oriented introduction to Information Technology, covering aspects from a range of topics including The Internet, World Wide Web Basics, Word Processing, Graphics and Presentation Software.
IS1102 Computers and Society
This module considers the use of computer systems from a technical, legal and ethical perspective, providing a grounding in the professional and social aspects of using Computers and Information Technologies.
IS1901 Information Technology I
The module consists of two streams.

Level 2000 Information Technology modules

IS2901 Information Technology II
We are increasingly reliant on Internet-based services for a variety of routine tasks, for example, searching: Google; e-commerce: Amazon; e-government: Fife Council; travel: Network Rail timetable; management of educational processes:MMS.

Level 3000 Information Technology modules

IS3901 Information Technology 3
This third level evening degree module develops the topics introduced in IS2901.

Level 5000 Information Technology modules

IS5101 Study and Research Skills
This module is designed to provide a streamlined progress path towards producing a personal academic project prior to carry out a major project and dissertation as part of a taught Masters programme.
IS5102 Database Management Systems
It is important for managers to understand what a database is, when to use a database, and what differentiates a database from a spreadsheet.
IS5103 Web Technologies
A web application is a collection of web pages that interact with the user, with each other, and with various resources on a web server, including databases.
IS5104 Information Security Management
This module reviews key theoretical and practical aspects of Information Security Management.
IS5105 IT Software Engineering Principles
This module reviews and summarises the key concepts in large scale software development.
IS5106 Digital Media
Effective communication of information increasingly relies on digital media technology as a means of production and or delivery.
IS5107 Information Technology Fundamentals
This module is an intensive practically oriented introduction to information technology, covering The Internet, Word Processing, Spreadsheets, Presentation Software, Networks & Systems, Peripherals and Computers in Society.
IS5198 Dissertation in Information Technology
This module provides students with the opportunity to undertake an in-depth investigation into issues within the field of Information Technology.
IS5199 Dissertation in Management and IT
This module provides students with the opportunity to undertake an in-depth investigation into issues within the fields of Management and Information Technologies.