Learn the basic algorithmic methodologies from backtracking to dynamic programming

This course is about the fundamental concepts of algorithmic problems, focusing on backtracking and dynamic programming. As far as I am concerned these techniques are very important nowadays, algorithms can be used (and have several applications) in several fields from software engineering to investment banking or research&development.

In each section we will talk about the theoretical background for all of these algorithms then we are going to implement these problems together.

The first chapter is about backtracking: we will talk about problems such as N-queens problem or hamiltonian cycles and coloring problem. In the second chapter we will talk about dynamic programming, theory first then the concrete examples one by one: fibonacci sequence problem and knapsack problem.