Download the first set of slides. In these slides we speak
about what the name of the course means and what we are going to study in this semester.
To be more precise, we speak about the term analysis of algorithms and introduce asymptotic notations.
We also speak some other introductory issues related to algorithm design and analysis.
In this set of slides we start speaking about the first paradigm for algorithm design.
Divide and conquer is a recursive approach for solving problems. The first problem we solve using D&C is Maximum Contiguous Subarray.
The third set of slides are uploaded here.
We continue our discussion on Divide and Conquer paradigm by introducing Polynomial Multiplication Problem.
The 4th set of slides are uploaded here.
The worst case growth rate of some Divide and Conquer algorithms is not that good. Quicksort is an example of such
problem. We use Randomization to mitigate this problem. We also solve The Selection problem using Randomized-Partition.
The 5th set of slides are uploaded here.
We introduct second paradigm of algorithm design. It is Dynamic Programing. First we examine recursive solution to
Fibonacci problem and by it we introduce this paradigm. Next we solve the 0-1 Knapsack Problem using this paradigm.
This handout contains some problems on Dynamic programming.
I only examine these problems briefly in case you have any question, and we are not going to study them in class.
Please consult the textbook in case you need more explanation on these problems.
The 6th set of slides are uploaded here.
The 7th set of slides are uploaded here.
The 8th set of slides are uploaded here.
The 9th set of slides are uploaded here.
The 10th set of slides are uploaded here.
The 11th set of slides are uploaded here.
The 12th set of slides are uploaded here.
The 13th set of slides are uploaded here.