Course Materials & Resources
Lecture Videos
- Basic Data Structures-IWatch
- Basic Data Structures-I Part 2Watch
- Basic Data Structures-IIWatch
- Introduction to Algorithms OnlineWatch
- Concepts of time complexity OnlineWatch
- Concepts of time complexity Best/Worst/Average case scenarios OnlineWatch
- Asymptotic Analysis OnlineWatch
- Introduction to AlgorithmsWatch
- Concepts of time complexityWatch
- Asymptotic AnalysisWatch
- Non- Recursive AlgorithmsWatch
- Recursive AlgorithmsWatch
- Brute Force OnlineWatch
- Brute Force String Matching 1Watch
- Brute Force String Matching 2 and RestWatch
- Exhaustive SearchWatch
- Brute Force QuestionsWatch
- Decrease and Conquer Insertion SortWatch
- Decrease and Conquer OtherWatch
- Decrease and Conquer Other OnlineWatch
- Divide and Conquer Introduction and KaratsubaWatch
- Divide and Conquer Merge SortWatch
- Divide and Conquer Quick SortWatch
- Divide and Conquer Quick Sort OnlineWatch
- Transform and Conquer Heap SortWatch
Lecture Notes
- Basic Data StructuresDownload
- Basic Data Structures-IIDownload
- Introduction to AlgorithmsDownload
- Concepts of time complexity Best/Worst/Average case scenariosDownload
- Asymptotic AnalysisDownload
- Non- Recursive AlgorithmsDownload
- Recursive AlgorithmsDownload
- Brute ForceDownload
- Decrease and ConquerDownload
- Divide and ConquerDownload
- Transform and ConquerDownload
About This Course
This course offers a comprehensive introduction to the core principles and strategies used in algorithm design and analysis. Starting from fundamental data structures, it covers recursion, iteration, and efficiency analysis. The course advances to classic algorithmic strategies including Brute Force, Decrease-and-Conquer, Divide-and-Conquer (e.g., Quicksort, Karatsuba), and Transform-and-Conquer techniques. Modern approaches such as Dynamic Programming and Greedy Techniques are also covered.
Instructor: Eng. Abdulrahman Hamdi