Course Highlights
  • grasp the fundamentals of algorithms and data structures
  • detect non-optimal code snippets
  • learn about arrays and linked lists
  • learn about stacks and queues
  • learn about binary search trees
  • learn about balanced binary search trees such as AVL trees or red-black trees
  • learn about priority queues and heaps
  • learn about B-trees and external memory
  • learn about hashing and hash tables
Curriculum

2 Topics
Introduction
Course exercises and solutions

3 Topics
Why do we need data structures?
Data structures and abstract data types
Data Structures and Abstract Data Types Quiz

2 Topics
Installing Java
Installing Eclipse

5 Topics
What are array data structures?
Arrays introduction - operations
Implementing arrays
ArrayList in Java
Arrays Quiz

8 Topics
Reversing an array in-place exercise
Reversing an array in-place solution
Anagram problem exercise
Anagram problem solution
Palindrome problem exercise
Palindrome problem solution
Integer reversion exercise
Integer reversion problem solution

11 Topics
What are linked lists?
Linked list theory - operations
Pros and cons of linked lists
Linked lists in Java !!!
Linked list implementation I
Linked list implementation II
Linked list implementation III
Linked list implementation IV
Comparing linked lists and arrays
Practical (real-world) applications of linked lists
Linked Lists Quiz

5 Topics
What are doubly linked lists?
Doubly linked list implementation
LinkedLists in Java
Running time comparison: linked lists and arrays
Doubly Linked Lists Quiz

4 Topics
Finding the middle node in a linked list exercise
Finding the middle node in a linked list solution
Reverse a linked list in-place exercise
Reverse a linked list in-place solution

8 Topics
What are stacks?
Stacks in memory management (stacks and heaps )
Stack memory visualization
Stack implementation with linked list
Stack implementation with arrays
Stacks in Java
Practical (real-world) applications of stacks
Stacks Quiz

6 Topics
What are queues?
Queue implementation with linked list
Queues in Java
ArrayDeque in Java
ArrayDeque and Stack performance comparison
Queues Quiz

5 Topics
Max in a stack problem overview
Max in a stack problem solution
Stack with queue overview
Stack with queue solution
Stack with queue solution - recursion

15 Topics
What are binary search trees?
How to search and insert items into a binary search tree?
Implementing insertion I - Node and Tree classes
Implementing insertion II
How to visit all the items of a binary search trees? (in-order traversal)
Finding the minimum item exercise
Binary search tree implementation - max min and traversal
Stack memory visualization - finding max (min) items
Stack memory visualization - tree traversal
How to remove an item from a binary search tree?
Remove operation implementation I
Remove operation implementation II
Pros and cons of binary search trees
Practical (real-world) applications of trees
Binary Search Trees Quiz

6 Topics
Compare binary trees exercise
Compare binary trees solution
k-th smallest element exercise
k-th smallest element in a search tree solution
Family age problem exercise
Family age problem solution

12 Topics
Motivation behind balanced binary search trees
What are AVL trees?
AVL trees introduction - height
AVL trees introduction - rotations
AVL trees introduction - illustration
AVL tree implementation I
AVL tree implementation II
AVL tree implementation III
AVL tree implementation IV
AVL tree implementation V
Practical (real-world) applications of balanced binary search trees
AVL Trees Quiz

11 Topics
What are red-black trees?
The logic behind red-black trees
Red-black trees - recoloring and rotation cases
Red-black trees visualizations
Red-black tree implementation I
Red-black tree implementation II
Red-black tree implementation III
Red-black tree implementation IV
Red-black tree implementation V
Differences between red-black tree and AVL trees
Red-Black Trees Quiz

7 Topics
What are splay trees?
Splay tree introduction - example
Splay tree implementation I
Splay tree implementation II
Splay tree implementation III
Splay trees application
Splay Trees Quiz

12 Topics
What are priority queues?
Heap introduction - basics
Heap introduction - array representation
Heap introduction - remove operation
Using heap data structure to sort (heapsort)
Heap implementation I
Heap implementation II
Heap implementation III
Heaps and java.util.PriorityQueue
Heap introduction - running times
Binomial and Fibonacci heaps
Heaps Quiz

4 Topics
Checking min heap exercise
Checking min heap representation solution
Converting max heap to min heap exercise
Converting max heap to min heap solution

7 Topics
What is external memory?
Disk access times
What are B-trees?
B-tree introduction - insertion
B-tree introduction - deletion
B-tree variants and file systems
B-Trees Quiz

20 Topics
What are associative arrays?
Hashtables introduction - basics
Hashtables introduction - collisions
Hashtables introduction - load factor & dynamic resizing
Chaining implementation I
Chaining implementation II
Chaining implementation III
Linear probing implementation I
Linear probing implementation II
Generic linear probing implementation I - basics
Generic linear probing implementation II - get
Generic linear probing implementation III - put
Generic linear probing implementation IV - remove
Generic linear probing implementation V - resize
Generic linear probing implementation VI - testing
Maps in Java Collections
Maps in Java Collections - hashCode() and equals()
Why to use prime numbers in hash-functions?
Practical (real-world) applications of hashing
Hashtables Quiz

2 Topics
Two sum problem overview
Two sum problem solution

35 Topics
Sorting introduction
What is stability in sorting?
Adaptive sorting algorithms
Sorting Algorithms Basics Quiz
Bogo sort introduction
Bogo sort implementation
Bogo Sort Quiz
Bubble sort introduction
Bubble sort implementation
Selection sort introduction
Selection sort implementation
Selection Sort Quiz
Insertion sort introduction
Insertion sort implementation
Insertion Sort Quiz
Shell sort introduction
Shell sort implementation
Shell Sort Quiz
Quicksort introduction
Quicksort introduction - example
Quicksort implementation
Hoare's partitioning and Lomuto's partitioning
What is the worst-case scenario for quicksort?
QuickSort Quiz
Merge sort introduction
Merge sort implementation
Merge sort and stack memory visualization
Merge Sort Quiz
Hybrid algorithms introduction
Non-comparison based algorithms
Counting sort introduction
Counting sort implementation
Radix sort introduction
Radix sort implementation
Non-Comparison Based Sorting Quiz

4 Topics
Implementing TimSort algorithm
TimSort algorithm solution
Quicksort with iteration exercise
Quicksort with iteration solution

16 Topics
Brute-force search introduction
Brute-force search implementation
Naive Substring Search Quiz
Rabin-Karp algorithm introduction
Rabin-Karp algorithm implementation
Rabin-Karp Algorithm Quiz
Knuth-Morris-Pratt algorithm introduction
Constructing the partial match table
Knuth-Morris-Pratt algorithm implementation
Knuth-Morris-Pratt Algorithm Quiz
Z algorithm introduction
Z algorithm illustration
Z algorithm implementation
Z Algorithm Quiz
Substring search algorithms comparison
Applications of substring search

4 Topics
Why to use cache?
LRU cache introduction
LRU cache implementation I
LRU cache implementation II

4 Topics
What are Fenwick trees?
Fenwick trees introduction - tree structure
Fenwick trees introduction - update
Fenwick trees implementation

1 Topic
Next steps

12 Topics
How to measure the running times of algorithms?
Complexity theory illustration
Complexity notations - big (O) ordo
Complexity notations - big Ω (omega)
Complexity notations - big (θ) theta
Algorithm running times
Complexity classes
Analysis of algorithms - loops
Case study - O(1)
Case study - O(logN)
Case study - O(N)
Case study - O(N*N)

2 Topics
Algorhyme Visualization App
Algorhyme - Algorithms and Data Structures

1 Topic
Download source code and slides

  Write a Review

Algorithms Data Structures in Java #1 (+INTERVIEW QUESTIONS)

Go to Paid Course