Theoretical Computer Science
Course options and guidance for the Theoretical Computer Science topic area
What will I learn from courses in this topic?
Theoretical Computer Science (TCS) is the use of mathematical thinking and techniques to advance computer science. It ranges from practical questions, such as the development of advanced algorithms and the design of programming languages, to logical, even philosophical, questions such as ‘what is computation?’ or ‘how can we know whether our algorithm is the fastest possible for this problem?’. Edinburgh has been a world leader in TCS for some decades, and the courses here reflect the current interests of staff, as well as the necessary foundations for any TCS course. A particular feature of the Edinburgh understanding of TCS is its connexion to reality: the late Robin Milner saw TCS as an experimental subject, where we make theories, and test them by implementation. Milner’s vision continues to inspire many here.
The primary aims of the theoretical courses are, therefore, to introduce students to core areas of TCS, to provide practical experience of that theory and to introduce students to the technologies through which theory-based tools are implemented, including preparation for PhD study. The courses offered combine a good grounding in the core areas of the subject with experience in the practical application of theory across a range of theory-based tools. These courses will be of particular interest to students with a mathematics background. The practical components of these courses will consider both the use and implementation of tools. Most of the courses in this specialist area aims to provide a balance between theoretical topics and their application in software development, while a few are more purely mathematical. In many of the courses the theory suggests the construction of tools to aid software production. Students will meet a variety of these tools during the course and will have the opportunity to develop skills in their use as well as studying the techniques used in their implementation.
What background is typically needed?
Most of the courses will assume a good command of the basic material of a computer science degree. If you don't have this, then don't worry too much: as long as you have a strong mathematical ability and reasonable knowledge, most TCS courses can be done, though it will be harder work, as you'll have to learn many new concepts.
What courses are available?
- Blockchains and Distributed Ledgers(10 credits)
- Introduction to Quantum Computing(10 credits)
- Natural Computing(10 credits)
- Randomized Algorithms (10 credits)
- Types and Semantics for Programming Languages (10 credits)
- Advanced Database Systems (20 credits)
- Algorithmic Game Theory and its Applications (10 credits)
- Categories and Quantum Informatics (10 credits)
- Introduction to Modern Cryptography (10 credits)
- Machine Learning Theory(10 credits)
- Methods for Causal Inference(10 credits)
- Probabilistic Modelling and Reasoning (20 credits)
- Quantum Cyber Security (10 credits)
- Algorithms and Data Structures (10 credits, Semester 1)
- Automated Reasoning (10 credits, Semester 1)
- Elements of Programming Languages (10 credits, Semester 1)
- Introduction to Databases (20 credits, semester 1)
- Introduction to Theoretical Computer Science (10 credits, Semester 1)
The following topic areas each include courses covering the theoretical foundations of each topic.