Brief Summary
This course dives into essential algorithms and data structures using Java. Over 20 hours, students will explore everything from arrays to advanced trees, while building necessary coding skills and understanding optimal solutions.
Key Points
-
Introduction to data structures and abstract data types.
-
Understanding arrays, linked lists, stacks, and queues.
-
Exploring binary search trees, AVL trees, and red-black trees.
-
Learning hashing techniques and HashMaps.
-
Analyzing sorting algorithms and substring search algorithms.
Learning Outcomes
-
Gain hands-on experience with various data structures and algorithms.
-
Understand the concepts of memory management with stacks and queues.
-
Master sorting algorithms and their applications.
-
Learn how to measure and analyze algorithm performance.
-
Implement advanced topics like LRU caches and Fenwick trees.
About This Course
Basic Algorithms and Data Structures: AVL tree, Binary Search Trees, Arrays, B Trees, Linked Lists, Stacks and HashMaps
This course is about data structures and algorithms. We are going to implement the problems in Java. The course takes approximately 20 hours to complete. It is highly recommended to type out these data structures several times on your own in order to get a good grasp of it.
Section 1:
Section 2 - Arrays
Section 3 - Linked Lists
Section 2 - Stacks and Queues:
Section 3 - Binary Search Trees (BSTs):
Section 4 - AVL Trees
Section 5 - Red-Black Trees
what are red-black trees?
what is recovering operation?
comparing AVL trees and red-black trees
Section 6 - Splay Trees
Section 7 - Heaps and Priority Queues
what are priority queues?
what is heap data structure?
how to do sorting in O(NlogN) with heaps?
Section 8 - B-Trees
Section 9 - Hashing and HashMaps:
Section 10 - Sorting Algorithms
basic sorting algorithms
bubble sort and selection sort
insertion sort and shell sort
quicksort and merge sort
comparison based and non-comparison based approaches
string sorting algorithms
bucket sort and radix sort
Section 11 - Substring Search Algorithms
substring search algorithms
brute-force substring search
Z substring search algorithm
Rabin-Karp algorithm and hashing
Knuth-Morris-Pratt (KMP) substring search algorithm
Section 12 (BONUS):
what is LRU cache
LRU cache implementation
Section 13 (BONUS):
Section 14 - Algorithms Analysis
how to measure the running time of algorithms
running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations
complexity classes
polynomial (P) and non-deterministic polynomial (NP) algorithms
O(1), O(logN), O(N) and several other running time complexities
In each chapter you will learn 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.
Thanks for joining the course, let's get started!
grasp the fundamentals of algorithms and data structures
detect non-optimal code snippets
learn about arrays and linked lists
Sharath A. S.
It is helpful. Thank you