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
In each section we will talk about the theoretical background for all of these algorithms then we are going to implement these problems one by one.
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
Requirements
Basic Python
Last updated 4/2019