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 Python, but I try to do it as generic as possible: so the core of the algorithms can be used in C++ or Java. The course takes approximately 4 hours to complete. I highly recommend typing out these data structures and algorithms 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, heaps and some advanced ones such as ternary search trees. The second part will be about graph algorithms. We will try to optimize each data structure 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 LiClipse, Python.
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. Research institutes use Python as a programming language in the main: there are a lot of library available for the public from machine learning to complex networks.
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: Setup|
|Section 3: Complexity Theory|
Complexity notations example
Algorithm running times
|Section 4: Data Structures - Arrays|
Arrays introduction - basics
Arrays introduction - operations
Arrays in PythonPreview
|Section 5: Data Structures - Linked Lists|
Linked list introduction - basicsPreview
Linked list introduction - operations
Linked list theory - doubly linked list
Linked list introduction - linked lists versus arrays
Linked list implementation I - insertPreview
Linked list implementation II - traverse
Linked list implementation III - remove
Linked list implementation IV - testing
|Section 6: Data Structures - Stacks & Queues|
Stacks in memory management ( stacks, heaps )
Stacks and recursive method calls
|Section 7: Data Structures - 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 tree implementation I
Binary Search Tree implementation II
Binary Search Trees Quiz
|Section 8: Data Structures - Balanced Binary 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 - applications
AVL tree implementation I
AVL tree implementation II
Balanced Trees Quiz
|Section 9: Red-Black Tree|
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
|Section 10: Data Structures - Heaps|
Priority queues introduction
Heap introduction - basics
Heap introduction - array representation
Heap introduction - remove operation
Heap introduction - heapsort
Heap introduction - operations complexities
Other types of heaps: binomial and Fibonacci heap
Heap implementation I
Heap implementation II - heapsort
Heaps in Python
|Section 11: Data Structures - Associative Arrays / Dictionaries|
Associative array ADT
Hashtable introduction - basics
Hashtable introduction - collisions
Hashtable introduction - dynamic resizing
Dictionaires in Python
|Section 12: Data Structures - Tries|
Ternary search trees introduction - basics
Ternary search trees introduction - operations
Ternary search trees introduction - applications
Ternary search trees implementation I
Ternary search trees implementation II
|Section 13: Graph Algorithms|
Euler cycles introduction - chinese postman problem
|Section 14: Graph Algorithms - Graph Traversal Algorithms|
Breadth-first search introduction
Breadth-first search implementation
Depth-first search introduction
Depth-first search implementation
|Section 15: Graph Algorithms - Shortest Paths|
Dijkstra algorithm introduction - basics
Dijkstra algorithm introduction - algorithm
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.