110 likes | 245 Views
Analysis & Design of Algorithms (CSCE 321). Prof. Amr Goneid Department of Computer Science, AUC Part 0. Course Outline. Analysis & Design of Algorithms. Course Resources. Instructor: Prof. Amr Goneid E-mail: goneid@aucegypt.edu Office: Rm 2152 SSE Text Books:
E N D
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. AmrGoneid • 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