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.
Hi!
This course is about data structures and algorithms. We are going to implement the problems in Java, but I try to do it as generic as possible: so the core of the algorithms can be used in C++ or Python. The course takes approximately 11 hours to complete. I highly recommend typing out these data structures several times on your own in order to get a good grasp of it.
In the first part of the course we are going to learn about basic data structures such as linked lists, stacks and queues, heaps and some advanced ones such as AVL trees, redblack trees orÂ hash tables.Â We will try to optimize each data structure ( for example avoiding obsolete references ) as much as possible.
In each chapter I am going to talk about the theoretical background of each algorithm or data structure, then we are going to write the code on aÂ step by step basisÂ in Eclipse, Java.
Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market.
LASTÂ UPDATEÂ OFÂ THEÂ COURSE: 2016 october
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  

Lecture 1 
Introduction
Preview

01:13  
Lecture 2 
Why to use data structures

03:54  
Lecture 3 
Data structures and abstract data types

03:58  
Lecture 4 
Complexity theory

00:05  
Section 2: Arrays  
Lecture 5 
Arrays introduction  basics

05:55  
Lecture 6 
Arrays introduction  operations

05:53  
Lecture 7 
Using arrays

09:51  
Lecture 8 
ArraysLists in Java

08:42  
Section 3: Linked Lists  
Lecture 9 
Linked lists theory  basics

07:09  
Lecture 10 
Linked list theory  operations

09:32  
Lecture 11 
Linked list theory  doubly linked lists

01:40  
Lecture 12 
Linked list theory  linked lists versus arrays

06:36  
Lecture 13 
Linked list implementation I
Preview

04:47  
Lecture 14 
Linked list implementation II
Preview

11:40  
Lecture 15 
Linked list implementation III

07:55  
Lecture 16 
Linked lists in java.util

08:14  
Section 4: Stacks & Queues  
Lecture 17 
Stack introduction

04:00  
Lecture 18 
Stacks in memory management ( stacks, heaps )

07:23  
Lecture 19 
Stacks and recursive method calls

07:02  
Lecture 20 
Stack implementation with linked list I

07:28  
Lecture 21 
Stack implementation with linked list II

03:37  
Lecture 22 
Stack implementation with arrays

11:01  
Lecture 23 
Dijkstra's interpreter introduction

01:18  
Lecture 24 
Dijkstra's interpreter implementation

09:12  
Lecture 25 
Queues introduction

05:12  
Lecture 26 
Queue implementation with linked list

09:43  
Lecture 27 
Java built in java.util.Stack

05:09  
Section 5: Binary Search Trees  
Lecture 28 
Binary search trees theory  basics

10:23  
Lecture 29 
Binary search trees theory  search, insert

04:25  
Lecture 30 
Binary search trees theory  delete

06:08  
Lecture 31 
Binary search trees theory  inorder traversal

04:25  
Lecture 32 
Binary search trees theory  running times

02:10  
Lecture 33 
Binary search trees implementation I  Node, Tree

07:02  
Lecture 34 
Binary search trees implementation II  insertion

09:55  
Lecture 35 
Binary search tree implementation III  maximum, minimum

07:24  
Lecture 36 
Binary search tree implementation IV  traversal

05:41  
Lecture 37 
Binary search tree implementation V  remove

09:25  
Lecture 38 
Binary search tree implementation VI  remove II

05:54  
Lecture 39 
Custom objects in a tree

06:44  
Section 6: Balanced Trees: AVL Trees  
Lecture 40 
AVL trees introduction  motivation

04:13  
Lecture 41 
AVL trees introduction  basics

05:21  
Lecture 42 
AVL trees introduction  height

08:44  
Lecture 43 
AVL trees introduction  rotations cases

10:17  
Lecture 44 
AVL trees introduction  illustration

10:50  
Lecture 45 
AVL trees introduction  sorting

03:38  
Lecture 46 
AVL implementation  Node and Tree

03:21  
Lecture 47 
AVL implementation  balance and height parameters

04:45  
Lecture 48 
AVL implementation  implementing the rotations

07:35  
Lecture 49 
AVL implementation  insertion I

06:03  
Lecture 50 
AVL implementation  insertion II

08:52  
Lecture 51 
AVL implementation  testing

03:19  
Lecture 52 
AVL tree remove introduction

06:35  
Lecture 53 
AVL tree remove implementation I

08:30  
Lecture 54 
AVL tree generic implementation

03:55  
Section 7: Balanced Trees: RedBlack Trees  
Lecture 55 
Redblack trees introduction  basics

10:38  
Lecture 56 
Redblack trees rotations cases I

05:10  
Lecture 57 
Redblack trees rotations cases II

04:25  
Lecture 58 
Redblack trees rotations cases III

03:17  
Lecture 59 
Redblack trees rotations cases IV

02:45  
Lecture 60 
Redblack trees introduction  example I

04:47  
Lecture 61 
Redblack trees introduction  example II

04:19  
Lecture 62 
Redblack tree versus AVL tree

03:25  
Lecture 63 
Redblack tree implementation I  Node class

04:28  
Lecture 64 
Redblack tree implementation II  traverse

02:06  
Lecture 65 
Redblack tree implementation III  insert

03:39  
Lecture 66 
Redblack tree implementation IV  rotate left / right

05:48  
Lecture 67 
Redblack tree implementation V  fixing the violations

09:51  
Lecture 68 
Redblack tree implementation VI  fixing the violations

05:52  
Lecture 69 
Redblack tree implementation VII  testing

01:59  
Section 8: Splay Trees  
Lecture 70 
Splay tree introduction I  basics

12:49  
Lecture 71 
Splay tree introduction II  example

03:52  
Lecture 72 
Splay tree implementation I  find, rotate

09:44  
Lecture 73 
Splay tree implementation II  spalying

05:50  
Lecture 74 
Splay tree implementation III  testing

03:34  
Section 9: BTrees  
Lecture 75 
Btree introduction  basics

10:40  
Lecture 76 
Btree and external memory

04:07  
Lecture 77 
Disk access times

05:41  
Lecture 78 
Btree introduction  search

02:46  
Lecture 79 
Btree introduction  insertion

07:10  
Lecture 80  05:30  
Lecture 81 
Inorder traversal

04:06  
Section 10: Binary Heaps  
Lecture 82 
Priority queues introduction

08:13  
Lecture 83 
Heap introduction  basics

08:14  
Lecture 84 
Heap introduction  array representation

09:17  
Lecture 85 
Heap introduction  remove operation

04:43  
Lecture 86 
Heap introduction  heapsort

05:13  
Lecture 87 
Heap introduction  running times

05:05  
Lecture 88 
Other types of heaps: binomial and Fibonacci heap

02:59  
Lecture 89  06:46  
We start the implementation of the MAX heap. So the maximum value will be the root node! 

Lecture 90 
Heap implementation  get the minimum/maximum

06:09 
Hi!
My name is Balazs Holczer. I am from Budapest, Hungary. I am qualified as a physicist and later on I decided to get a master degree in applied mathematics. At the moment I am working as a simulation engineer at a multinational company. I have been interested in algorithms and data structures and its implementations especially in Java since university. Later on I got acquainted with machine learning techniques, artificial intelligence, numerical methods and recipes such as solving differential equations, linear algebra, interpolation and extrapolation. These things may prove to be very very important in several fields: software engineering, research and development or investment banking. I have a special addiction to quantitative models such as the BlackScholes model, or the Mertonmodel. Quantitative analysts use these algorithms and numerical techniques on daily basis so in my opinion these topics are definitely worth learning.