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 7 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|
|Section 2: Prefix Tree - Tries|
Prefix tree introduction - basics
Prefix tree introduction - insert
Prefix tree introduction - sorting
Prefix tree introduction - autocomplete
Prefix tree introduction - trie as a hash table
Prefix tree introduction - hashing versus tries
Prefix tree introduction - applications
Prefix tree implementation - insert, search I
Prefix tree implementation - insert, search II
Prefix tree implementation - insert, search III
Prefix tree implementation - as a map
Prefix tree implementation - autocomplete
Prefix tree implementation - sorting
Longest common prefix
Longest common prefix in networking
|Section 3: Ternary Search Tree|
Ternary search tree introduction - basics
Ternary search tree introduction - operations
Ternary search tree introduction - applications
TST implementation I
TST implementation II
|Section 4: Substring Search|
Brute-force search introduction
Brute-force search implementation
Boyer-Moore search introduction
Rabin-Karp algorithm introduction
|Section 5: Strings|
Longest common prefix
Longest repeated substring problem
|Section 6: Basic Sorting Algorithms|
Adaptive sorting algorithmsPreview
Bogo sort introduction
Bogo sort implementation
Bubble sort introductionPreview
Bubble sort implementation
Selection sort introduction
Selection sort implementation
Insertion sort introduction
Insertion sort implementation
Shell sort introduction
Shell sort implementation
Merge sort introduction
Merge sort implementation
Hybrid algorithms introduction
Non-comparison based algorithms
Counting sort introduction
Counting sort implementation
Radix sort introduction
|Section 7: Data Compression|
Run length encoding introduction
Run length encoding implementation
Huffman encoding introduction
Huffman encoding implementation I - helper classes
Huffman encoding implementation II - encoding
Huffman encoding implementation III - testing
LZW compression introduction
LZW implementation I - compress
LZW implementation II - decompress
LZW implementation III - testing
|Section 8: Source Code & Slides|
Discounts for other courses
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.