## About Algorithms

Algorithms talk about the steps taken to achieve a particular
output. An activity as simple as arranging the numbers in either
ascending/descending order has different way of approaching it.
Why do we need to learn these? An efficient algorithm is one
that is efficient in two major aspects - time and space. Before
choosing the right algorithm for a particular task, we need to
understand the math behind the same. Thus learning algorithms
also focuses deriving the run and space time complexity in
mathematical terms. Analysis of Algorithms is an advanced topic
which needs a prior understanding of a programming language.

Our Algorithms for Beginners cover introduction
Algorithms in which we learn about the specifications of the
algorithms and how to analyse and compare algorithms. This is
followed by detailed sessions on problem solving techniques ie.
Brute force (Try all options), Divide and Conquer (split the
data and work on the split), Greedy (Choose the best solution at
every stage), and Sorting & Searching. The Advanced course
covers Dynamic Programming (greatly reduces the run time of
those which normally would take exponential time) and Sorting
& Searching. The courselasts for 30 hours and is spread over
15 sessions. Depending on the requirement, the above courses can
be taken separately or together. All our Analysis of Algorithms
courses are conducted online by a Bloombench tutor over our
browser-based platform that allows an interactive learning
experience for ourstudents wherein they are able to practice the
concepts as soon as it is taught. A typical course has over 100
problems across topics to be solved in presence of a tutor
followed by project work.

## Algorithm for Beginners

- 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.

### Sorting and Searching

Sorting large chunks of data is a common and complex problem in the world of computer science. In this section we will learn about the various sorting algorithms available, such as insertion sort, shell sort, heap sort, quick sort, bucket sort, merge sort and radix sort. We will also analyse and compare all these algorithms. Also, we will learn how to search data effectively in an array with some of the teachniques most suited for a sorted array which includes index sequential search, binary search and interpolation search

### 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

## Dynamic Programming, Sorting and Searching

- 1.1
Knapsack Problem
1 hr
- 1.2
Optimal Binary Search Tree
2 hr
- 1.3
Matrix chain multiplication
1 hr
- 1.4
All pair shortest path
1 hr
- 1.5
Traveling Salesman problem
1 hr

- 2.1
N-Queens problem
1 hr
- 2.2
Sum of subsets problem
1 hr
- 2.3
Graph coloring
1 hr
- 2.4
Hamiltonian cycles
1 hr

- 3.1
Assignment problem
1 hr
- 3.2
Traveling Salesman problem
1 hr
- 3.3
Knapsack Problem
1 hr
- 3.4
15-Puzzle problem
1 hr

- 4.1
P, NP and NP complete
1 hr
- 4.2
Classes P and NP
1 hr
- 4.3
NP-Hardness and NP-Completeness
1 hr
- 4.4
Cooks Theorem
1 hr

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

## Course Details

The following topics will be covered in detail:

### 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.

### Sorting and Searching

Sorting large chunks of data is a common and complex problem in the world of computer science. In this section we will learn about the various sorting algorithms available, such as insertion sort, shell sort, heap sort, quick sort, bucket sort, merge sort and radix sort. We will also analyse and compare all these algorithms. Also, we will learn how to search data effectively in an array with some of the teachniques most suited for a sorted array which includes index sequential search, binary search and interpolation search

### 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