Learn recursion, backtracking (n-queens problem etc.) and dynamic programming (knapsack problem etc.)

**What you'll learn**

- Understand backtracking
- Understand dynamic programming
- Solve problems from scratch
- Implement feedforward neural networks from scratch

**Requirements**

- Basic Python

**Description**

This course is about the fundamental concepts of algorithmic problems, focusing on

**recursion**,

**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 R&D.

**Section 1:**

- what is recursion
- stack memory and recursion
- factorial numbers problem
- Fibonacci numbers
- towers of Hanoi problem
- recursion vs iteration

**Section 2:**

- what is backtracking
- n-queens problem
- Hamiltonian cycle problem
- knight's tour problem
- coloring problem
- NP-complete problems

**Section 3:**

- what is dynamic programming
- Fibonacci numbers
- knapsack problem
- coin change problem
- rod cutting problem

The first chapter is about

**recursion**. Why is it crucial to know about recursion as a computer scientist? Why stack memory is crucial in recursion? We will consider several recursion related problems such as factorial problem or Fibonacci numbers. The second chapter is about

**backtracking**: we will talk about problems such as n-queens problem or hamiltonian cycles and coloring problem. In the last chapter we will talk about

**dynamic programming**, theory first then the concrete examples one by one: Fibonacci sequence problem and knapsack problem.

Thanks for joining the course,

**let's get started!**

**Who this course is for:**

- This course is meant for newbies who are not familiar with algorithmic problems in the main or students looking for some refresher