
This course covers the design and analysis of efficient algorithms. Students learn key paradigms like divide-and-conquer, greedy methods, and dynamic programming, and apply them to problems in sorting, searching, graphs, and optimization. Emphasis is placed on analyzing time/space complexity and bridging theory with practice for real-world problem-solving.
- Teacher: Amjed Husain