Skip to Content


Last modified: 25 May 2018 11:16

Course Overview

This course provides a basic-level introduction to some areas of Discrete Mathematics that are of particular relevance to Computing. The course starts with a simple introduction to formal languages (starting from Regular Expressions and Finite-State Automata); it continues with an introduction to Predicate Logic (assuming basic familiarity with Propositional Logic); it concludes with an introduction to probability, focussing on Bayesian reasoning.

Course Details

Study Type Undergraduate Level 2
Session First Sub Session Credit Points 15 credits (7.5 ECTS credits)
Campus None. Sustained Study No
  • Professor Kees Van Deemter

Qualification Prerequisites

  • Either Programme Level 1 or Programme Level 2

What courses & programmes must have been taken before this course?

  • One of CS1014 Foundations of Computing Science 1 (Passed) or CS1016 Foundations of Computing Science 1 (Passed) or CS1022 Computer Programming and Principles (Passed)
  • Any Undergraduate Programme (Studied)

What other courses must be taken with this course?


What courses cannot be taken with this course?


Are there a limited number of places available?


Course Description

Three main topics will be covered: 1. Introduction to formal languages: finite-state machines, regular expressions, Kleene's theorem, pushdown automata, context-free languages. 2. Introductory statistics for computing: Probability, Combinations, Permutations, Bayes' rule; the noisy channel model; principles of descriptive and inferential statistics; principles of hypothesis testing (null hypothesis, type-1 and type-2 errors, etc). 3. Topics in logic and set theory, including and introduction to predicate logic; the cardinality of Infinite sets; Cantor's diagonal argument; simple abstract applications to computability. Throughout the course, there will be an emphasis on proof methods, including methods such as proof by mathematical induction, and proof by contradiction.

Further Information & Notes

Even though this course does not replace any now-existing course, it does teach elements of earlier courses on Formal Languages and Discrete Methods. It will allow other existing courses, such as the present CS3518 (Languages and Computatibility), to be substantially upgraded. The course will build on the new course in Principles of Programming (CS1022).

Degree Programmes for which this Course is Prescribed

  • BSc Computing Science
  • BSc Computing Science and Philosophy
  • BSc Computing Science and Physics
  • BSc Computing Science-Mathematics
  • Bachelor Of Engineering In Engineering Electronic & Software
  • Bachelor Of Science In Business Mngmt & Information Systems
  • Computing Science Joint
  • MA Computing
  • MA Computing and Music
  • MA Information Systems and Management
  • MSci Computing Science (AI) with Ind Pl'n
  • MSci Computing Science w Ind'l Placement
  • MSci Computing with Industrial Placement
  • Master Of Engineering In Electronic & Software Engineering
  • Master of Engineering in Computing Science

Contact Teaching Time

55 hours

This is the total time spent in lectures, tutorials and other class teaching.

Teaching Breakdown


1st Attempt: 2-hour written exam (75%). Continuous assessment, consisting of maths problems (25%) Resit: 2-hour written exam (75%). The continuous assessment mark will be carried forward. (25%)

Formative Assessment

Marked coursework will be returned to students within 2 weeks of submission. Consequently, this will play a role as formative (as well as summative) asessment.


Marked coursework will be returned to students. Further explanations will be offered in class.

Compatibility Mode

We have detected that you are have compatibility mode enabled or are using an old version of Internet Explorer. You either need to switch off compatibility mode for this site or upgrade your browser.