Data Structures And Algorithms Deep Dive Using Java

Learn about Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Sort algorithms and Search algorithms

Last updated 2022-01-10 | 4.5

- Learn the strengths and weaknesses of a variety of data structures
- so you can choose the best data structure for your data and applications
- Code an implementation of each data structure
- so you understand how they work under the covers
- Learn many of the algorithms commonly used to sort data
- so your applications will perform efficiently when sorting large datasets

What you'll learn

Learn the strengths and weaknesses of a variety of data structures
so you can choose the best data structure for your data and applications
Code an implementation of each data structure
so you understand how they work under the covers
Learn many of the algorithms commonly used to sort data
so your applications will perform efficiently when sorting large datasets
Learn what’s available in the JDK for storing and sorting data
so you won’t waste time reinventing the wheel

* Requirements

* Previous experience with an object-oriented programming language
* preferably Java (but any OO language is fine).

Description

So you've worked with the basics of data structures and algorithms in Java (or another OO programming language) but feel like you need a deeper knowledge of how things work.

Maybe you have taken other courses on this topic that focus more on teaching how to pass job interview tests (theory) instead of how to make good choices for the programs you develop (implementation).

Or maybe you are ready to move from a junior programming position to a more senior one and need to get skilled in advanced concepts like data structures, and how to apply them to your own projects.

Whatever the reason, if you are looking for a course that focus on the implementations to give you a complete understanding of how things work, then this is the course for you.

This course goes over the theory of how things work, but only to give you what you need to know to understand the implementation covered. 

Complete source code is included and available for you to download.

This is a hands-on course!  If you want to try understand things at a deep level, and work on implementations, rather than theory, then again, this is the course for you.

Topics covered:-

Arrays
Linked Lists
Trees
Hashtables
Stacks
Queues
Heaps
Sort algorithms
Search algorithms

The course also spends more time than most other courses of its kind looking at what’s available in the JDK. Students wanting to understand how things work "under the hood" will benefit enormously from this course.

Why learn about data structures and algorithms?

The reality is, the more you learn about data structures and algorithms, the better a programmer you become.

Why?

Because, data structures and algorithms are effectively patterns for solving problems.   You want to add as many of them as you can to your skill-set.  By doing so, you will find you solve more problems, and use the right tools for the job, in a more elegant way.  And you will learn a heap of them in this course.

Why enrolling in this course is the best decision you can make.

Your instructor, Sarah Ettritch has over 25 years’ software development experience and has been working with Java since JDK 1.1.  She has spent many years creating tools used by developers, which required a deep knowledge of data structures and algorithms, and is perfectly qualified to teach this course.

Most courses focus on giving you the theory of how things work, so that you can take an interview.  Whilst the theory is important, the knowledge of how to implement these data structures and algorithms are of vital importance.

This course goes over the theory of how things work, but only to give you what you need to know to understand the implementation covered.   The main focus of the course is to give you a real understanding of how things work under the hood, so that you can apply this to future programming projects.

If you want to actually understand how things work, and be able to take that understanding and apply it to your own programs, then this course is for you.

After completing this course, you will have a solid understanding of data structures and algorithms (both the theory, and the implementation).

The sooner you sign up for this course, the sooner you will have the skills and knowledge you need to increase your job or consulting opportunities.    Java developers with key skills and understanding of data structures and algorithms are in high demand and get paid extremely well.

If you are ready for that new job promotion or consulting opportunity, it's time to get started.

Why not get started today?

 Click the Signup button to sign up for the course

Who this course is for:

  • Developers who have some knowledge of Java (or another OO language) looking to understand data structures and algorithms at a deep level

Course content

12 sections • 116 lectures

Introduction From Tim Buchalka Preview 01:56

Introduction to the Course Preview 03:42

In this video, you'll learn what we'll cover in the course.

JDK8 for Windows Preview 05:15

JDK8 for MAC Preview 02:44

JDK8 for Linux Preview 04:20

IntelliJ for Windows Preview 09:54

IntelliJ for MAC Preview 09:43

IntelliJ for Linux Preview 10:22

Introduction to Data Structures Preview 02:53

In this video, you'll learn what a data structure is and why there are many of them.

Introduction to Algorithms Preview 04:15

In this video, you'll learn what an algorithm is.

Introduction to Arrays Preview 00:53

In this video, you'll learn about what we'll cover in this section.

Big-O Notation Preview 14:09

In this video, you'll learn about big-O notation.

A Quick Review of Arrays in Java Preview 07:42

In this video, we'll quickly review arrays in Java.

Arrays in Memory Preview 09:02

In this video, we'll take a look at arrays as a data structure.

Big-O Values for Array Operations Preview 11:56

In this video, we'll take a look at the Big-O values for array operations.

Introduction to Sort Algorithms Preview 01:04

In this video, you'll learn what we'll cover in this section.

Bubble Sort (Theory) Preview 08:50

In this video, you'll learn how the bubble sort algorithm works.

Bubble Sort (Implementation) Preview 11:34

In this video, we'll implement the bubble sort algorithm.

Stable vs. Unstable Sort Algorithms Preview 04:42

In this video, you'll learn about stable and unstable sort algorithms.

Selection Sort (Theory) Preview 06:33

In this video, you'll learn how the selection sort algorithm works.

Selection Sort (Implementation) Preview 05:02

In this video, we'll implement the selection sort algorithm.

Insertion Sort (Theory) Preview 07:34

In this video, you'll learn how the insertion sort algorithm works.

Insertion Sort (Implementation) Preview 07:12

In this video, we'll implement the insertion sort algorithm.

Shell Sort (Theory) Preview 12:54

In this video, you'll learn how the shell sort algorithm works.

Shell Sort (Implementation) Preview 10:49

In this video, we'll implement the shell sort algorithm.

Recursion Preview 18:10

In this video, we'll review recursion and what happens when we call recursive methods.

Merge Sort (Theory) Preview 20:40

In this video, you'll learn how the merge sort algorithm works.

Merge Sort (Implementation) Preview 28:09

In this video, we'll implement the merge sort algorithm.

Quick Sort (Theory) Preview 08:58

In this video, you'll learn how the quick sort algorithm works.

Quick Sort (Implementation) Preview 12:34

In this video, we'll implement the quick sort algorithm.

Counting Sort (Theory) Preview 07:56

In this video, you'll learn how the unstable counting sort algorithm works.

Counting Sort (Implementation) Preview 08:35

In this video, we'll implement the unstable counting sort algorithm.

Radix Sort (Theory) Preview 11:12

In this video, you'll learn how the radix sort algorithm works.

Stable Counting Sort (Theory) Preview 13:18

In this video, you'll learn how to perform a stable counting sort.

Radix Sort (Implementation) Preview 14:05

In this video, we'll implement the radix sort algorithm.

Sorting Arrays Using the JDK Preview 07:00

In this video, we'll take a look at JDK methods you can use to sort arrays.

Sort Algorithms Challenge #1 Preview 01:11

In this video, you'll practice what you've learned about the merge sort algorithm.

Sort Algorithms Challenge #1 Solution Preview 04:03

In this video, we'll go over the solution to the first challenge.

Sort Algorithms Challenge #2 Preview 00:49

In this video, you'll practice what you've learned about recursion.

Sort Algorithms Challenge #2 Solution Preview 11:46

In this video, we'll go over the solution to the second challenge.

Sort Algorithms Challenge #3 Preview 01:12

In this video, you'll practice what you've learned about the shell sort and bubble sort algorithms.

Sort Algorithms Challenge #3 Solution Preview 09:49

In this video, we'll go over the solution to the third challenge.

Introduction to Lists Preview 02:49

In this video, we'll take a look at the List interface and what we'll cover in this section.

Abstract Data Types Preview 02:56

In this video, you'll learn about abstract data types.

Array Lists Preview 23:56

In this video, we'll take a look at the java.util.ArrayList class.

Vectors Preview 06:48

In this video, we'll take a look at the java.util.Vector class.

Singly Linked Lists (Theory) Preview 06:42

In this video, you'll learn about the singly linked list data structure.

Singly Linked Lists (Implementation) Preview 17:39

In this video, we'll implement a singly linked list.

Doubly Linked Lists (Theory) Preview 09:33

In this video, you'll learn about the doubly linked list data structure.

Doubly Linked Lists (Implementation) Preview 21:47

In this video, we'll implement a doubly linked list.

The JDK LinkedList Class Preview 12:34

In this video, we'll take a look at the java.util.LinkedList class.

Linked Lists Challenge #1 Preview 01:36

In this video, you'll practice what you've learned about doubly-linked lists.

Linked Lists Challenge #1 Solution Preview 09:29

In this video, we'll go over the solution to the first challenge.

Linked Lists Challenge #2 Preview 01:46

In this video, you'll practice what you've learned about singly-linked lists.

Linked Lists Challenge #2 Solution Preview 07:30

In this video, we'll go over the solution to the second challenge.

Introduction to Stacks Preview 00:37

In this video, you'll learn about what we'll cover in this section.

Stacks (Theory) Preview 07:22

In this video, you'll learn about the stack abstract data type.

Stacks Implementation (Array) Preview 18:31

In this video, we'll code a stack implementation that uses a backing array.

Stacks Implementation (Linked List) Preview 11:59

In this video, we'll code a stack implementation that uses a linked list.

Stacks Challenge Preview 02:03

In this video, you'll practice what you've learned about stacks

Stacks Challenge Solution Preview 08:25

In this video, we'll go over the solution to the challenge

Introduction to Queues Preview 00:26

In this video, you'll learn about what's coming up in the queues section.

Queues (Theory) Preview 03:38

In this video, you'll learn about the queue abstract data type

Queues (Array Implementation) Preview 15:49

In this video, we'll implement a queue backed by an array.

Circular Queue Implementation (Part One) Preview 14:21

In this video, we'll update our queue implementation to a circular queue.

Circular Queue Implementation (Part Two) Preview 20:30

In this video, we'll continue our implementation of a circular queue.

Queues and the JDK Preview 08:20

In this video, we'll take a look at what's available in the JDK related to queues.

Queues Challenge Preview 01:58

In this video, you'll practice what you've learned about queues.

Queues Challenge Solution Preview 08:52

In this video, we'll go over the solution to the challenge.

Introduction to Hashtables Preview 00:23

In this video, you'll learn about what's coming up in this section.

Hashtables (Theory) Preview 08:25

In this video, you'll learn about how hashtables work.

Hashtables (Array Implementation) Preview 13:53

In this video, we'll implement a simple hashtable.

Linear Probing Preview 21:14

In this video, you'll learn how to handle collisions using linear probing.

Linear Probing - Removing Items Preview 09:39

In this video, you'll learn how to handle deletions when we're using linear probing.

Linear Probing - Rehashing Preview 11:03

In this video, we'll discuss two ways of completing our remove implementation.

Chaining Preview 21:24

In this video, you'll learn how to handle collisions using chaining.

Hashtables and the JDK Preview 16:52

In this video, we'll take a look at what's available in the JDK related to hashtables.

Bucket Sort (Theory) Preview 06:35

In this video, you'll learn about the bucket sort algorithm.

Bucket Sort (Implementation) Preview 09:03

In this video, we'll implement one example of the bucket sort algorithm.

Hashtables Challenge #1 Preview 01:54

In this video, you'll practice what you've learned about hashing functions.

Hashtables Challenge #1 Solution Preview 02:39

In this video, we'll go over the solution to the first challenge.

Hashtables Challenge #2 Preview 01:37

In this video, you'll practice what you've learned about hashtables.

Hashtables Challenge #2 Solution Preview 07:55

In this video, we'll go over the solution to the second challenge.

Introduction to Search Algorithms Preview 00:50

In this video, you'll learn what we'll cover in this section.

Linear Search Algorithm Preview 03:51

In this video, we'll implement the linear search algorithm.

Binary Search Algorithm Preview 07:57

In this video, you'll learn how the binary search algorithm works.

Binary Search (Implementation) Preview 13:12

In this video, we'll implement the binary search algorithm iteratively and recursively.

Introduction to Trees Preview 00:55

In this video, you'll learn about what we'll cover in this section.

Trees (Theory) Preview 11:16

In this video, you'll learn about trees and some terminology used to describe them.

Binary Search Trees (Theory) Preview 14:17

In this video, you'll learn about binary search trees.

Binary Search Trees (Insertion) Preview 10:50

In this video, we'll implement inserting a value into a binary search tree.

Binary Search Trees (Traversal) Preview 11:24

In this video, you'll learn about how to traverse a binary search tree.

Binary Search Trees (Get, Min, Max) Preview 10:28

In this video, we'll implement getting a value from a binary search tree, and also how to get the min and max values.

Binary Search Trees (Delete Cases 1 and 2) Preview 03:15

In this video, you'll learn what to do when you delete a leaf node, or a node that has one child.

Binary Search Trees (Implement Cases 1 and 2) Preview 09:11

In this video, we'll implement the first two cases we have to handle when deleting a node from a binary search tree.

Binary Search Trees (Delete Case 3) Preview 08:51

In this video, you'll learn what to do when you delete a node that has two children.

Binary Seach Trees (Implement Case 3) Preview 07:16

In this video, we'll implement deleting a node with two children.

Trees and the JDK Preview 03:44

In this video, we'll take a look at what's available in the JDK related to trees.

Binary Search Trees Challenge #1 Preview 01:53

In this video, you'll practice what you've learned about traversing binary trees.

Binary Search Trees Challenge #1 Solution Preview 02:49

In this video, we'll go over the solution to the first challenge.

Binary Search Trees Challenge #2 Preview 09:17

In this video, you'll practice what you've learned about insert and delete.

Introduction to Heaps Preview 00:29

In this video, you'll learn about what we'll cover in this section.

Heaps (Theory) Preview 07:50

In this video, you'll learn about heaps.

Storing Heaps as Arrays Preview 07:54

In this video, you'll learn how to back a heap with an array.

Heaps (Insert) Preview 09:02

In this video, you'll learn how to insert a value into a heap.

Heaps (Delete Theory) Preview 06:55

In this video, you'll learn how to delete a value from a heap

Heaps (Delete) Preview 20:06

In this video, we'll implement deleting an item from a heap.

Heaps (Peek) Preview 05:19

In this video, we'll implement the peek operation.

Priority Queues Preview 12:00

In this video, you'll learn about priority queues.

Heapsort (Theory) Preview 04:54

In this video, you'll learn how the heapsort algorithm works.

Heapsort (Implementation) Preview 07:17

In this video, we'll implement the heapsort algorithm.

Sets Preview 02:51

In this video, we'll take a brief look at sets in the JDK.

Course Wrap-Up Preview 01:24

In this video, we'll review what we covered in the course.

Tell Us What Content You Want Us To Add! Preview 00:13