## UBC catalog entry

Discrete mathematics for computer engineering: logic and proofs; discrete structures, such as trees and graphs, and their properties; introduction to algorithms and algorithmic complexity. [3 credits]

### Longer description

This course covers (basic) discrete mathematics for computer engineers. Topics covered include predicate and propositional calculus, methods of proof, counting techniques, sets and relations, graphs and trees, complexity of algorithms, finite state machines and Turing machines. Emphasis is placed on the applications of these ideas in the context of algorithm design. There may also be some coverage of topics related to discrete probability and number theory.

This course is an introduction to the theoretical side of computer science and engineering. You will learn how to construct proofs, read and write formal mathematics, and become familiar with some introductory concepts concerning algorithms. The material covered in the course will assume that you have a good grasp of high school mathematics and some more: you should be fluent with algebra, know some plane geometry, trigonometry, logarithms, etc. A basic grasp of sets, functions and calculus is also presumed. Some parts of this course will also involve a discussion of computer algorithms in the abstract (pseudocode). Some material covered in CPSC 260 will be treated as a prerequisite. If you have (sufficient) programming experience, you should not have difficulties following the discussion that uses pseudocode.