CSE-257: Algorithms II
Undergraduate course, Jahangirnagar University, Department of Computer Science and Engineering, 2022
Objectives
After successful completion of this course, students should be able to:
- Argue the correctness of algorithms using inductive proofs and invariants.
- Analyze worst-case running times of algorithms using asymptotic analysis.
- Describe the advanced divide-and-conquer paradigm and explain when an algorithmic design situation calls for it. Derive and solve recurrences describing the performance of divide-and-conquer algorithms.
- Describe the advanced dynamic-programming paradigm and explain when an algorithmic design situation calls for it and analyze them.
- Explain the advanced graph algorithms and their analyses. Employ graphs to model engineering problems, when appropriate.
- Compare between different data structures. Pick an appropriate data structure for a design situation.
| Lecture# | Description |
|---|---|
| Lec-1 | Introduction to Algorithms |
| Lec-2 | Analysis of Algorithms |
| Lec-3 | Asymptotic Notations and Recurrences |
| Lec-4 | Divide and Conquer-Part-I |
| Lec-5 | Divide and Conquer-Part-2 |
| Lec-6 | Analysis of Linear Sorting Algo.(Counting and Radix Sort) |
| Lec-7 | Sparse Table |
| Lec-8 | Binary Indexed Tree |
| Lec-9 | Segment Tree |
| Lec-10 | SQRT Decomposition |
| Lec-11 | Trie |
| Lec-12 | AVL Tree |
| Lec-13 | Red-Black Tree |
| Lec-14 | KMP |
| Lec-15 | SCC |
| Lec-16 | Articulation Point |
| Lec-17 | Dynamic Programming |
| Lec-18 | Network Flow |
