Dr.  Ramadan                                                                             

CPSC 502: Analysis of Algorithms

 

Office: Technology Building 162

Office Hours:   Before and after class

 

Text:

Required:

  • Algorithm Design, Foundations, Analysis, and Internet Examples, Godrich, Tamassia.

Suggested:

  • Data Structures and Algorithms in C++, Godrich, Tamassia, Mount.
  • Algorithms and data Structures, Kingston.
  • Introduction to Algorithms, Cormen, Leiserson, Rivest, Stein.

 

Course Objectives:

The course is an advanced class with a focus on data structures and algorithm design and analysis. Many important algorithms will be studied and implemented. Performance and correctness considerations of algorithms will be studied. The student is expected to be proficient in programming in the C++ language and familiar with OO design.

 

CS 502 is not, however, a programming language class. Students are responsible for teaching themselves (if necessary) the more basic C++ constructs.

 

There will be several programming assignments, an examination and a final project. All assignments must be handed in at the beginning of the class on the due date to receive full credit.  For all programming assignments students will use C++; it will be used in the lectures and examples. All students will eventually need to be proficient in writing C++ source code. However, it is possible that some students may enter this class with a background in other programming languages like Java.

 

Determination of Grade:

 

Midterm Exam                 -           35%

Final Exam                      -           35%    

Assignments                   -           30%

 

            note:     All programming  assignments must be handed in according to the following specifications:

·  Modular coding is required, using appropriate OO concepts

·  Include accompanying documentation with a clear program statement and explanation of each module. Use pre and post conditions for functions and methods.

·  Microcomputer programs must include all I/O files and source code hardcopies and a diskette

·  UNIX programs must include all I/O files and source code hardcopies as well as the program listing hardcopy. The code must be clearly documented to receive a grade of ‘A’.

 

 


Topics

 

·                                Mathematical methods for complexity analysis

 

·                                Proofs of Correctness

 

·                                Time Complexity of algorithms

 

·                                Analyzing algorithm complexity

 

 

·                                Graphs: directed and undirected graphs.  BFS, DFS, least-cost path algorithms

 

 

·                                Stack, Queue, and List  ADT and applications

 

 

·                                Amortized Complexity

 

 

·                                Algorithm Design Techniques: Dynamic Programming, Recursive, Iterative

 

 

·                                Recursive Algorithms and Searching techniques

 

 

·                                Sorting algorithms: performance analysis

 

 

·                                Trees ADT: general, binary, BST. Huffman Trees

 

 

·                                Advanced Trees: B-Trees, AVL Trees and the Symbol Table ADT

 

 

·                                Priority Queues: Heap ordered trees and Binomial Queues

 

 

·                                Other selected topics