This course dives into the analysis and design of algorithms, teaching students how to assess their efficiency and develop solutions for complex problems. It covers both the theory behind algorithms and their practical applications, including hands-on coding tasks.
Be able to:
Understand Algorithm Analysis: Learn how to evaluate algorithms' performance using time and space complexity measures.
Learn Algorithm Design Strategies: Get familiar with various strategies like divide and conquer, dynamic programming, and greedy algorithms to design effective solutions.
Develop Efficient Algorithms: Improve skills in creating algorithms that are not only correct but also optimized for speed and memory usage.
Ensure Algorithm Correctness: Be able to prove that an algorithm works correctly in all situations.
Use Advanced Data Structures: Understand and apply complex data structures to enhance algorithm performance.
Tackle Real-World Problems: Apply algorithms to solve practical problems, showing the ability to choose the right approach for each challenge.
Code Implementation: Translate algorithm designs into actual code, gaining experience in programming and algorithm optimization.
Introduction to the Design and Analysis of Algorithms, By Anany Levitin
Introduction to Algorithms, By Kevin
Algorithmic Thinking: A Problem-Based Introduction, by Daniel Zingaro
Algorithms Unlocked: Design, Analysis, and Optimization with C++, by Mahmmoud Mahdi (Release v1.0)
Saturday {8:00-10:00} [AI-2nd] @M1.
Tuesday {13:30-15:30} [Office Room] @424
Assignments - 20%
Attendance - 10%
Quiz - 10%
Oral Exam - 10%
Midterm Exam - 25%
Projects - 25%
Assignments submitted after the due date are docked 10% per day and will not be accepted for credit after a week.Â
Lab Tools: Code::BlockÂ
Facebook group