Dr. Ramadan
CPSC 502:
Analysis of Algorithms
Office:
Office Hours: Before and after class
Text:
Required:
Suggested:
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’.
·
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