- 1.1
Performance Analysis
2 hr
- 1.2
Asymptotic Notations
1 hr
- 1.3
Recurrence Relations
1 hr
- 1.4
Probabilistic Analysis and Amortized Analysis
1 hr
- 1.5
Comparison of all algorithms using Fibonacci series
1 hr

- 2.1
Binary Search
0.5 hr
- 2.2
Merge Sort
1 hr
- 2.3
Quick Sort
1 hr
- 2.4
Strassens Matrix Multiplication
2 hr
- 2.5
Multiplying 2 long integers
0.5 hr

- 3.1
Job sequencing with deadlines
1 hr
- 3.2
Knapsack Problem
1 hr
- 3.3
Minimum cost spanning trees
2 hr
- 3.4
Single source shortest path problem
1 hr
- 3.5
Huffman codes
1 hr

- 4.1
Selection sort(Straight and Heap sort)
2 hr
- 4.2
Insertion sort(Straight and Shell sort)
1 hr
- 4.3
Exchange sort(Bubble and Quick sort)
3 hr
- 4.4
External sort(Merge, Radix, Bucket and Binary tree sort)
3.5 hr
- 4.5
Binary Search
1 hr
- 4.5
Other searching techniques(Linear, Indexed Sequential Search
etc.)
1 hr

## Course Details

The following topics will be covered in detail:

### Introduction

In this section we will learn about the specifications of an algorithm. We will also learn to analyse and compare the performance of different algorithms. Randomized algorithms will also be touched upon.

### Divide and Conquer

This isn't just a strategy to win wars. It is also a way to solve complex problems in the computer world. Using this strategy, a problem is divided into smaller, simpler sub problems, which can be easily solved. In this section we learn about divide and conquer, its features and advantages. We also look at and analyse a few algorithms like Binary Search, Merge Sort, Quick Sort, Selection Sort and Strassen's Matrix Multiplication, which use this strategy.

### Greedy Method

Being greedy can be beneficial, especially in the computer science world. Using the greedy method, we solve complex problems by choosing that next step which will provide the most benefit. In this section we will learn about a few algorithms based on the greedy method such as the Knapsack Problem, Job Sequencing with Deadlines, Minimum-Cost Spanning Trees, Optimal Storage on Tapes, Optimal Merge Patterns and Single-Source Shortest Path.

### Dynamic Programming

"Remember your past" is what dynamic programming tells us. We use past results to make solving a future problem easier. This is a very powerful technique in which a complex problem is broken down into simpler sub - problems, the result of which is stored to find the final solution. In this section we look at how to achieve dynamic programming, where is it best applied and its advantages. We will learn about Multistage Graphs, All-Pairs Shortest Paths, Single-Source Shortest Paths, Optimal Binary Search Trees, 0/1 Knapsack, Reliability Design and Travelling Salesperson Problem.

### Backtracking

If you have ever played chess or if you have ever solved a puzzle, then you have already used the backtracking strategy. Try an approach, if you don't reach the solution then backtrack and try another approach. This is also how backtracking works in the field of computer science. In this section we will try to solve some interesting problems such as 8-Queens Problem, Graph Colouring, Hamiltonian Cycles and the Knapsack Problem, using the backtracking approach.

### Branch and Bound

If you have ever maintained your garden, removed the unwanted weeds and pruned the branches of your plants, then you have used the branch and bound algorithm to do so. In this section we will look at how to apply the same algorithm to solve problems. We will learn about the FIFO Branch-and-Bound and LC Branch-and-Bound. We will then use this algorithm to solve the 0/1 Knapsack Problem and Travelling Salesperson Problem.

### NP-Complete Problems

The problems we have seen so far have a polynomial time complexity. However some problems are non-deterministic and not that "quick" to derive a solution. In this chapter learn how to identify NP complete and NP hard problems.

### Do I need to have a programming background prior to learning Algorithms?

Yes, you need to have the fundamentals of the programming language, in which you want to study algorithms, clear.

### What is the course duration?

The course duration normally is around 35-40 hours. But since the learning is customised, it can vary depending on the student/batch.

### How many students are there in a batch?

A minimum of 2 and a maximum of up to 5. If you are the only one, then we recommend getting some of your friends. But if you are still interested and passionate to learn, we can consider your request.

### How will learning Algorithms help me?

Algorithms will help you to analyse a problem and design an algorithm for it that will be efficient in terms of both time and space complexity. It will allow you to approach a problem in many different ways.

### Do I get a certificate after the completion of the course?

Yes, we do provide a participation certificate. However, if you wish to to obtain an excellence certificate then it is necessary for you to complete all the tests that are provided after each chapter and a final test taken at the end of the course.

### Do I have to pay the full amount for the course at once?

No. You can pay in installments after discussing with the finance team at Bloombench. We are here to make your learning process easy and fun.

### How do I register for the course?

If you are interested in the course, reserve your seat in the reservation form below

### What if my course syllabus does not match with the curriculum that is specified?

As it is personalised teaching the curriculum can be modified according to the student requirement. But in general the curriculum covers all the important topics needed.

### What if I miss a particular lecture?

If you miss a particular lecture there will be a coverup arranged for you depending on the availability of the professor

### What if I want to change my batch?

Yes, if you are not comfortable in a particular batch you can change it

### Is the fees refundable?

Yes, it is refundable depending on the refund policies