The primary objective of this module is to introduce the topic of algorithms as a precise mathematical concept, and study how to design algorithms, establish their correctness, study their efficiency and memory needs. The module consists of a strong mathematical component in addition to the design of various algorithms.