Skip to main content
CF

Data Structures and Algorithms: Deep Dive Using Java

15h 53m 4s
English
Paid

Embark on a comprehensive journey into the world of data structures and algorithms using Java. If you've mastered the basics and are now looking for a deeper dive, this course is designed for you. It's not just about passing job interview tests but about making informed choices that enhance your program development skills through implementation.

Course Overview

Are you aiming to transition from a junior programming role to a senior position? Elevate your skill set with advanced concepts in data structures that you can directly apply to your projects. This course is for those who seek in-depth understanding rather than just theoretical knowledge.

The course includes complete source code for you to download, offering a hands-on experience focused on implementation. If your goal is to dive deep into understanding and applying these concepts, this course is exactly what you need.

Topics Covered

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

The course also extensively covers the tools available in the JDK, providing valuable insights for those eager to understand the internal workings of these elements.

The Importance of Data Structures and Algorithms

Why focus on these areas? Because mastering data structures and algorithms will enhance your problem-solving skills and make you a better programmer.

These tools are vital patterns for solving complex problems. Expanding your understanding of them ensures you use the most suitable tools in a more sophisticated manner, helping you tackle challenges more effectively.

Why Choose This Course?

Led by instructor Sarah Ettritch, who boasts over 25 years of software development experience and has been using Java since JDK 1.1, this course is taught by someone deeply knowledgeable in data structures and algorithms. Her experience in creating developer tools showcases her capability to teach this course with authority.

Unlike many other courses that concentrate solely on theory for interview preparation, this course combines essential theoretical knowledge with a strong focus on practical implementation. You'll gain a genuine understanding that you can apply to future projects.

Benefits at the Course's End

By completing this course, you will gain a robust grasp of both the theory and implementation of data structures and algorithms. Enhance your job or consulting prospects by acquiring these in-demand skills that significantly increase your market value as a Java developer.

Kickstart your journey towards a higher-paying job or attractive consulting roles by enrolling now.

Course Requirements

Requirements:
  • Prior experience with an object-oriented programming language, preferably Java, but any OO language is acceptable.

Target Audience

Who this course is for:

  • Developers familiar with Java (or another OO language) who want to delve deeply into data structures and algorithms.

Learning Outcomes

What you'll learn:

  • Identify the strengths and weaknesses of various data structures to make optimal choices for your applications.
  • Implement each data structure to comprehend their internal workings.
  • Understand common algorithms for sorting data, enhancing application efficiency with large datasets.
  • Explore what the JDK offers for data storage and sorting, saving time and resources.

About the Author: Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 113 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 113 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Introduction to the Course
All Course Lessons (113)
#Lesson TitleDurationAccess
1
Introduction to the Course Demo
03:43
2
JDK8 for Windows
05:16
3
JDK8 for MAC
02:45
4
JDK8 for Linux
04:21
5
IntelliJ for Windows
09:55
6
IntelliJ for MAC
09:44
7
IntelliJ for Linux
10:23
8
Introduction to Data Structures
02:54
9
Introduction to Algorithms
04:16
10
Introduction to Arrays
00:54
11
Big-O Notation
14:10
12
A Quick Review of Arrays in Java
07:43
13
Arrays in Memory
09:03
14
Big-O Values for Array Operations
11:57
15
Introduction to Sort Algorithms
01:04
16
Bubble Sort (Theory)
08:51
17
Bubble Sort (Implementation)
11:35
18
Stable vs. Unstable Sort Algorithms
04:43
19
Selection Sort (Theory)
06:34
20
Selection Sort (Implementation)
05:03
21
Insertion Sort (Theory)
07:35
22
Insertion Sort (Implementation)
07:13
23
Shell Sort (Theory)
12:55
24
Shell Sort (Implementation)
10:50
25
Recursion
18:11
26
Merge Sort (Theory)
20:41
27
Merge Sort (Implementation)
28:10
28
Quick Sort (Theory)
08:59
29
Quick Sort (Implementation)
12:35
30
Counting Sort (Theory)
07:57
31
Counting Sort (Implementation)
08:36
32
Radix Sort (Theory)
11:13
33
Stable Counting Sort (Theory)
13:19
34
Radix Sort (Implementation)
14:06
35
Sorting Arrays Using the JDK
07:01
36
Sort Algorithms Challenge #1
01:12
37
Sort Algorithms Challenge #1 Solution
04:04
38
Sort Algorithms Challenge #2
00:50
39
Sort Algorithms Challenge #2 Solution
11:47
40
Sort Algorithms Challenge #3
01:13
41
Sort Algorithms Challenge #3 Solution
09:50
42
Introduction to Lists
02:50
43
Abstract Data Types
02:57
44
Array Lists
23:57
45
Vectors
06:49
46
Singly Linked Lists (Theory)
06:43
47
Singly Linked Lists (Implementation)
17:40
48
Doubly Linked Lists (Theory)
09:35
49
Doubly Linked Lists (Implementation)
21:48
50
The JDK LinkedList Class
12:35
51
Linked Lists Challenge #1
01:37
52
Linked Lists Challenge #1 Solution
09:30
53
Linked Lists Challenge #2
01:47
54
Linked Lists Challenge #2 Solution
07:32
55
Introduction to Stacks
00:39
56
Stacks (Theory)
07:23
57
Stacks Implementation (Array)
18:32
58
Stacks Implementation (Linked List)
12:00
59
Stacks Challenge
02:04
60
Stacks Challenge Solution
08:26
61
Introduction to Queues
00:27
62
Queues (Theory)
03:39
63
Queues (Array Implementation)
15:50
64
Circular Queue Implementation (Part One)
14:22
65
Circular Queue Implementation (Part Two)
20:32
66
Queues and the JDK
08:21
67
Queues Challenge
01:59
68
Queues Challenge Solution
08:53
69
Introduction to Hashtables
00:24
70
Hashtables (Theory)
08:26
71
Hashtables (Array Implementation)
13:54
72
Linear Probing
21:15
73
Linear Probing - Removing Items
09:40
74
Linear Probing - Rehashing
11:04
75
Chaining
21:25
76
Hashtables and the JDK
16:53
77
Bucket Sort (Theory)
06:36
78
Bucket Sort (Implementation)
09:05
79
Hashtables Challenge #1
01:55
80
Hashtables Challenge #1 Solution
02:40
81
Hashtables Challenge #2
01:38
82
Hashtables Challenge #2 Solution
07:56
83
Introduction to Search Algorithms
00:51
84
Linear Search Algorithm
03:52
85
Binary Search Algorithm
07:58
86
Binary Search (Implementation)
13:13
87
Introduction to Trees
00:56
88
Trees (Theory)
11:17
89
Binary Search Trees (Theory)
14:18
90
Binary Search Trees (Insertion)
10:51
91
Binary Search Trees (Traversal)
11:25
92
Binary Search Trees (Get, Min, Max)
10:29
93
Binary Search Trees (Delete Cases 1 and 2)
03:16
94
Binary Search Trees (Implement Cases 1 and 2)
09:12
95
Binary Search Trees (Delete Case 3)
08:52
96
Binary Seach Trees (Implement Case 3)
07:17
97
Trees and the JDK
03:45
98
Binary Search Trees Challenge #1
01:54
99
Binary Search Trees Challenge #1 Solution
02:50
100
Binary Search Trees Challenge #2
09:18
101
Introduction to Heaps
00:30
102
Heaps (Theory)
07:51
103
Storing Heaps as Arrays
07:55
104
Heaps (Insert)
09:03
105
Heaps (Delete Theory)
06:56
106
Heaps (Delete)
20:07
107
Heaps (Peek)
05:20
108
Priority Queues
12:01
109
Heapsort (Theory)
04:55
110
Heapsort (Implementation)
07:17
111
Sets
02:52
112
Course Wrap-Up
01:25
113
Bonus - Please Watch!
00:49
Unlock unlimited learning

Get instant access to all 112 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Related courses

Frequently asked questions

What are the prerequisites for enrolling in this course?
The course is designed for individuals who have already mastered the basics of programming and are looking to gain a deeper understanding of data structures and algorithms using Java. Familiarity with Java development environments, such as IntelliJ, and basic programming concepts is necessary to follow the course material effectively.
What can I expect to build or understand by the end of this course?
By the end of the course, you will have implemented various data structures such as arrays, linked lists, stacks, queues, and heaps, as well as sort and search algorithms like quick sort and merge sort. The course emphasizes understanding and applying these concepts to enhance your program development skills.
Who is the target audience for this course?
This course is intended for individuals aiming to transition from a junior to a senior programming role. It is best suited for those seeking to gain an in-depth understanding of data structures and algorithms to apply directly to their projects, rather than just acquiring theoretical knowledge.
How does this course compare to other data structure courses?
Unlike introductory courses, this course offers a deep dive into the implementation of data structures and algorithms using Java. It covers advanced topics with complete source code for hands-on experience, making it ideal for those looking to apply these concepts in practical scenarios rather than just preparing for job interviews.
What tools or platforms will I learn to use in this course?
The course covers the use of Java Development Kit (JDK) and IntelliJ for different operating systems, including Windows, Mac, and Linux. It also provides insights into using the JDK's internal tools for implementing data structures and algorithms.
What topics are not covered in this course?
The course does not cover introductory programming concepts or languages other than Java. It assumes a foundational understanding of Java and does not delve into other programming languages or beginner-level computer science topics.
What is the expected time commitment for this course?
With a total of 113 lessons, this course requires a significant time investment. While the exact runtime is not specified, students should be prepared to dedicate several hours per week to fully engage with the lectures, coding exercises, and challenges provided.