Find online courses made by experts from around the world.
Take your courses with you and learn anywhere, anytime.
Learn and practice real-world skills and achieve your goals.
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 5 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 hash tables and ternary search trees. The second part will be about data compression. 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 step by step 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.
Not for you? No problem.
30 day money back guarantee.
Learn on the go.
Desktop, iOS and Android.
Certificate of completion.
|Section 1: Introduction|
Why to use data structures
Data structures and abstract data types
|Section 2: Complexity Theory|
Complexity notations examples
Algorithms running time
|Section 3: Arrays|
Arrays introduction - basics
Arrays introduction - operations
ArraysLists in Java
|Section 4: Linked Lists|
Linked lists theory - basics
Linked list theory - operations
Linked list theory - doubly linked lists
Linked list theory - linked lists versus arrays
Linked list implementation IPreview
Linked list implementation IIPreview
Linked list implementation III
Linked lists in java.util
|Section 5: Stacks & Queues|
Stacks in memory management ( stacks, heaps )
Stacks and recursive method calls
Stack implementation with linked list I
Stack implementation with linked list II
Stack implementation with arrays
Dijkstra's interpreter introduction
Dijkstra's interpreter implementation
Queue implementation with linked list
Java built in java.util.Stack and java.util.Queue classes
|Section 6: Binary Search Trees|
Binary search trees theory - basics
Binary search trees theory - search, insert
Binary search trees theory - delete
Binary search trees theory - in-order traversal
Binary search trees theory - running times
Binary search trees implementation I - Node, Tree
Binary search trees implementation II - insertion
Binary search tree implementation III - maximum, minimum
Binary search tree implementation IV - traversal
Binary search tree implementation V - remove
Custom objects in a tree
|Section 7: Balanced Trees: AVL Trees|
AVL trees introduction - motivation
AVL trees introduction - basics
AVL trees introduction - height
AVL trees introduction - rotations cases
AVL trees introduction - illustration
AVL trees introduction - sorting
AVL implementation - Node and Tree
AVL implementation - balance and height parameters
AVL implementation - implementing the rotations
AVL implementation - insertion I
AVL implementation - insertion II
AVL implementation - testing
AVL tree remove introduction
AVL tree remove implementation I
AVL tree generic implementation
|Section 8: Balanced Trees: Red-Black Trees|
Red-black trees introduction - basics
Red-black trees rotations- cases I
Red-black trees rotations- cases II
Red-black trees rotations- cases III
Red-black trees rotations- cases IV
Red-black trees introduction - example I
Red-black trees introduction - example II
Red-black tree versus AVL tree
Red-black tree implementation I - Node class
Red-black tree implementation II - traverse
Red-black tree implementation III - insert
Red-black tree implementation IV - rotate left / right
Red-black tree implementation V - fixing the violations
Red-black tree implementation VI - fixing the violations
Red-black tree implementation VII - testing
|Section 9: Splay Trees|
Splay tree introduction I
Splay tree introduction II
Splay tree implementation I
Splay tree implementation II - spalying
Splay tree implementation III - testing
|Section 10: B-Trees|
B-tree introduction - basics
B-tree and external memory
Disk access times
B-tree introduction - search
B-tree introduction - insertion
|Section 11: Binary Heaps|
Priority queues introduction
Heap introduction - basics
Heap introduction - array representation
Heap introduction - remove operation
Heap introduction - heapsort
Heap introduction - running times
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 Black-Scholes model, or the Merton-model. Quantitative analysts use these algorithms and numerical techniques on daily basis so in my opinion these topics are definitely worth learning.