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-1Introduction to Algorithms
Lec-2Analysis of Algorithms
Lec-3Asymptotic Notations and Recurrences
Lec-4Divide and Conquer-Part-I
Lec-5Divide and Conquer-Part-2
Lec-6Analysis of Linear Sorting Algo.(Counting and Radix Sort)
Lec-7Sparse Table
Lec-8Binary Indexed Tree
Lec-9Segment Tree
Lec-10SQRT Decomposition
Lec-11Trie
Lec-12AVL Tree
Lec-13Red-Black Tree
Lec-14KMP
Lec-15SCC
Lec-16Articulation Point
Lec-17Dynamic Programming
Lec-18Network Flow