
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Discover practical data structures and algorithms in Java through hands-on practice, covering object-oriented basics, stacks, queues, linked lists, and key sorting and searching algorithms with real coding challenges.
Access a dedicated ta and course q&a for answers typically within 24 hours, and use stackoverflow.com for fast, crowd-sourced solutions on java topics such as loading classes in eclipse.
Master object oriented programming by building a human class with attributes and behaviors, using a constructor to create objects, and running the Java example in Eclipse.
Create and instantiate multiple objects using the constructor, set fields with new values, and explore the this keyword while learning how constructors initialize object state and behavior.
Demonstrates an animal class with age, gender attributes and behaviors, using a constructor to instantiate objects, and a zoo class; explains classes as blueprints and objects as runtime entities.
Demystify how Java programs run by exploring objects, classes, heap and stack, the main method, and garbage collection, plus local, reference, and instance variables.
Learn how arrays store multiple elements in fixed-size slots, initialize a 100-slot integer or double array, and access elements via zero-based indices.
Explore the Java collections framework, focusing on ArrayList and LinkedList, and learn how generics enforce type safety by using parameterization and wrapper types for primitives.
Explore traversing lists in Java using ArrayList and LinkedList, iterating with for and for-each loops, working with custom types like Vehicle, and leveraging the List interface.
Discover how hash set and linked hash set enforce uniqueness, prevent duplicates, and manage insertion order in Java, and see why overriding equals and hashCode matters for user defined objects.
Master collection methods such as add all, remove all, contains, clear, is empty, retain all, and converting a hash set to a list, plus sorting with comparable interface.
Explore hash map, linked hash map, and tree map in Java, using put, get, keySet, and entrySet to manage key-value pairs, observe insertion and natural ordering, and avoid duplicates.
Explore abstract data types in Java as trustworthy container objects built from classes, exposing a public API with increment, get current value, and to string.
Explore how algorithms scale with input size, distinguish linear, constant, quadratic, and cubic time, and learn big o notation and asymptotic growth to analyze Java algorithms.
Learn the stack data structure in Java, implementing push and pop with a top index to enforce last in, first out, and use isFull and isEmpty for safe bounds.
Learn how to implement a stack to reverse a string using push and pop, demonstrating last in, first out behavior, and apply stacks to parse parentheses in expressions.
Explore the queue data structure built on an array, implementing insert, remove, peek, and circular queue behavior with front and rear pointers for first-in, first-out ordering (fifo).
Learn how linked lists store a collection of items using nodes with int data and a next reference, overcoming fixed-size arrays and enabling dynamic insertion and traversal.
Explore singly linked lists in Java by building a self-referential node-based data structure, implementing insert first, insert last, delete first, and display, and compare with arrays.
Implement a circular linked list in Java by adding a last pointer to enable end insertions, while managing first and last references, and supporting insert first, delete first, and display.
Explore the doubly linked list in Java, featuring a previous pointer and first/last references, enabling insertions and deletions. Implement insert first, insert last, and delete first while studying reference variables.
learn to delete last node in a doubly linked list, including single-node and multi-node cases, update last and previous pointers, and implement insert after by key and delete by key.
Learn to implement a part 3 doubly linked list in Java, including delete by key, update of first and last pointers, and display forward and backward, with testing in main.
Explore popular searching and sorting algorithms like binary search, merge sort, and quicksort, and learn to translate pseudocode into Java, covering linear search and stacks, queues, and linked lists.
Learn binary search, a divide-and-conquer algorithm for sorted data. See how to implement it in Java from pseudocode, returning the index or -1 when not found.
Implement the binary search algorithm in Java, creating a static method that returns the index of a target value in an array or -1 if not found.
Practice recursive search techniques in Java, implementing recursive linear search and recursive binary search on arrays, with focus on base cases, midpoints, and not found results.
Explore deeper algorithm analysis by examining big O growth across constant, linear, quadratic, and cubic cases, and learn why logarithmic time, via binary search, dominates worst-case performance.
Welcome to Practical Data Structures & Algorithms in Java + Homeworks Course!
Are you a beginner eager to master Data Structures and Algorithms in Java?
Do you want to confidently tackle coding interviews or enhance your programming skills?
Have you struggled with understanding how data structures work under the hood or how to apply algorithms in real-world scenarios?
Are you seeking a structured, hands-on course that combines theory, implementation, and real-life applications?
If you answered yes to any of these questions, you’re in the right place.
This course is meticulously designed to provide a step-by-step approach, demystifying Data Structures and Algorithms while preparing you for practical programming challenges and career advancement.
What Makes This Course Stand Out?
Comprehensive and Structured Content: Start from the basics and progress to advanced topics, with each concept logically and clearly explained.
Learn by Doing: Gain hands-on experience through practical assignments and real-life examples for every data structure and algorithm covered.
Beginner-Friendly: New to programming or Java? No worries! This course is designed to guide you from the ground up.
Deep Understanding: Go beyond surface-level knowledge to truly grasp how data structures and algorithms work under the hood.
Career-Ready Skills: Equip yourself with in-demand knowledge to ace technical interviews and write efficient, elegant code.
Homework with Solutions: Every assignment includes step-by-step solution videos to reinforce your learning.
Why This Course Is Essential:
Data Structures and Algorithms are the cornerstone of programming. By mastering them, you’ll unlock the ability to design optimized solutions, solve complex problems, and boost your programming confidence. This course bridges the gap between theory and practice, ensuring you’re job-ready and technically proficient.
Latest Course Updates:
(2025): Added beginner-friendly coding exercises on Array, Stack, Queue and Linked Lists.
(Dec 2024): Added a new coding exercise with step-by-step solutions for Hash Table.
(Nov 2024): Maintained and updated all course coding files, exercises and solutions in GitHub repository.
(Oct 2024): Added a comprehensive coding exercises on Linked List & Array and supplementary reading material.
(Sept 2024): Added NEW CONTENT on the Collections Framework and new coding exercise on Queue data structure.
(2023): Enhanced the course with improved online community support to help students collaborate and resolve queries efficiently.
Important Announcement: This course will be constantly updated with more assignments, quizzes, and lectures to enrich your knowledge of data structures and algorithms.
Topics covered in the Practical Data Structures & Algorithms in Java Course:
Intro to Object-Oriented Programming in Java
Classes and Objects
Program Flow and Constructor
Application Runtime
Java behind-the-scenes
The Collections Framework
Lists and Custom Types
HashSet, LinkedHashSet and Hashcode
Collection Methods
Comparable Interface
HashMap, LinkedHashMap and TreeMap
Running Time of an Algorithm and Big O Notation
Array
Stack
Queue
Linked List
Singly Linked List
Doubly Linked List
Circular Linked List
Binary Search Trees
Heap
Hash Tables
Graph
Searching Algorithms
Linear Search
Binary Search
Recursive Search
Sorting Algorithms
Selection Sort
Quick Sort
Merge Sort
Insertion Sort
Recursion
KEY BENEFITS OF DATA STRUCTURES AND ALGORITHMS MASTERY
If I had to pick the single most important topic in software development, it would be data structures and algorithms. Think of it as the fundamental tools available to every computer programmer. The better you get with these tools the more confident a programmer you’ll become. Software development is a vast field requiring all kinds of skill-sets but getting good at this single topic is a huge leap forward in your programming journey and it’ll certainly pave the way for a successful programming career.
The topics in this course are going to cover data structures such as lists, stacks, queues, trees and some of the most powerful sorting, searching, and graph algorithms that have revolutionized the field of computing. Throughout the course I keep things practical and provide real life examples of how all of these algorithms work and when & where they can be applied to write efficient computer programs.
I’ll be moving at a slow and steady pace introducing each topic followed by a PRACTICAL programming assignment so you can immediately apply what you learned. All homework assignments in the course will be accompanied with step by step solution videos demystifying each problem as I code up the solutions. My goal is to make sure, that after you complete this course you feel completely confident going into a coding interview because you will have built a solid foundation in computer programming. So go ahead and signup and I’ll see you in the course.
STUDENT REVIEWS
Don’t just take it from me, take it from other students that have taken this course.
★★★★★ Here’s some testimonials from students that took this course ★★★★★
"Explanations are just amazing. It cant get simpler than this. Thanks for creating this course." - Suman
"This has to be the best money I've spent on an online course. This course completely demystifies data structures and algorithms. Originally, I had feared learning the topic because of how notoriously "difficult" it is to grasp. But I promise you this isn't just another fancy online Ivy League course that uses a bunch of fancy terms without explaining anything. Imtiaz does an EXCELLENT job of explaining all the data structures and algorithms by starting from the VERY fundamentals of Java. I promise you will gain foundational knowledge of DS&A by taking this course. I cannot thank Imtiaz enough for making such a great course, honestly!" - Daniel
"This course was exactly what I am looking for to improve my data structure skills. I do not have a computer science degree. However, I want to become a great software developer and I have been finding it difficult to understand data structure until I enrolled in this course." - Emmanuel
"I like the lots of homework and assignments in this course, because even for a well experienced software engineer it is fun to implement these algorithms." - AU
"I appreciate the whiteboard explanations because it helped me visualize how the algorithms work and the instructor was able to describe it clearly as well." - Nova
"I really enjoyed the course and learned a lot. I can really recommend this course. Imtiaz have the ability to explain complex topics in a logical and easy way, that make understand easier. I also like that he contentiously encourage is students to work through issues on their own." - Jaco
"Awesome. His way of explaining things and presenting data is awesome. I recommend this course to all experienced, new joinee employees as well as comp science / IT students." - Sumeet
Why wait? Take your programming skills to the next level and start mastering Data Structures and Algorithms today!