Analysis & Design of Algorithms (CSCE 321) Prof. Amr Goneid Department of Computer Science, AUC Part 0. Course Outline Prof. Amr Goneid, AUC
Analysis & Design of Algorithms Prof. Amr Goneid, AUC
Course Resources Instructor: Prof. Amr Goneid E-mail: goneid@aucegypt.edu Office: Rm 2152 SSE Text Books: “Introduction to the Design and Analysis of Algorithms “, by Anany V. Levitin Pearson Higher Education, International Edition, 2/E, 2007 “Computer Algorithms/C++”, by Horowitz, Sahni and Rajasekaran, Computer Science Press, 1997 Other References: “The Algorithm Design Manual”, by S. Skiena, Springer-Verlag, 1998 “Algorithms in C++”, by R. Sedgewick, Addison-Wesley, 1992 Language: C++ Web Site: www.cse.aucegypt.edu/~csci321/ Prof. Amr Goneid, AUC
Analysis & Design of Algorithms Algorithm analysis Analysis of resource usage of given algorithms (time , space) Efficient algorithms Algorithms that make an efficient usage of resources Algorithm design Methods for designing efficient algorithms Prof. Amr Goneid, AUC
Analysis & Design of Algorithms Why study this subject? Efficient algorithms lead to efficient programs. Efficient programs sell better. Efficient programs make better use of hardware. Programmers who write efficient programs are preferred. Prof. Amr Goneid, AUC
Objectives To gain experience in fundamental techniques used for algorithm analysis. To gain experience in the main methodologies used for the design of efficient algorithms. To study the most important computer algorithms of current practical use. Prof. Amr Goneid, AUC
Contents Material for Revision and Reference (Mainly from CSCE 210) R1. Elementary Data Structures R2. Binary Search Trees R3. Priority Queues R4. Disjoint Sets R5. Graphs Basics Complexity Bounds Types of Complexities Time Complexity Calculations Prof. Amr Goneid, AUC
Contents Analysis of Iterative and Recursive Algorithms Brute Force Algorithms Recursive Algorithms Major Algorithm Design Methodologies Transform & Conquer Algorithms Divide & Conquer Algorithms Greedy Algorithms Intermezzo Dynamic Programming Backtracking Algorithms Graph Algorithms Branch & Bound Other Strategies (Heuristics, String & Numerical Algorithms) Prof. Amr Goneid, AUC
Grading 25 % Assignments 5 % Quizzes, class participation and attendance 20 % 1st Midterm Exam 20 % 2nd Midterm Exam 30 % Final Exam All exams are closed book Prof. Amr Goneid, AUC
Course Outcomes After completing the CSCE 321, students should be able to: Use big O, omega, and theta notation to give asymptotic upper, lower, and tight bounds on time and space complexity of algorithms. Determine the time and space complexity of simple algorithms. Recognize the difference between mathematical modeling and empirical analysis of algorithms, and the difference between deterministic and randomized algorithms. Deduce recurrence relations that describe the time complexity of recursively defined algorithms and work out their particular and general solutions. Prof. Amr Goneid, AUC
Course Outcomes Practice the main algorithm design strategies of Brute Force, Exclude & Conquer, Transform & Conquer, Divide & Conquer, Greedy methods, Dynamic Programming, Backtracking and Branch & Bound and implement examples of each. Identify examples of everyday human behavior that exemplifies the basic concepts of the main design strategies. Implement the most common quadratic and O(N log N) sorting algorithms and perform their complexity analysis. Solve problems using the fundamental graph algorithms including depth-first and breadth-first search, single-source and all-pairs shortest paths, transitive closure, topological sort, and the minimum spanning tree algorithms. Evaluate, select and implement algorithms in programming context. Prof. Amr Goneid, AUC