The objective of the course is to introduce the complexity of algorithms: sequential, recursive as well as probabilistic. Most of the algorithms based on the divide-and-conquer paradigm will be introduced and their complexities will be analysed.