Data Structures and Algorithms: Deep Dive Using Java
4.4 (2,629 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
15,539 students enrolled

Data Structures and Algorithms: Deep Dive Using Java

Learn about Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Sort algorithms and Search algorithms
Bestseller
4.4 (2,629 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
15,539 students enrolled
Last updated 2/2019
English
English, Indonesian [Auto-generated], 2 more
  • Italian [Auto-generated]
  • Thai [Auto-generated]
Current price: $11.99 Original price: $199.99 Discount: 94% off
2 days left at this price!
30-Day Money-Back Guarantee
This course includes
  • 16 hours on-demand video
  • 3 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to Udemy's top 3,000+ courses anytime, anywhere.

Try Udemy for Business
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
Course content
Expand all 117 lectures 15:55:46
+ Introduction
10 lectures 55:04

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

Preview 03:42
JDK8 for MAC
02:44
JDK8 for Linux
04:20
IntelliJ for MAC
09:43
IntelliJ for Linux
10:22

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

Preview 02:53

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

Preview 04:15
+ Arrays and Big-O Notation
5 lectures 43:42

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

Introduction to Arrays
00:53

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

Big-O Notation
14:09

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

A Quick Review of Arrays in Java
07:42

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

Arrays in Memory
09:02

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

Big-O Values for Array Operations
11:56
+ Sort Algorithms
27 lectures 04:15:40

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

Preview 01:03

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

Bubble Sort (Theory)
08:50

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

Bubble Sort (Implementation)
11:34

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

Preview 04:42

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

Selection Sort (Theory)
06:33

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

Selection Sort (Implementation)
05:02

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

Insertion Sort (Theory)
07:34

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

Insertion Sort (Implementation)
07:12

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

Shell Sort (Theory)
12:54

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

Preview 10:49

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

Recursion
18:10

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

Merge Sort (Theory)
20:40

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

Merge Sort (Implementation)
28:09

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

Quick Sort (Theory)
08:58

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

Quick Sort (Implementation)
12:34

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

Counting Sort (Theory)
07:56

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

Counting Sort (Implementation)
08:35

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

Radix Sort (Theory)
11:12

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

Stable Counting Sort (Theory)
13:18

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

Radix Sort (Implementation)
14:05

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

Sorting Arrays Using the JDK
07:00

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

Preview 01:11

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

Sort Algorithms Challenge #1 Solution
04:03

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

Sort Algorithms Challenge #2
00:49

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

Sort Algorithms Challenge #2 Solution
11:46

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

Sort Algorithms Challenge #3
01:12

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

Sort Algorithms Challenge #3 Solution
09:49
+ Lists
13 lectures 02:05:05

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

Introduction to Lists
02:49

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

Abstract Data Types
02:56

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

Array Lists
23:56

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

Preview 06:48

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

Singly Linked Lists (Theory)
06:42

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

Singly Linked Lists (Implementation)
17:39

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

Doubly Linked Lists (Theory)
09:33

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

Doubly Linked Lists (Implementation)
21:47

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

The JDK LinkedList Class
12:34

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

Linked Lists Challenge #1
01:36

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

Linked Lists Challenge #1 Solution
09:29

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

Linked Lists Challenge #2
01:46

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

Linked Lists Challenge #2 Solution
07:30
+ Stacks
6 lectures 48:57

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

Introduction to Stacks
00:37

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

Stacks (Theory)
07:22

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

Preview 18:31

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

Stacks Implementation (Linked List)
11:59

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

Stacks Challenge
02:03

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

Stacks Challenge Solution
08:25
+ Queues
8 lectures 01:13:54

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

Introduction to Queues
00:26

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

Queues (Theory)
03:38

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

Queues (Array Implementation)
15:49

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

Circular Queue Implementation (Part One)
14:21

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

Circular Queue Implementation (Part Two)
20:30

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

Queues and the JDK
08:20

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

Queues Challenge
01:58

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

Queues Challenge Solution
08:52
+ Hashtables
14 lectures 02:12:36

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

Introduction to Hashtables
00:23

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

Hashtables (Theory)
08:25

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

Hashtables (Array Implementation)
13:53

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

Linear Probing
21:14

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

Linear Probing - Removing Items
09:39

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

Linear Probing - Rehashing
11:03

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

Chaining
21:24

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

Hashtables and the JDK
16:52

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

Bucket Sort (Theory)
06:35

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

Bucket Sort (Implementation)
09:03

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

Hashtables Challenge #1
01:54

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

Hashtables Challenge #1 Solution
02:39

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

Hashtables Challenge #2
01:37

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

Hashtables Challenge #2 Solution
07:55
+ Search Algorithms
4 lectures 25:50

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

Introduction to Search Algorithms
00:50

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

Linear Search Algorithm
03:51

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

Binary Search Algorithm
07:57

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

Binary Search (Implementation)
13:12
+ Trees
14 lectures 01:45:26

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

Introduction to Trees
00:55

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

Trees (Theory)
11:16

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

Binary Search Trees (Theory)
14:17

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

Binary Search Trees (Insertion)
10:50

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

Binary Search Trees (Traversal)
11:24

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 (Get, Min, Max)
10:28

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 (Delete Cases 1 and 2)
03:15

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 (Implement Cases 1 and 2)
09:11

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

Binary Search Trees (Delete Case 3)
08:51

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

Binary Seach Trees (Implement Case 3)
07:16

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

Trees and the JDK
03:44

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

Binary Search Trees Challenge #1
01:53

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

Binary Search Trees Challenge #1 Solution
02:49

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

Binary Search Trees Challenge #2
09:17
+ Heaps
10 lectures 01:21:45

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

Introduction to Heaps
00:29

In this video, you'll learn about heaps.

Heaps (Theory)
07:50

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

Storing Heaps as Arrays
07:54

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

Heaps (Insert)
09:02

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

Heaps (Delete Theory)
06:55

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

Heaps (Delete)
20:06

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

Heaps (Peek)
05:19

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

Priority Queues
12:00

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

Heapsort (Theory)
04:54

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

Heapsort (Implementation)
07:16
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