Module Identifier CS10310 Module Title AN INTRODUCTION TO THEORETICAL COMPUTER SCIENCE Academic Year 2000/2001 Co-ordinator Dr Mark Ratcliffe Semester Semester 1 Course delivery Lecture 16 lectures Workshop Up to 6 Assessment Exam 2 Hours Written exam. 100% Supplementary examination Will take the same form, under the terms of the Department's policy

Brief description
This module introduces basic concepts and results of theoretical computer science. It is intended for students with a background in computing who wish to deepen their understanding of programming concepts and the theoretical underpinning of computer science.

Aims

The aims of this module are:

• to provide an overview of the basic definitions and results of theoretical computing;
• to provide a theoretical foundation for specifying and proving program behaviour;
• to introduce software proof techniques.

Learning outcomes
On successful completion of this module students should be able to:

• state basic definitions and results of the theory of computing;
• provide formal definitions of programming language constructs.

Syllabus

1. Sets, functions and relations - 4 Lectures
Motivation - relationship with programs. What are sets and how do we describe them. When to use enumeration and when to use predicates. The set of truth values. Cardinality. Subsets. Using sets to specify pre- and post-conditions for programs. Sets and sequences. Representing sets as sequences. A proof involving sets and sequences. Proof by contradiction. Cartesian product. Powerset. Proof that a finite set A with n elements has 2n subsets. Set union, intersection, difference. Universal set. Complement of a set. Venn-Euler diagrams.

2. Functions (maps) - 4 Lectures
What are functions and how do we represent them - pictorially, using definitions, injection, bijection, surjection. Functions and the meaning of assignment. Variables. States and operations that cause a change of state. Functions. Relations and logical conditions.

3. Languages and Problems - 4 Lectures
Motivation: computation entails using language to describe and solve problems. Symbols, alphabets. Strings. String concatenation. Alphabets and strings. Languages. Language union, intersection, difference and symmetric difference. Language concatenation. Kleene star. Regular expressions and regular languages. Deterministic finite automata. Nondeterministic Finite Automata. Languages that are not regular. The Pumping Lemma (simple and general forms). Proving that a language is/is not regular. Closure properties of regular language. Using the closure properties to prove that a language is not regular. Context free languages. Context free grammars. Derivations of context free grammars. Context free grammars and regular grammars. Pushdown automata. Languages that are not context free. Context free languages are not closed under intersection. Context free languages are not closed under complementation. Context free languages are closed under union.

4. Induction - 2 Lectures
What is induction? Proof by induction over N. Structural induction. The Principle of Complete Induction. Proofs involving context free grammars

5. Turing Machines - 2 Lectures
What are Turing machines. Beyond context free languages. Example.