Analysis and Design of Algorithms
Information
Course Overview
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.
Course Objectives
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.
Reference Material
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
Lecture Note
Algorithms Unlocked: Design, Analysis, and Optimization with C++, by Mahmmoud Mahdi (Release v1.0)
Important Course Notes
Class Sessions
Saturday {8:00-10:00} [AI-2nd] @M1.
Office Hours
Tuesday {13:30-15:30} [Office Room] @424
Grading Criteria
Assignments - 20%
Attendance - 10%
Quiz - 10%
Oral Exam - 10%
Midterm Exam - 25%
Projects - 25%
Late assignments and make-up
Assignments submitted after the due date are docked 10% per day and will not be accepted for credit after a week.Â
Lab & Workshops
Lab Tools: Code::BlockÂ
Social Group
Facebook group