
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
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.
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.
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.
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.
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.
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 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.
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.
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!