Back to Course Home Page
CS 477/677-1:   Analysis of Algorithms (Spring 2018)
2:30pm - 3:45pm (Tuesdays and Thursdays)
Class Room: SEB 1242
Instructor: Dr. Laxmi P. Gewali
  1. Current Catalog Description

    Analysis of the time and space complexity of algorithms. Techniques for efficient algorithm design and effect of structure choice on efficient. Fast algorithms for problems such as set, graph and matrix manipulations, pattern matching, sorting, and storage organization. Exponential time problems and introduction to NP-completeness.
  2. Textbook

    Introduction to Algorithms, Third Edition, by Cormen, Leiserson, Rivest, and Stein
  3. Course Objectives
    1. To introduce growth rates of functions, upper bounds, and lower bounds, asymptotic notations including Big-O, Big-Omega, and Big-Theta., as well as different techniques for solving recurrence relations and their applications to Divide and Conquer and Dynamic Programming
    2. To introduce the paradigm approach for algorithm development, including the divide and conquer, greedy and dynamic programming paradigms, as well as search techniques and amortized analysis.
    3. The student should learn the limitations of algorithms, in particular, the concept of intractability, and approaches for tackling intractable and NP-complete problems.
  4. Prerequisites by Topic
    1. CS 302 (Introduction to Data Structures) (Formerly CSC 269). (Topics: Introduction to sequential and linked structures. File access including sequential, indexed sequential and other file organizations. Internal structures including stacks, queues, trees, and graphs. Algorithms for implementing and manipulating structured objects. Big-O-notation. Laboratory exercises are programmed in the Language C).
    2. MAT 351 (Discrete Mathematics II). (Topics: Infinite sets, Cantor’s diagonal argument, first order logic, formal and informal proofs, combinatorics, Boolean algebra, lattices, and graphs.)
  5. Major Topics Covered in the Course
    1. Time and space complexity, big "Oh", Omega, and Theta notation, solving recurrences including iterative expansion, recurrence tree expansion, substitution, and master method
    2. Searching algorithms: linear search, binary search, search trees, depth first search, breath first search, applications in connectivity properties of graphs.
    3. Divide and conquer approach for algorithm development including, quick-sort, merge-sort, heap-sort, order statistics, matrix multiplication.
    4. Greedy approach for algorithm development including minimum spanning trees (Prim’s and Kruskal’s), Dijkstra's algorithm for shortest path in weighted graphs, and fast algorithms for DAGS (directed acyclic graphs)
    5. Dynamic programming techniques including all pair shortest paths, string matching, edit distance, longest common sequence.
    6. Amortizes analysis of algorithms with examples such as union/find.
    7. NP-completeness and intractability. Definition and a review of classic NP-complete problems, Cook’s theorem, simple reduction.
  6. Expected Outcome
    1. Able to make tight estimate of both time and space complexity of algorithms and their applications.
    2. Ability to use appropriate paradigm approaches (Divide-and-conquer, Dynamic Programming, etc) in developing efficient algorithms.
    3. The student will be familiar with the use of data structures in the development of efficient algorithms.
    4. The student should understand the concept of intractability, and the theory of NP-completeness, and be able to recognize a number of classic NP-complete problems.
Grades will be based on mid-term exams (35%), home works (15%), and final exam (50%).

A students who has a documented disability that may require assistance, will need to contact the Disability Resource Center (DRC) for coordination in his/her academic accommodations. The Disability Resource Center is located in the Reynolds Student Services Complex, room 137. The DRC phone number is 895-0866 or TDD 895-0652.

The University requires all members of the University Community to familiarize themselves and to follow copyright and fair use requirements. You are individually and solely responsible for violations of copyright and fair use laws. The University will neither protect nor defend you nor assume any responsibility for employee or student violations and fair use laws. Violations of copyright laws could subject you to federal and state civil penalties and criminal liability as well as disciplinary action under University policies. To help familiarize yourself with copyright and fair use policies, the University encourages you to visit its copyright web page at: http://www.unlv.edu/committees/copyright/