CS583 Analysis of Algorithms (Fall 2008)


  • Instructor: Amarda Shehu amarda\AT\cs.gmu.edu
    Place and Time: Enterprise Hall #278, R 7:20-10:00 pm
    Office Hours: STII #417, W 6:00 - 7:00 pm and by appointment
    TA: Zhi Zhang, zzhang8\AT\gmu.edu, T 5:00-7:00 pm


  • This course will offer students a set of techniques by which to design and analyze algorithms. The class will cover recurrence relations, probabilistic analysis, sorting algorithms, advanced data structures for searching and mapping, optimization algorithms and advanced analysis, and graph algorithms. The last few lectures of the class will be devoted to the topic of NP-completeness, approximation algorithms, and special topics in bioinformatics.


  • Material will be disseminated in the form of lectures. Students will be tested on the comprehension of the basic material through homeworks, exams, and a programming project. In addition to the basic material, special topics will be covered. Research articles covering these topics will be distributed to students. Students that are interested in more advanced topics will be accommodated and should contact the instructor. Students that are interested in presenting specific topics in class in the form of lectures should contact the instructor.

    Extra credit in the homeworks and exams will allow students that are interested in advanced topics and research to demonstrate their abilities. Extra credit will not account for more than 10% of the total grade of a homework or exam.

    Some homeworks may include programming and reporting on the performance of algorithms implemented. No programming is involved in the exams, only pseudocode. No late homeworks or project deliverables will be accepted.

    For the programming project, students can choose from a list of topics or suggest their own. Students can also choose whether they prefer to be part of a team of no more than 3 students or work individually. If working in a team, students will be asked to document their individual contribution to the project. The grade on the project will combine both the overall project and the individual contribution.

    The project will test students in their ability to motivate the importance of the topic they have chosen, present, and critically defend their approach. Progress report on the project will consist of a two-page manuscript. Final deliverables include code, executable, and a manuscript that will be submitted in the last class in place of a final exam. A short presentation will also demonstrate the completion of the project. Students that are interested in conducting research with the instructor should consider this project as a good opportunity to showcase their ability to conduct research.


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


  • Required Reading: Introduction to Algorithms by T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, The McGraw-Hill Companies, 2nd Edition (2001). Recommended Reading: Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani, The McGraw-Hill Companies (2008). The book is available at http://www.cs.berkeley.edu/~vazirani/algorithms.html.


Grade Breakdown

  • Homeworks: 25% (5% each)
    Exam 1: 25%
    Exam 2: 25%
    Project: 25% [10% towards Presentation and 15% towards Deliverable]