1. To introduce the notation, terminology, and techniques underpinning the discipline of Theoretical Computer Science. 2. To provide the mathematical foundation necessary for understanding datatypes as they arise in Computer Science and for understanding computation. 3. To introduce the basic proof techniques which are used for reasoning about data and computation. 4. To introduce the basic mathematical tools needed for specifying requirements and programs, and for analysing algorithms.
At the end of this module the student should be able to :
1. Reason about simple datatypes using basic proof techniques;
2. Interpret set theory notation, perform operations on sets, and reason about sets;
3. Understand, manipulate and reason about unary relations, binary relations, and functions;
4. Represent statements in propositional logic and first-order predicate logic and to recognise, understand, and reason about formulas in propositional logic and first-order predicate logic;
5. Apply basic counting and enumeration methods as these arise in analysing permutations and combinations;
6. Perform simple calculation about discrete probability.
Lectures: Students will be expected to attend formal lectures in a typical week. Formal lectures will be used to introduce students to the concepts and methods covered by the module. Tutorials: Supporting tutorials are held each week in which students work under staff guidance on problem sets designed to reinforce understanding of the lecture material with the possibility of immediate feedback. Private study: In a typical week students will be expected to devote approximately 6 hours of unsupervised time to private study; private study will provide time for reflection and understanding of lecture materials, background reading and completion of the assessment tasks. Assessment: Continuous assessment will be used to test to the extent of theorectieal ideas grasped. A final examination at the end of the module will assess the academic achievement of students.