Skip to navigation | Skip to main content | Skip to footer
Menu
Menu

COMP11212 Fundamentals of Computation syllabus 2021-2022

COMP11212 materials

COMP11212 Fundamentals of Computation

Level 1
Credits: 10
Enrolled students: 393

Course leader: Sean Bechhofer


Additional staff: view all staff

Requisites

  • Co-Requisite (Compulsory): COMP11120

Additional requirements

  • Students who are not from the Department of Computer Science must have permission from both Computer Science and their home Department to enrol. Computer Science and Maths students do not need COMP11120

    COMP11120 is a co-requisite except for BSc(Hons) Computer and Science and Maths students

Assessment methods

  • 80% Written exam
  • 20% Coursework
Timetable
SemesterEventLocationDayTimeGroup
Sem 2 w20-27,31-34 Lecture Roscoe 4.8 Mon 14:00 - 15:00 -
Sem 2 w20-27,31-34 Lecture Simon 4.47 Thu 14:00 - 15:00 -
Sem 2 w20-27,31-33 Lecture Engineering Building A Lecture Theatre A Thu 10:00 - 11:00 -
Sem 2 w20-27,31-33 Lecture Engineering Building A Lecture Theatre A Mon 11:00 - 12:00 -
Sem 2 w21-27,31-33 Examples Collab Tue 09:00 - 10:00 M+X
Sem 2 w21-27,31-33 Examples Collab Wed 09:00 - 10:00 W
Sem 2 w21-27,31-33 Examples Collab Tue 10:00 - 11:00 Y
Sem 2 w21-27,31-33 Examples 2.19 Tue 14:00 - 15:00 Z
Sem 2 w21-27,31-33 Examples Collab Tue 16:00 - 17:00 V

Overview

The building of real-life computing systems, e.g. mobile phone, tv/video remote control, internet shopping, air-traffic control, internet banking, etc., is always a complex task. Mistakes can be very annoying, costly and sometimes life threatening. Methods and techniques to support the building and understanding of such systems are essential. This course unit provides an introduction to the basic computer science ideas underlying such methods. It is also a part of, and an introduction to, the Modelling and Rigorous Development theme.

Aims

This course unit provides a first approach to answering the following questions. What methods are there that can help understanding complicated systems or programs? How can we make sure that a program does what we intend it to do? How do computers go about recognizing pieces of text? If there are two ways of solving the same problem, how can we compare them? How do we measure that one of them gives the solution faster? How can we understand what computers can do in principle, and are there problems that are not solvable by a computer?

Syllabus

There are two groups of topics covered. One of the lectures will be an introduction to the course unit, and one is reserved for revision. That leaves 10 lectures for each part.

The first part (10 lectures) is concerned with expressing particular strings, and collections of strings, and here we will introduce the methods by which a computer goes about it. The ability to recognize key strings (such as programming constructs or variable names) are, for example, required in every compiler, but they are also used by search engines such as Google.The formalisms introduced include finite state automata, regular expressions (most often used in pattern matching), (regular) grammars. The emphasis is on students being able to use these formalisms to solve problems.

The second half of the course (10 lectures) provides an introduction to the topics of complexity, correctness and computability. There are four big topics:

                • the WHILE programming language

                • asymptotic complexity

                • partial and full program correctness

                • computability

Teaching methods

This unit is delivered in a blended manner with a mix of asynchronous and synchronous activities. Self-study materials are made available in the form of detailed notes which include exercises, as well as videos and formative self-assessment quizzes that allow students to check their understanding. Each week there is a synchronous session that allows students to ask questions about the materials and beyond, and discuss the ideas underlying the taught material. Further there are weekly synchronous examples classes where solutions to the assessed exercises are discussed.

 

Asynchronous video content, approximately 1 hour of content per week.

Synchronous Q&A/worked examples sessions, 1 hour per week.

Synchronous examples classes, 1 per week (starting in week 2)

 

Students are expected to spend 4-5 hours each week engaging with asynchronous materials such as notes, video and exercises.

Feedback methods

Weekly online self-assessment quizzes.

Students present their solutions to set exercises once a week in examples classes. They receive oral feedback to their solutions.

Written feedback is given for summative exercises.

Study hours

  • Assessment written exam (2 hours)
  • Lectures (11 hours)
  • Practical classes & workshops (11 hours)

Employability skills

  • Analytical skills
  • Oral communication
  • Problem solving

Learning outcomes

On successful completion of this unit, a student will be able to:

  • Describe formal languages using a variety of mechanisms.   
  • Define classes of languages and demonstrate translations between those classes.
  • State key properties of classes of languages and determine when those properties hold.
  • Define models of computation and use those models to demonstrate what can and cannot be computed.

Reading list

TitleAuthorISBNPublisherYear
Introduction to the Theory of ComputationMichael Sipser113318779X; 9781133187790; 9781133187813Cengage Learning2013
Logic in computer science : modelling and reasoning about systems Huth, Michael, 1962-052154310XCambridge University Press2004.
Introduction to automata theory, languages, and computation Hopcroft, John E., 1939-9781292056166Pearson Education©2014.
Introduction to the theory of computation Sipser, Michael.9781133187813Cengage Learningc2013.

Additional notes

Course unit materials

Links to course unit teaching materials can be found on the School of Computer Science website for current students.