We may earn an affiliate commission when you visit our partners.
Course image
Tim Buchalka's Learn Programming Academy, Goran Lochert, and Tim Buchalka

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.

Read more

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:-

ArraysLinked ListsTreesHashtablesStacksQueuesHeapsSort algorithmsSearch 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

Enroll now

What's inside

Learning objectives

  • 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

Syllabus

Introduction
Introduction From Tim Buchalka

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

JDK8 for Windows
Read more
JDK8 for MAC
JDK8 for Linux
IntelliJ for Windows
IntelliJ for MAC
IntelliJ for Linux

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

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

Arrays and Big-O Notation

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

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

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

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

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

Sort Algorithms

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lists

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

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

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

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

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

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

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

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

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

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

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

Stacks

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

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

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

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

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

Queues

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

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

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

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

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

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

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

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

Hashtables

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

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

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

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

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

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

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

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

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

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

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

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

Search Algorithms

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

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

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

Trees

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

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

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

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores how data structures and algorithms are used in practical settings, preparing learners to apply these concepts in their own projects
Taught by Sarah Ettritch, an instructor with extensive experience in software development and implementing data structures and algorithms in Java
Delves into advanced data structures and algorithms, helping learners strengthen their foundation and develop professional expertise
Covers a comprehensive range of data structures and algorithms, including arrays, linked lists, trees, hashtables, stacks, queues, and heaps
Provides hands-on implementation exercises, allowing learners to gain practical experience and reinforce their understanding of the concepts
Leverages expertise from the Java Development Kit (JDK), showcasing practical applications and real-world scenarios

Save this course

Save Data Structures and Algorithms: Deep Dive Using Java to your list so you can find it easily later:
Save

Reviews summary

Introduction to algorithms fundamentals

Learners say this is an excellent introduction to learning algorithm fundamentals using Java. Students say the theory and implementation of algorithms are well explained.
Students find implementation in Java understandable
"Al the algorithms theory and implementation are very well explained."
Concepts of algorithms are clearly presented
"It is a very good introduction to algorithms."
"Al the algorithms theory and implementation are very well explained."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Data Structures and Algorithms: Deep Dive Using Java with these activities:
Review your notes on data structures and algorithms
Reviewing your notes will help you refresh your memory on the key concepts of data structures and algorithms.
Browse courses on Data Structures
Show steps
  • Gather your notes from class or other sources.
  • Read through your notes and summarize the main points.
  • Test your understanding by answering practice questions.
Review the book 'Data Structures and Algorithms in Java'
Reading and reviewing this book will provide you with a comprehensive understanding of data structures and algorithms in Java.
Show steps
  • Read the book and take notes.
  • Summarize the main concepts in your own words.
  • Write a review of the book.
  • Share your review with others.
Follow tutorials on algorithms
Following tutorials on algorithms and Big-O notation will help you understand the different types of algorithms and how to analyze their efficiency.
Browse courses on Algorithms
Show steps
  • Find a tutorial on an algorithm or Big-O notation.
  • Follow the tutorial and try to understand the concepts being explained.
  • Implement the algorithm or Big-O notation in code.
  • Test your implementation with different inputs.
  • Repeat steps 1-4 for different algorithms and Big-O notations.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Practice implementing data structures
Practice implementing data structures and algorithms to reinforce your understanding of how they work under the hood.
Browse courses on Data Structures
Show steps
  • Choose a data structure and algorithm to implement.
  • Write the code for the implementation.
  • Test your implementation with different inputs.
  • Debug your implementation and fix any errors.
  • Repeat steps 1-4 for different data structures and algorithms.
Join a study group for data structures
Joining a study group will allow you to collaborate with other students and learn from each other.
Browse courses on Data Structures
Show steps
  • Find a study group or create your own.
  • Meet regularly with your group.
  • Discuss the course material.
  • Work on problems together.
  • Quiz each other to test your understanding.
Write a blog post about data structures
Writing a blog post about data structures will help you solidify your understanding of the concepts and also help others learn about them.
Browse courses on Data Structures
Show steps
  • Choose a topic related to data structures.
  • Research the topic and gather information.
  • Write a blog post outlining the main concepts.
  • Edit and proofread your blog post.
  • Publish your blog post online.
Contribute to an open-source data structure library
Contributing to an open-source data structure library will allow you to learn from real-world examples and help others.
Browse courses on Data Structures
Show steps
  • Find an open-source data structure library.
  • Read the documentation and tutorials.
  • Identify a bug or feature to work on.
  • Fix the bug or implement the feature.
  • Submit a pull request to the library.
Build a data structure visualization tool
Building a data structure visualization tool will help you understand how data structures work and how to implement them.
Browse courses on Data Structures
Show steps
  • Choose a data structure to visualize.
  • Design the user interface for your tool.
  • Implement the visualization logic.
  • Test your tool with different data sets.
  • Share your tool with others.

Career center

Learners who complete Data Structures and Algorithms: Deep Dive Using Java will develop knowledge and skills that may be useful to these careers:
Computer Programmer
A Computer Programmer applies the theory and principles of computer science to the design, development, testing and implementation of computer systems, applications, and components. As a Computer Programmer, having a strong background in data structures and algorithms, such as the one taught in the course "Data Structures and Algorithms: Deep Dive Using Java," allows you to develop efficient and reliable software. This course will provide you with a comprehensive understanding of various data structures, such as arrays, linked lists, stacks, queues, and trees, and how to implement them effectively. It will also cover essential algorithms for sorting, searching, and hashing, equipping you with the skills necessary for designing and developing robust software solutions as a Computer Programmer.
Software Engineer
A Software Engineer applies engineering principles to the design, development, and maintenance of software systems. The course "Data Structures and Algorithms: Deep Dive Using Java" is highly relevant to Software Engineers as it provides a deep understanding of data structures and algorithms, which are essential for designing and developing efficient and reliable software. The course covers a wide range of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, empowering you to create robust and scalable software solutions.
Data Analyst
A Data Analyst analyzes data to identify patterns and trends, and extract meaningful insights. This course entitled "Data Structures and Algorithms: Deep Dive Using Java" aligns well with the role of a Data Analyst as it provides a thorough understanding of how data is structured and organized, and how to manipulate it efficiently. The course covers data structures such as arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing. By mastering these concepts, you will be well-equipped to gather, clean, and analyze large datasets effectively, unlocking valuable insights that can inform decision-making and drive business outcomes.
Software Developer
A Software Developer designs, builds, and maintains computer applications. This course on "Data Structures and Algorithms: Deep Dive Using Java" is highly beneficial for aspiring Software Developers as it provides a solid foundation in the fundamentals of data structures and algorithms. Understanding how data is structured and organized, and how algorithms operate, allows you to design and develop efficient, scalable, and maintainable software applications. The course covers a wide range of data structures, including arrays, linked lists, stacks, queues, and trees, as well as essential algorithms for sorting, searching, and hashing, providing you with a comprehensive knowledge base for a successful career as a Software Developer.
Systems Analyst
A Systems Analyst analyzes and designs computer systems, including hardware, software, and networks. The course "Data Structures and Algorithms: Deep Dive Using Java" can be beneficial for Systems Analysts as it provides a comprehensive understanding of how data is structured and organized, and how algorithms operate. This knowledge is essential for designing and implementing efficient and effective computer systems. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, equipping you with the skills to excel in the role of a Systems Analyst.
Data Scientist
A Data Scientist applies scientific methods to the analysis and interpretation of data. The course "Data Structures and Algorithms: Deep Dive Using Java" can be useful for Data Scientists as it provides a strong foundation in the fundamentals of data structures and algorithms. Understanding how data is structured and organized, and how algorithms operate, allows you to develop efficient and scalable data analysis pipelines. The course covers a range of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, providing you with a comprehensive knowledge base for success as a Data Scientist.
Database Administrator
A Database Administrator designs, implements, and maintains databases. The course "Data Structures and Algorithms: Deep Dive Using Java" may be helpful for Database Administrators as it provides a solid understanding of the principles of data organization and retrieval. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, providing you with a foundation for designing and managing efficient and reliable databases.
Quantitative Analyst
A Quantitative Analyst uses mathematical and statistical models to analyze financial data. The course "Data Structures and Algorithms: Deep Dive Using Java" may be beneficial for Quantitative Analysts as it provides a solid understanding of data structures and algorithms, which are essential for developing and implementing efficient and accurate financial models. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, equipping you with the skills to succeed in the field of Quantitative Analysis.
Technical Architect
A Technical Architect designs and develops the overall architecture of software systems. The course on "Data Structures and Algorithms: Deep Dive Using Java" can be a valuable asset to aspiring Technical Architects by providing a strong foundation in the fundamentals of data structures and algorithms. Understanding how data is structured and organized, as well as how algorithms operate, empowers you to design and implement scalable, efficient, and reliable software architectures.
Information Security Analyst
An Information Security Analyst plans and implements security measures to protect an organization's information systems and data. The course "Data Structures and Algorithms: Deep Dive Using Java" may be helpful for Information Security Analysts as it provides a solid understanding of data structures and algorithms, which are essential for developing and implementing effective security solutions. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, providing you with a foundation for building robust and secure systems.
Software Test Engineer
A Software Test Engineer designs and executes test cases to ensure the quality of software products. The course "Data Structures and Algorithms: Dive Deep Using Java" can be beneficial for Software Test Engineers as it provides a solid understanding of data structures and algorithms, which are essential for developing effective and efficient test cases. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, equipping you with the skills to identify and resolve software defects.
Business Analyst
A Business Analyst analyzes business processes and systems to identify areas for improvement. The course "Data Structures and Algorithms: Deep Dive Using Java" may be useful for Business Analysts as it provides a strong foundation in data organization and retrieval principles. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, providing you with a solid understanding of how data is managed and processed within business systems.
DevOps Engineer
A DevOps Engineer automates and integrates the software development and operations processes. The course "Deep Dive Using Java" may be helpful for DevOps Engineers as it provides a solid understanding of data structures and algorithms, which are essential for building and maintaining efficient and reliable software pipelines.
Data Warehouse Engineer
A Data Warehouse Engineer designs and builds data warehouses for storing and managing large datasets. The course "Deep Dive Using Java" may be helpful for Data Warehouse Engineers as it provides a strong foundation in data organization and retrieval principles. The course covers a variety of data structures, including arrays, linked lists, stacks, queues, and trees, as well as algorithms for sorting, searching, and hashing, providing a solid understanding of how data is managed and processed within data warehouses.
Cloud Architect
A Cloud Architect designs and manages cloud computing systems. The course "Deep Dive Using Java" can be useful for Cloud Architects as it provides a solid understanding of data structures and algorithms, which are essential for designing and implementing efficient and scalable cloud-based solutions.

Reading list

We've selected 11 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Data Structures and Algorithms: Deep Dive Using Java.
Provides a comprehensive overview of data structures and algorithms in Java. It great resource for students and professionals who want to learn more about these topics.
Classic textbook on algorithms. It provides a comprehensive overview of the most important algorithms and data structures.
Comprehensive reference on algorithms. It great resource for students and professionals who want to learn more about the design and analysis of algorithms.
Provides a comprehensive overview of data structures and algorithms in Python. It great resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of data structures in Java. It great resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of sorting and searching algorithms in Java. It great resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of data structures and algorithms in C++. It great resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of data structures in C++. It great resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of data structures and algorithms in JavaScript. It great resource for students and professionals who want to learn more about these topics.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Data Structures and Algorithms: Deep Dive Using Java.
Data Structures and Algorithms: In-Depth using Python
Most relevant
Introduction to Data Structures and Algorithms in C++
Most relevant
Data Structures: An Active Learning Approach
Algorithms and Data Structures in Swift 5
Data Structures and Algorithms In Java ( DSA )
Algorithms and Data Structures - Part 1
Practical Data Structures & Algorithms in Java + HW
Data Structures & Algorithms Using C++
Algorithms and Data Structures - Part 2
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser