Find online courses made by experts from around the world.
Take your courses with you and learn anywhere, anytime.
Learn and practice realworld skills and achieve your goals.
This course introduces some basic data structures (arrays, linked lists, stacks, queues, trees and heaps) and algorithms (various sorting algorithms, and algorithms for operations on binary search trees and heaps). We will also cover recursion in this course. Use of graphics and animations makes the lectures very easy to understand and digest. After taking this course, you will loose your fear for data structures and algorithms.
Not for you? No problem.
30 day money back guarantee.
Forever yours.
Lifetime access.
Learn on the go.
Desktop, iOS and Android.
Get rewarded.
Certificate of completion.
Section 1: Introduction to Algorithms  

Lecture 1 
Introduction
Preview

01:08  
Lecture 2 
Euclid's algorithm

04:49  
Lecture 3 
Bubble Sort algorithm

02:52  
Lecture 4 
Why study data structures & algorithms

03:10  
Lecture 5 
Correctness of an algorithm

01:35  
Quiz 1 
Chapter Quiz

2 questions  
Section 2: Analysis of Algorithms  
Lecture 6 
Note on this section
Preview

Article  
Lecture 7 
Introduction
Preview

03:20  
Lecture 8 
How to calculate the time complexity
Preview

02:52  
Lecture 9 
The RAM model of computation
Preview

02:07  
Lecture 10 
Time complexity of Bubble sort algorithm

03:25  
Lecture 11 
Pseudo code : Bubble sort algorithm

03:02  
Lecture 12 
The Big O notation

03:26  
Lecture 13 
Using Big O notation : Examples

04:41  
Lecture 14 
Comparison of running times

04:02  
Quiz 2 
Chapter Quiz

7 questions  
Section 3: Basic Sorting and Search Algorithms  
Lecture 15 
Selection Sort

02:48  
Lecture 16  02:34  
One of the problems that people face in writing algorithms is how to translate their thoughts into a programming language. Many people cannot even start writing the very first statement of an algorithm. I suggest that if you are having such trouble, don't try to solve the whole problem together, rather break it down into smaller, easier parts. For e.g. try doing the following in writing code for the selection sort algorithm 
Hopefully, by this time you will have enough clarity on completing the sorting algorithm, if you understood the pseudo code. 

Lecture 17 
Introduction to Insertion Sort

01:56  
Lecture 18 
Applying Insertion Sort algorithm to cue balls

02:08  
Lecture 19 
Insertion Sort: Pseudocode

02:38  
Lecture 20 
O(n²) sorting algorithms  Comparison

02:00  
Lecture 21 
In place sorting

Article  
Lecture 22 
Stable Vs Unstable Sorts

03:46  
Lecture 23 
Searching elements in an un ordered array

03:16  
Lecture 24 
Searching elements in an ORDERED array

02:33  
Lecture 25 
Searching elements in an ORDERED array  contd.

05:48  
Lecture 26 
Inserting and Deleting items in an ORDERED array

02:08  
Lecture 27  01:33  
Try to write generic sort methods, like shown in the InsertionSortWithGenerics.java, for Bubble sort and Selection sort algorithms as an exercise. But if you don't want to get into generics at this point, you may choose to skip this section. 

Quiz 3 
Chapter Quiz

6 questions  
Lecture 28 
Assignment

Article  
Section 4: Linked Lists  
Lecture 29 
What is a Linked List?

03:21  
Lecture 30 
Implementing a Linked List in Java

00:56  
Lecture 31 
Inserting a new Node

05:25  
Lecture 32 
Length of a Linked List

02:11  
Lecture 33 
Deleting the head node

02:11  
Lecture 34 
Searching for an Item

03:11  
Lecture 35 
Using java generics to parameterize the LinkedList

Article  
Lecture 36 
Doubly Ended Lists

03:05  
Lecture 37 
Inserting data in a sorted Linked List

04:38  
Lecture 38 
Doubly Linked List

06:28  
Lecture 39 
Insertion Sort revisited

10:32  
Quiz 4 
Chapter Quiz

4 questions  
Lecture 40 
Assignment

Article  
Section 5: Stacks and Queues  
Lecture 41 
Stacks

02:41  
Lecture 42 
Abstract Data Types

00:37  
Lecture 43 
Implementing Stacks using Arrays

03:21  
Lecture 44 
Queues

02:32  
Lecture 45 
Queues using Arrays

05:29  
Lecture 46 
Double Ended Queues

01:58  
Lecture 47 
Double Ended Queues using Arrays

04:20  
Quiz 5 
Chapter Quiz

7 questions  
Lecture 48 
Assignment

Article  
Section 6: Recursion  
Lecture 49 
Introduction

04:33  
Lecture 50 
Understanding Recursion

03:04  
Lecture 51 
Tail recursion

02:48  
Lecture 52 
Tower of Hanoi

08:25  
Lecture 53 
Tower of Hanoi  Implementation

02:58  
Lecture 54 
Merge Sort

04:09  
Lecture 55 
Merge Sort  Pseudocode

04:24  
Lecture 56 
Merge Step  Pseudocode

04:32  
Lecture 57 
Time Complexity of Merge Sort

02:52  
Quiz 6 
Chapter Quiz

6 questions  
Lecture 58 
Assignment

Article  
Section 7: Binary Search Trees  
Lecture 59 
The Tree Data structure

03:41  
Lecture 60 
Binary Trees

03:34  
Lecture 61 
Binary Search Trees

02:01  
Lecture 62 
Finding an item in a Binary Search Tree

02:24  
Lecture 63 
Implementing the find method

03:02  
Lecture 64 
Inserting an item in a Binary Search Tree

03:34  
Lecture 65 
Deleting an Item : Case 1

06:06  
Lecture 66 
Deleting an Item  Case 2

02:58  
Lecture 67 
Deleting an Item  Case 3

03:44  
Lecture 68 
Deleting an Item  Soft Delete

01:40  
Lecture 69 
Finding smallest & largest values

02:33  
Lecture 70 
Tree Traversal : In Order

03:19  
Lecture 71 
Tree Traversal : Pre Order

01:58  
Lecture 72 
Tree Traversal : Post Order

00:56  
Lecture 73 
Unbalanced Trees Vs Balanced Trees

02:16  
Lecture 74 
Height of a Binary Tree

01:34  
Lecture 75 
Time Complexity of Operations on Binary Search Trees

02:16  
Quiz 7 
Chapter Quiz

5 questions  
Lecture 76 
Assignment

Article  
Section 8: More Sorting Algorithms  
Lecture 77 
Introduction

01:27  
Lecture 78 
QuickSort

04:54  
Lecture 79 
QuickSort: The partition step

02:21  
Lecture 80 
Shell Sort

05:27  
Lecture 81 
Shell Sort: Example

03:28  
Lecture 82 
Counting Sort

04:50  
Lecture 83 
Radix Sort

02:27  
Lecture 84 
Bucket Sort

03:12  
Quiz 8 
Chapter Quiz

3 questions 
I am a graduate of the Indian Institute of Technology, popularly known as IIT. I have worked as a Technical Architect in both product & services based software companies with about 14 years of programming experience (as of June, 2013). I have worked with languages like Perl/Java/Objective C/Scala and JavaScript. I have also used various frameworks/platforms like Spring, Play, Cocoa and Android. I have lead some enterprise application development. In my free time I like to create technical content, which is easy to follow and really helps people in the software industry, do their job better. People undergoing my trainings and videos always have delightful experience and most of them have told me that they wish things were taught in this way at school too. I hope that people taking my courses here benefit to perform their programming jobs better and also are able to get to better positions, with confidence, in case they are looking out. Most recently I have worked as VP Engineering in a Sequoia funded startup and now I am off to do my own startup.