Fall 2012
CS 583 Analysis of Algorithms
Sections 002 and DL1

  Syllabus Page

  Lecture Timetable

  Lecture Slides

  Practice Homework

Course Description:

In this course, a thorough examination of several well-known techniques that are used for the design and analysis of algorithms will be covered. Topics to be studied include theoretical measures of algorithm complexity, sorting and selection algorithms, greedy algorithms, divide and conquer techniques, dynamic programming, graph algorithms, search strategies, and an introduction to the theory of NP-completeness. Additional topics may be covered if time permits.

Students are expected to have taken prior undergraduate courses in data structures and algorithms, formal methods and models, as well as calculus and discrete mathematics. Programming skills are also a prerequisite.


CS 310 (Data Structures) and CS 330 (Formal Methods & Models)
Calculus (MATH 113, 114, 213) and MATH 125 (Discrete Mathematics)
Ability to program in a high-level language that supports recursion (e.g. PL/I, Pascal, C, C++, Lisp, Java)


Prof. Pearl Y. Wang
Computer Science Department
Office:  Nguyen Engineering - ENGR 4304
Tel:       703-993-1527
E-mail:    pwang at cs.gmu.edu
Office Hours:   Wed 6 pm - 7 pm;   other times available by appointment

Teaching Assistant:

Ms. Katherine (Raven) Russell
Email:   krusselc at gmu.edu
Office Hours:  Mon 5 - 7 pm;   Tue/Thurs 3:15 - 4:15 pm
Location:  Nguyen Engineering - ENGR 4456

Class Hours:

Sec 002: Wed 7:20 pm - 10 pm;   ENGR 2608
Sec DL1: Wed 7:20 pm - 10 pm;   NET

This course is delivered to the Internet section online using a Moodle learning management system with MIST/C, which has replaced the Network EducationWare (NEW) delivery system. Students in all sections will have accounts and will be able to download material and participate in discussions on the Moodle course page. However, only students in online sections will be able to connect to class sessions and to download recordings of the lectures. Login information will be sent to all enrolled students by email, before the first scheduled class.

Required Textbook:

Cormen, Leiserson, Rivest, & Stein, Introduction to Algorithms (Third Edition), The MIT Press, 2009

Please note this is the latest edition of the textbook. If you are using an earlier edition, the content and problem numbers may not agree with those used in the class lectures and materials.

Course Requirements & Grading:

The course grade is based on at least two 1.5 hour examinations and a comprehensive final examination. All required coursework must be completed by the stated due date and time. Late coursework will not be accepted and make-up tests will not be given for missed examinations.

Students in the NET section are expected to come to GMU to take the exams on the dates/times stated in the detailed Timetable.

1.5-Hour Exams:   50 %
Final Exam:           50 %
All required coursework for this class is to be performed independently. Please read the information about GMU and CS Department Academic Integrity and Honor Code Policies at

These policies will be strictly enforced.

If you have a documented learning disability or other condition that may affect academic performance you should: 1) make sure this documentation is on file with the Office of Disability Services (SUB I, Rm. 4205; 993-2474; http://ods.gmu.edu/) to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs.

Important Dates:

Last day to add:  September 4, 2012
Last day to drop: September 4, 2012 (no tuition penalty)
Final day to drop: September 28, 2012

Columbus Day recess: October 8, 2012
Thanksgiving recess: November 21 - 25, 2012
Last day of classes: December 8, 2012

Final Examination: December 12, 2012, 7:30 pm - 10:15 pm

Tentative List of Topics:

Please see the Timetable for the final list of topics.

You are expected to be familiar with the material in Chapters 10 - 12 and Appendix VIII that is taught in prerequisite courses.

Topic Chapter(s)
Introduction 1-2
Growth of Functions 3
Divide-and-Conquer 4
Probabilistic Analysis and Randomized Algorithms 5
Sorting and Order Statistics 6 - 9
Red-Black Trees 13
Dynamic Programming 15
Greedy Algorithms 16
Amortized Analysis 17
Fibonacci Heaps & Disjoint Sets 19, 21
Graph Algorithms 22 - 25
Multi-threaded Algorithms (if time permits) 27
NP-Completeness 34 - 35

Created: 21 Aug 2012
P.Y. Wang