Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Personal Development Mindfulness Meditation Personal Transformation Life Purpose Emotional Intelligence Neuroscience
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Google Analytics
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Modeling Data Analysis Big Data
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Blogging Freelancing Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee
Development Programming Languages Java Algorithms

Data Structures and Algorithms: Deep Dive Using Java

Learn about Arrays, Linked Lists, Trees, Hashtables, Stacks, Queues, Heaps, Sort algorithms and Search algorithms
Bestseller
Rating: 4.4 out of 54.4 (8,471 ratings)
48,923 students
Created by Tim Buchalka, Goran Lochert, Tim Buchalka's Learn Programming Academy
Last updated 1/2021
English
English, French [Auto], 
30-Day Money-Back Guarantee

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
Curated for the Udemy for Business collection

Course content

12 sections • 116 lectures • 15h 59m total length

  • Preview01:56
  • Preview03:42
  • Preview05:15
  • JDK8 for MAC
    02:44
  • JDK8 for Linux
    04:20
  • Preview09:54
  • IntelliJ for MAC
    09:43
  • IntelliJ for Linux
    10:22
  • Preview02:53
  • Preview04:15

  • Introduction to Arrays
    00:53
  • Big-O Notation
    14:09
  • A Quick Review of Arrays in Java
    07:42
  • Arrays in Memory
    09:02
  • Big-O Values for Array Operations
    11:56

  • Preview01:03
  • Bubble Sort (Theory)
    08:50
  • Bubble Sort (Implementation)
    11:34
  • Stable vs. Unstable Sort Algorithms
    Preview04:42
  • Selection Sort (Theory)
    06:33
  • Selection Sort (Implementation)
    05:02
  • Insertion Sort (Theory)
    07:34
  • Insertion Sort (Implementation)
    07:12
  • Shell Sort (Theory)
    12:54
  • Shell Sort (Implementation)
    Preview10:49
  • Recursion
    18:10
  • Merge Sort (Theory)
    20:40
  • Merge Sort (Implementation)
    28:09
  • Quick Sort (Theory)
    08:58
  • Quick Sort (Implementation)
    12:34
  • Counting Sort (Theory)
    07:56
  • Counting Sort (Implementation)
    08:35
  • Radix Sort (Theory)
    11:12
  • Stable Counting Sort (Theory)
    13:18
  • Radix Sort (Implementation)
    14:05
  • Sorting Arrays Using the JDK
    07:00
  • Preview01:11
  • Sort Algorithms Challenge #1 Solution
    04:03
  • Sort Algorithms Challenge #2
    00:49
  • Sort Algorithms Challenge #2 Solution
    11:46
  • Sort Algorithms Challenge #3
    01:12
  • Sort Algorithms Challenge #3 Solution
    09:49

  • Introduction to Lists
    02:49
  • Abstract Data Types
    02:56
  • Array Lists
    23:56
  • Preview06:48
  • Singly Linked Lists (Theory)
    06:42
  • Singly Linked Lists (Implementation)
    17:39
  • Doubly Linked Lists (Theory)
    09:33
  • Doubly Linked Lists (Implementation)
    21:47
  • The JDK LinkedList Class
    12:34
  • Linked Lists Challenge #1
    01:36
  • Linked Lists Challenge #1 Solution
    09:29
  • Linked Lists Challenge #2
    01:46
  • Linked Lists Challenge #2 Solution
    07:30

  • Introduction to Stacks
    00:37
  • Stacks (Theory)
    07:22
  • Stacks Implementation (Array)
    Preview18:31
  • Stacks Implementation (Linked List)
    11:59
  • Stacks Challenge
    02:03
  • Stacks Challenge Solution
    08:25

  • Introduction to Queues
    00:26
  • Queues (Theory)
    03:38
  • Queues (Array Implementation)
    15:49
  • Circular Queue Implementation (Part One)
    14:21
  • Circular Queue Implementation (Part Two)
    20:30
  • Queues and the JDK
    08:20
  • Queues Challenge
    01:58
  • Queues Challenge Solution
    08:52

  • Introduction to Hashtables
    00:23
  • Hashtables (Theory)
    08:25
  • Hashtables (Array Implementation)
    13:53
  • Linear Probing
    21:14
  • Linear Probing - Removing Items
    09:39
  • Linear Probing - Rehashing
    11:03
  • Chaining
    21:24
  • Hashtables and the JDK
    16:52
  • Bucket Sort (Theory)
    06:35
  • Bucket Sort (Implementation)
    09:03
  • Hashtables Challenge #1
    01:54
  • Hashtables Challenge #1 Solution
    02:39
  • Hashtables Challenge #2
    01:37
  • Hashtables Challenge #2 Solution
    07:55

  • Introduction to Search Algorithms
    00:50
  • Linear Search Algorithm
    03:51
  • Binary Search Algorithm
    07:57
  • Binary Search (Implementation)
    13:12

  • Introduction to Trees
    00:55
  • Trees (Theory)
    11:16
  • Binary Search Trees (Theory)
    14:17
  • Binary Search Trees (Insertion)
    10:50
  • Binary Search Trees (Traversal)
    11:24
  • Binary Search Trees (Get, Min, Max)
    10:28
  • Binary Search Trees (Delete Cases 1 and 2)
    03:15
  • Binary Search Trees (Implement Cases 1 and 2)
    09:11
  • Binary Search Trees (Delete Case 3)
    08:51
  • Binary Seach Trees (Implement Case 3)
    07:16
  • Trees and the JDK
    03:44
  • Binary Search Trees Challenge #1
    01:53
  • Binary Search Trees Challenge #1 Solution
    02:49
  • Binary Search Trees Challenge #2
    09:17

  • Introduction to Heaps
    00:29
  • Heaps (Theory)
    07:50
  • Storing Heaps as Arrays
    07:54
  • Heaps (Insert)
    09:02
  • Heaps (Delete Theory)
    06:55
  • Heaps (Delete)
    20:06
  • Heaps (Peek)
    05:19
  • Priority Queues
    12:00
  • Heapsort (Theory)
    04:54
  • 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

Featured review

Ryan Oliver
Ryan Oliver
23 courses
1 review
Rating: 5.0 out of 59 months ago
The structure of the course is well throughout with practical examples, highly recommendable for anyone who has some knowledge of Java to improve their knowledge of data structures. This course would also be applicable for students looking to refresh/ brush up before an exam.

Instructors

Tim Buchalka
Java Python Android and C# Expert Developer - 900K+ students
Tim Buchalka
  • 4.6 Instructor Rating
  • 238,445 Reviews
  • 903,292 Students
  • 12 Courses

Tim's been a professional software developer for over 35 years.  During his career, he has worked for major companies such as Fujitsu, Mitsubishi, and Saab.

His video courses are used to train developers in major companies such as Mercedes-Benz, Paypal, VW, Pitney Bowes, IBM, and T-Mobile just to name a few (via the Udemy for Business program).

What makes Tim unique is his professional programming career - many instructors have never programmed professionally, let alone had a distinguished professional development career like Tim.

Tim has trained over 900,000 students how to program, way more than a typical IT Professor at a college does in a lifetime.

In fact, Tim's courses are often purchased by students struggling to get through college programming courses.

"I am learning a lot about Java very quickly. I wish my college courses worked this way, they drag the same amount of material out over months." - Thomas Neal

"I love this guy. I'm in school for java right now at a local college and I bought this course hoping it would help clarify the fuzzy areas of my coursework. There's no comparison. Every time I get lost in my textbook, I watch a couple more of these videos and I'm right back on track. He explains everything so perfectly. It sinks right in." - Kristen Andreani

"Tim is a great instructor, I have more courses from him and all are great. This one really helped me with my understanding of Java from the very beginnings. In fact, I was able to find a job as Java developer with the knowledge gained from this course, so I basically owe Mr. Buchalka my career" - Daniel Kubányi

Tim's mission is simple:  to make a difference in your life by helping you to become a software developer.  Tim does that through his Java, Python, C#, Spring Framework, and Android development courses.

When Tim started programming over thirty-five years ago, there was no online video training.  

There was no "easy" way to learn.  The Internet, in its current form, didn't exist, and as a result, Tim couldn't "Google" for help, or watch videos on Youtube.

After learning the hard way, Tim was determined to become the best teacher he could, and to make his training as painless as possible, so that you, or anyone else with the desire to become a software developer, could become one.

In between doing that, Tim spent the best part of those years as a professional software developer writing applications in Java and a variety of other languages.  In addition, he spent many years with J2EE (as it was then known), now known as Java Enterprise Edition (JEE), designing and developing enterprise applications.

Tim is relatively unique, in that he is a professional, experienced software developer who also has exceptional teaching skills.  

Many instructors have no work experience in the field.  Make sure the person you trust with your education is a real expert with substantial previous professional experience.

The bottom line for you is, when taking any of Tim's courses, is that you will learn the right way to do things from an expert, in the shortest possible amount of time.

Tim's Java, Android, and Python courses, here on Udemy are of the highest quality as reviewed by his students.   Ten's of thousands of students, just like you, have taken his classes, thousands have left glowing reviews, and many have gone on to full-time jobs, or consulting/freelancing opportunities after completing one of his courses.

Tim recently placed in the top ten Udemy instructors as voted for by his students and Udemy themselves.  

What does all of this mean for you?

You can have full confidence that Tim's courses are of exceptional quality, and that he can teach you to become a software developer if you have the desire to become one.

Are you ready to start?  You can get started today.  No previous experience is necessary.

In 2020, video training is the quickest way to learn, and with Tim's experience and training, it is possible for you to become a software developer.  You can do this.

Why not start today?  Click one of his courses below, and watch his introductory video, to find out more about who he is and what he can offer you.

Goran Lochert
Software Engineer | Unity Certified Expert Programmer
Goran Lochert
  • 4.5 Instructor Rating
  • 21,648 Reviews
  • 113,749 Students
  • 8 Courses

I’ve been a software developer for over 12 years (10 commercially), creating Desktop, Web, and Mobile applications during this time.

I am a fully certified Java Developer (Java Oracle Certificate Associate programmer Java SE 8) and have a lot of experience with Java, JPA, Java Enterprise Edition, Spring, Spring Boot, Maven, Gradle, and JavaFX.

In addition, I’ve been heavily involved in game development and frameworks used to create games. I am Unity Certified Expert Programmer.

I am an official developer contributor for LibGDX (a very popular game framework) and am heavily experienced with it, as well as AndEngine, Unity and Unreal engine.

Teaching people and sharing my knowledge is a real passion of mine, and I really enjoy providing information that is not accessible anywhere else. 

I create training material that actually teaches you how to program, and how things work!  An important distinction, since many tutorials on the Internet, allow you to follow along blindly but fail to explain things so that you can apply this to other projects in the future.

If you want to truly understand how things work and become a programmer, you are in the right place.

I'm On A Quest To Give You The Education You Never Received At School.


Tim Buchalka's Learn Programming Academy
Professional Programmers and Teachers - 1.1M students
Tim Buchalka's Learn Programming Academy
  • 4.5 Instructor Rating
  • 324,710 Reviews
  • 1,120,387 Students
  • 52 Courses

The Learn Programming Academy was created by Tim Buchalka, a software developer with 35 years experience, who is also an instructor on Udemy, with over 1.1M+ students in his courses on Java, Python, Android, C#  and the Spring framework. 

The Academy’s goal in the next three years, is to teach one million people to learn how to program.

Apart from Tim’s own courses, which are all available here, we are working with the very best teachers, creating courses to teach the essential skills required by developers, at all levels.

One other important philosophy is that our courses are taught by real professionals; software developers with real and substantial experience in the industry, who are also great teachers.  All our instructors are experienced, software developers!

Our team is busy creating new courses right now.

Whether you are a beginner, looking to learn how to program for the very first time, or to brush up on your existing skills, or to learn new languages and frameworks, the Academy has you covered.

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Impressum Kontakt
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.