THE UNIVERSITY of EDINBURGH

DEGREE REGULATIONS & PROGRAMMES OF STUDY 2021/2022

Information in the Degree Programme Tables may still be subject to change in response to Covid-19

University Homepage
DRPS Homepage
DRPS Search
DRPS Contact
DRPS : Course Catalogue : School of Informatics : Informatics

Undergraduate Course: Introduction to Theoretical Computer Science (INFR10059)

Course Outline
SchoolSchool of Informatics CollegeCollege of Science and Engineering
Credit level (Normal year taken)SCQF Level 10 (Year 3 Undergraduate) AvailabilityAvailable to all students
SCQF Credits10 ECTS Credits5
SummaryThis course introduces the fundamental concepts of the theory of computer science, which include some of the greatest intellectual advances of the last century: what does `computing' mean? Are all `computers' basically the same? Can we tell whether our programs are `correct' - and what does `correct' mean, anyway? Can we solve problems in reasonable time, and can we tell whether we can?
The course concentrates primarily on conceptual understanding, but adds enough detail to allow students to go on to further courses, and illustrates how the fundamental concepts are reflected throughout the discipline.

Course description The first section of the course asks the question, what does it mean to compute? We start with the finite automata introduced in earlier years, and then generalise to pushdown automata, and show that they have more power. Next we generalize further to very simple abstract general computers, and argue they can do everything real computers can do. We then ask, can we solve every computational question? The answer, with which Turing shocked the mathematicians of the 1930s, is "no", with a remarkably easy but beautiful argument (introduced at the end of Inf2-IADS). We then explore some different, but always equivalent, ways of defining "a computer". We finish the section by asking how we can compare the difficulty of different problems, and introduce the idea of "reduction" as a way of compiling one problem into another. Technically, this covers register machines, undecidability, Turing machines, and reductions.

The second section thinks about how hard it is to solve solvable problems, leading to one of the most important problems in all mathematics, and the foundation of internet security. We start by reprising Inf2-IADS analysis of algorithms, and then discuss the idea of classifying problems as `tractable' (easy) or `intractable' (hard). We find that the idea of algorithms whose running time grows polynomially in the problem size is a good mathematical definition of `tractable', though not always a practical one. After making this more precise, we ask what happens if we're allowed to just check all the possible answers in parallel - does this give us more problem-solving power? The question is made precise by the concept of NP, and we show that there are "hardest" such problems, such as the famous Travelling Salesman. Although the question is easy to ask, nobody knows how to answer it. This is P = NP - if you can solve it, you win a million dollars, and fame for as long as civilization lasts. So far, NP problems are very hard to solve in practice, so we discuss how to deal with them. We finish the section by talking about much harder problems still. Technically, this section covers P, NP, hardness and completeness, Cook's Theorem, P = NP, and the complexity hierarchy above NP.

The third section takes brief look at a different way of seeing computation. Haskell needn't be seen as a programming language, it can be the computer itself. We'll show how the lambda-calculus (on which Haskell is based) can do all the computing our other models could, and how the halting problem was actually first solved (or rather unsolved) within lambda-calculus.
Entry Requirements (not applicable to Visiting Students)
Pre-requisites Co-requisites
Prohibited Combinations Other requirements This course is open to all Informatics students including those on joint degrees. It is also open to students in the School of Mathematics.
Information for Visiting Students
Pre-requisitesNone
High Demand Course? Yes
Course Delivery Information
Academic year 2021/22, Available to all students (SV1) Quota:  None
Course Start Semester 2
Timetable Timetable
Learning and Teaching activities (Further Info) Total Hours: 100 ( Lecture Hours 20, Seminar/Tutorial Hours 10, Programme Level Learning and Teaching Hours 2, Directed Learning and Independent Learning Hours 68 )
Assessment (Further Info) Written Exam 80 %, Coursework 20 %, Practical Exam 0 %
Additional Information (Assessment) An exam provides the main assessment. In order to ensure coverage of the three major sections, the format will be three compulsory easier questions, and a choice of one of two longer questions.

Assessed coursework will be issued at two points, containing mainly relatively straightforward exercises designed to reinforce basics, the first coursework being formative and the second being summative. Additional formative work in tutorial sheets will stretch those who wish.

You should expect to spend approximately 15 hours on the coursework for this course.
Feedback Formative feedback is given verbally in tutorials, and in writing for the first exercise. Summative and formative feedback is given in writing for the second exercise.
Exam Information
Exam Diet Paper Name Hours & Minutes
Main Exam Diet S2 (April/May)2:00
Resit Exam Diet (August)2:00
Learning Outcomes
On completion of this course, the student will be able to:
  1. Explain (non-)deterministic finite and pushdown automata and use the pumping lemma to show languages non-regular
  2. Explain decidability, undecidability and the halting problem.
  3. Use reductions to show (un)decidability.
  4. Explain P and NP and use reductions to show (non)-membership of them.
  5. Write short programs in lambda-calculus.
Reading List
Michael Sipser, Introduction to the Theory of Computation.
Benjamin Pierce, Types and Programming Languages.
Additional Information
Course URL http://course.inf.ed.ac.uk/itcs/
Graduate Attributes and Skills Problem-solving, analytical thinking, mathematical communication
KeywordsComputability,Complexity
Contacts
Course organiserDr Julian Bradfield
Tel: (0131 6)50 5998
Email: j.c.bradfield@ed.ac.uk
Course secretaryMrs Michelle Bain
Tel: (0131 6)51 7607
Email: michelle.bain@ed.ac.uk
Navigation
Help & Information
Home
Introduction
Glossary
Search DPTs and Courses
Regulations
Regulations
Degree Programmes
Introduction
Browse DPTs
Courses
Introduction
Humanities and Social Science
Science and Engineering
Medicine and Veterinary Medicine
Other Information
Combined Course Timetable
Prospectuses
Important Information