*Official course description, subject to change:*

### Foundations of Computing - Discrete Mathematics BSc

##### Course info

##### Programme

##### Staff

##### Course semester

##### Exam

##### Abstract

Discrete Mathematics covers different topics in mathematics, which support many disciplines in software development. The goal of this course is to give the students the ability to apply formal reasoning. The first part of the course is dedicated to learning how to construct logical proofs, proofs on set theory and proofs by induction, while the second half of the course builds upon the first part to cover number-theoretical concepts, graphs, combinatorics, discrete probabilities, and models of computation. The student will obtain the fundamental skill of computational thinking and will be better equipped to tackle technical subjects throughout the curriculum. The course is an introduction to discrete mathematics as a foundation to work within the fields of computer science, information technologies, and software development. The course develops the necessary terminology and conceptual tools needed for later courses.

This includes:

- formal reasoning, proofs, logic, set theory, sequences and sums
- number theory, combinatorics and (discrete) probability theory
- induction, recursion and counting
- relations and functions
- basic graph theory, language theory
- theory and models of computation, such as finite state machines, regular expressions and grammars

##### Description

Discrete Mathematics covers different topics in mathematics, which support many disciplines in software development. The goal of this course is to give the students the ability to apply formal reasoning. The first part of the course is dedicated to learning how to construct logical proofs, proofs on set theory and proofs by induction, while the second half of the course builds upon the first part to cover number-theoretical concepts, graphs, combinatorics, discrete probabilities, and models of computation. The student will obtain the fundamental skill of computational thinking and will be better equipped to tackle technical subjects throughout the curriculum. The course is an introduction to discrete mathematics as a foundation to work within the fields of computer science, information technologies, and software development. The course develops the necessary terminology and conceptual tools needed for later courses.

This includes:

- formal reasoning, proofs, logic, set theory, sequences and sums
- number theory, combinatorics and (discrete) probability theory
- induction, recursion and counting
- relations and functions
- basic graph theory, language theory
- theory and models of computation, such as finite state machines, regular expressions and grammars

##### Formal prerequisites

There are no formal prerequisites for this course.##### Intended learning outcomes

After the course, the student should be able to:

- Describe and apply formal definitions
- Conduct and explain basic formal proofs
- Work with regular languages and finite and infinite state machines
- Use models of computation and specification
- Use combinatorial reasoning
- Assess probabilities of events
- Use basic modular arithmetic

##### Ordinary exam

**Exam type:**

C: Submission of written work, External (7-point scale)

**Exam variation:**

C22: Submission of written work – Take home