Algorithm Analysis &
Design
Course Overview
• Purpose of the course
• Importance of analyzing algorithm efficiency
• Real-world applications
• Prerequisite: Object-Oriented Programming in Java
Core Topic 1: Algorithm Analysis Basics
• Running time and measuring performance
• Asymptotic notations (Big-O, Ω, Θ)
• Worst-case vs average-case
• Time–space trade-offs
Core Topic 2 & 3: Recurrences + Sorting & Searching
Recurrences
• Mathematical expressions of algorithm behavior
• Master Method for divide-and-conquer analysis
Sorting & Searching Algorithms
• Simple algorithms (linear search, bubble, insertion, selection)
• Advanced structures (trees, heaps, hash tables)
• Performance comparison
Core Topic 4: Algorithm Design Techniques
• Brute force
• Divide-and-conquer
• Dynamic programming
• Greedy algorithms
• Backtracking, branch and bound
• Amortized analysis
Core Topic 5 + Prerequisite Reminder
• Graph Algorithms
• DFS (depth first search), connected components
• Topological sorting
• Shortest path algorithms
• Prerequisite Reminder
• Students must use Java OOP knowledge when studying or presenting
• Required skills: recursion, arrays, lists, classes/objects, data structures
Presentations should include small Java examples where relevant.
No. Student Name Group Chapter 1: Algorithm Analysis Basics
Expected Deliverables
1. Dawit Sheleme Terefe
• Explain why algorithm analysis is
2. Iyob Zarihun Kenea necessary
• Present Big-O, Big-Ω, Big-Θ (with
3. Rohobot Kolaso Koyra 1
examples)
4. Yonas Gezahegn Tulu • Compare worst-case and average-case
Lukas Mengistu Mamo • Explain time vs space trade-offs
5.
• Provide one simple Java example showing
6. Gediyon Shewa Shema time complexity (e.g., loop → O(n))
7. Bereket Asmare Fentahun
No. Student Name Group Chapter 2: Recurrences & Master Method
Expected Deliverables
• Define recurrences and why they appear in
1. Fetiya Abdela Adem
algorithms
• Show at least two recurrence examples (e.g.,
2. Girum Lemma Gole binary search, merge sort)
2
• Explain the 3 cases of the Master Method
3. Biniyam Zerihun Zana • Solve at least one recurrence using the Master
Method
• Provide a Java recursive example related to
4. Abdi Melaku Alehegn divide-and-conquer
5. Beredin Aguda Esale
6. Tefera Tesfa Asrie
7. Samuel Dagne Kassie
No. Student Name Group Group 3 — Chapter 3: Sorting and Searching
Algorithms
Expected Deliverables
1. Tayework Tasewu Debebe • Explain simple algorithms: linear search,
binary search, bubble, insertion, selection
• Analyze their time complexity
2. Kalkidan Zewdu Mengesha 3 • Present advanced topics: heaps, hash tables,
trees (overview only)
• Compare performance of simple vs advanced
3. Abubeker Abduljelil Taha
algorithms
• Provide Java demos for at least one searching
4. Firaol Tibebu Seifu and one sorting algorithm
5. Dawit Diyau Kunuz
6. Mikiyas Abebe Asefa
No. Student Name Group
Group 4 — Chapter 4: Algorithm Design
Techniques
1. Sofoniyas Fentie Mossie Expected Deliverables
• Explain brute force & divide-and-conquer
• Present dynamic programming (with
2. Tilku Baharu Mamo 4 example)
• Present greedy strategy (with example)
• Explain backtracking & branch and bound
3. Eyasu Nigussie Tafese • Show the idea of amortized analysis
• Provide one small Java example for any two
techniques
4. Gemechis Boru Oljira
5. Habtamu Gizachew Seyifu
6. Kaleab Mengesha Fetahi
No. Student Name Group
Group 5 — Chapter 5: Algorithms for Graph
Problems
1. Tadesse Demsew Solomon Expected Deliverables
• Define graphs and common representations
5 • Explain DFS and identify connected
2. Biniyam Tekalign Wondimu
components
• Explain topological sort and when it is used
• Overview of shortest path algorithms (BFS,
3. Barnabas Dufera Ambisa Dijkstra)
• Provide a small Java implementation of DFS or
BFS
4. Dawit Demeke Tamene
5. Paulos Wondiye Yilma
6. Merid Markos Meja