Course Detail

16 Weeks

Design and Analysis of Algorithms.

Course Information

  • Course Instructor Prof. C.Pratap
  • Level Undergraduate
  • Language English
  • Enrolled Colleges 35
  • Total Students 1499
  • Course Duration 16 Weeks
  • Course Start November 21, 2016


Design and Analysis of Algorithms (B.Tech. III Year II Sem- CSE/IT)

In computer science, the analysis of algorithms is the determination of the amount of resources (such as time and storage) necessary to execute them.Most algorithms are designed to work with inputs of arbitrary length. Usually, the efficiency or running time of an algorithm is stated as a function relating the input length to the number of steps (time complexity) or storage locations (space complexity).

Course Overview

Introduction to fundamental techniques for designing and analyzing algorithms, including asymptotic analysis; divide-and-conquer algorithms and recurrences; greedy algorithms; data structures; dynamic programming; graph algorithms; and randomized algorithms.


Introduction to proofs, and discrete mathematics and probability. If you have not taken a probability course, you should expect to do some independent reading during the course on topics including random variables, expectation, conditioning, and basic combinatorics.

Course Objectives

Upon completion of this course, students will be able to do the following:

• Analyze the asymptotic performance of algorithms.
• Write rigorous correctness proofs for algorithms.
• Demonstrate a familiarity with major algorithms and data structures.
• Apply important algorithmic design paradigms and methods of analysis.
• Synthesize efficient algorithms in common engineering design situations.

Course Outcome

Students who complete the course will have demonstrated the ability to do the following:

• Analyze worst-case running times of algorithms using asymptotic analysis.
• Describe the divide-and-conquer paradigm and explain when an algorithmic design situation calls for it.
• Describe the dynamic-programming paradigm and explain when an algorithmic design situation calls for it.
• Describe the greedy paradigm and explain when an algorithmic design situation calls for it.
• Explain the major graph algorithms and their analyses. Employ graphs to model engineering problems, when appropriate. Synthesize new graph algorithms and algorithms that employ graph computations as key components, and analyze them.
• Explain the different ways to analyze randomized algorithms (expected running time, probability of error). Recite algorithms that employ randomization. Explain the difference between a randomized algorithm and an algorithm with probabilistic inputs.