Welcome to CPCS 223
Analysis & Design of Algorithms
Fall 2019
Faculty of Computing and Information Technology
King Abdulaziz University
Your Instructor
Dr. Haneen Banjar
[email protected] My office:
S116
Office Hours:
By appointment via email
Course
• Textbook: Anany Levitin, "Introduction to the Design & Analysis of Algorithms",
Addison-Wesley Longman; 3rd edition (2012).
• Marks Distribution:
Week Assessment Tool 100%6 Exam 1 15
10 Project (Individual) 15
12 Exam 2 15
15 Homework Assignments 15
16 Comprehensive Final Exam 40
Key Outcomes
Study solutions to
fundamental programming problems
Examine how computer
solutions are designed + how they perform
Compare different solutions
to the same problem
Course Learning Outcome
1. Discuss the formal definition of algorithm.
2. Discus how the efficiency of algorithms is characterized and measured.
3. Solve simple recurrence relations using select (covered) techniques.
4. Determine the time efficiency of simple iterative or recursive
algorithm given its pseudocode using select (covered) techniques and theorems.
5. Use given algorithm to solve small instances of select (covered) problems by hand.
6. Write proper (well-formed) pseudocode based on knowledge of algorithm operation. (Intent: not a design outcome).
7. Analyze select (covered) decrease-conquer algorithms given a pesudocode.
8. Compare select (covered) algorithms and related data structures in terms of design, operation, performance, and applications.
Course Learning Outcome
8. Compare select (covered) algorithms and related data structures in terms of design, operation, performance, and applications.
9. Analyze select (covered) divide-conquer algorithms given a pesudocode.
10. [x] MERGED WITH 8 - Compare select (covered) algorithms and related data structures in terms of operation, performance, and applications.
11. Analyze select (covered) transform-conquer algorithms given a pesudocode.
12.Compare select (covered) data structures with respect to dictionary operations.
13.Apply empirical techniques to assess and report the performance of one or more algorithms.
14. Implement algorithm given its pseudocode in programming language and environment of choice.
15. Design an algorithm to solve a problem based on requirements or solution descriptions, or an outline of steps.
Weekly Schedule
Week No Catalog Topics Plan Weekly Coverage
1 Ch1: Introduction to algorithms (1p-41p)
Formal definition and characterization of
algorithms, major problem areas, data structures review (as needed)
2 Ch2: Fundamentals of algorithm
efficiency (41p-97p) Measuring efficiency, rates of growth and asymptotic notation, efficiency classes 3
Ch2: Fundamentals of algorithm efficiency (41p-97p)
Fibonacci numbers and recurrence relations, Master’s theorem, using sums and recurrences to compute efficiency
4 Ch3: Brute-force algorithms (97p-
131p) Basic search, sorts, text matching, basic geometric algorithms
5 Ch3: Brute-force algorithms (97p-
131p) Exhaustive search and combinatorial problems,
fundamental graph traversals
Weekly Schedule
Week No Catalog Topics Plan Weekly Coverage
6 Ch4: Decrease-conquer
algorithms (131p-169p) Decrease-by-one: digraphs and topological sorting, generating combinatorial objects
7 Ch4: Decrease-conquer
algorithms (131p-169p)
Decrease-by-constant factor: binary search, fake coin problem; variable decrease: interpolation search, the selection problem
8
Ch4: Emprical evaluation of
performance (131p-169p) Empirical study of algorithm efficiency, algorithm visualization
9 Ch5: Divide-conquer algorithms
(169p-201p) Mergesort, quicksort
10 Ch5:Divide-conquer algorithms
(169p-201p) Binary tree algorithms, multiplication of large numbers, Strassen’s matrix multiplication
Weekly Schedule
Week No Catalog Topics Plan Weekly Coverage
11 Ch5:Divide-conquer algorithms
(169p-201p) Divide-conquer geometric algorithms 12 Ch6:Problem transformation
algorithms and data structures (201p-253p)
Efficient polynomial evaluation using Horner’s rule and binary exponentiation, problem reduction
13 Ch6:Problem transformation algorithms and data structures (201p-253p)
Instance simplification: presorting algorithms, using Gaussian elimination for solving systems of linear equations and matrix inversion
14 Ch6:Problem transformation algorithms and data structures (201p-253p)
Balanced search trees and representation change, AVL and 2-3 trees, heaps and heapsort
15 Ch7:Trading space for time
(253p-283) Time permitting topics and catch up material