Foundations of Data Structures & Algorithms
Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.
Foundations of Data Structures & Algorithms
This course is part of Data Structures & Algorithms in Java + 150 Leetcode Problems Specialization
Included with
Ask Coursera
Recommended experience
Recommended experience
What you'll learn
Master key data structures like arrays, linked lists, and hash tables.
Develop strong problem-solving skills for coding challenges and interviews.
Learn to calculate time and space complexity and optimize algorithms.
Gain hands-on experience with practical Leetcode problems and algorithm implementations.
Skills you'll gain
Tools you'll learn
Details to know
April 2026
10 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- Learn new concepts from industry experts
- Gain a foundational understanding of a subject or tool
- Develop job-relevant skills with hands-on projects
- Earn a shareable career certificate
There are 8 modules in this course
This course features Coursera Coach!
A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. Embark on a journey to master core data structures and algorithms with a comprehensive curriculum designed for problem-solving. You'll begin by learning the fundamentals of data structures like arrays, linked lists, and hash tables, before diving into essential algorithms like sorting, stacks, and queues. Each module builds upon the last, ensuring you acquire the skills necessary to approach coding problems with confidence and speed. The course progresses by guiding you through various challenges and interview-style questions, supported by real-world examples and coding exercises from Leetcode. From understanding time and space complexity to implementing and optimizing algorithms, you'll gain a robust understanding of how to approach technical interviews and develop efficient solutions. This course is ideal for beginners or those looking to refresh their understanding of key data structures and algorithms. It will help you build the foundation needed for both interviews and real-world coding challenges. Prerequisites include a basic understanding of programming concepts, particularly in Java. The course is suitable for individuals seeking to enhance their technical proficiency in coding interviews. By the end of the course, you will be able to confidently solve data structure and algorithm problems, efficiently calculate time and space complexity, implement core algorithms, and optimize solutions for real-world coding challenges.
In this module, we will guide you through essential steps to kickstart your Leetcode journey, enhance your problem-solving skills, and boost your coding performance. You’ll also learn the key strategies for tackling DSA interviews with confidence. By the end, you’ll be well-prepared to solve coding challenges and ace technical interviews.
What's included
4 videos2 readings1 assignment
4 videos•Total 20 minutes
- Introduction to Specialization•4 minutes
- How to improve problem-solving skills?•8 minutes
- How To Code Fast in an interview!•4 minutes
- How to ace your DSA Interview?•4 minutes
2 readings•Total 20 minutes
- Introduction to the Course 'Foundations of Data Structures & Algorithms'•10 minutes
- Full Specialization Resource•10 minutes
1 assignment•Total 15 minutes
- Course Introduction - Assessment•15 minutes
In this module, we will explore the foundational concepts of time and space complexity and their role in evaluating algorithms. You’ll learn how to calculate time and space complexity for both iterative and recursive algorithms through practical examples. By the end of this module, you will have a strong grasp on Big O notation and how it’s used in interviews to assess algorithm efficiency.
What's included
13 videos1 assignment
13 videos•Total 74 minutes
- Introduction to Time & Space Complexity•5 minutes
- What is Big O Notation?•6 minutes
- Calculating Time Complexity Example 1•7 minutes
- Checking If Big O Notation Is Acceptable in Interviews•9 minutes
- Calculating Time Complexity Example 2•7 minutes
- Myth About Time Complexity•3 minutes
- Calculating Time Complexity of Recursive Cases•7 minutes
- Recursive Time Complexity Example 2•9 minutes
- Time Complexity Live Demonstration•3 minutes
- Introduction To Space Complexity•5 minutes
- Calculating Space Complexity•6 minutes
- Recursive Space Complexity Example 1•4 minutes
- Recursive Space Complexity Example 2•3 minutes
1 assignment•Total 15 minutes
- Time & Space Complexity Analysis - Assessment•15 minutes
In this module, we will dive into the theory behind arrays, exploring their efficiency and common limitations. You’ll also learn essential Java array methods and their practical applications. Alongside theory, we’ll tackle a range of Leetcode practice problems that focus on array manipulation, from finding maximum sums to solving Sudoku, ensuring you’re prepared for technical interviews.
What's included
15 videos1 assignment
15 videos•Total 113 minutes
- What are arrays and why are they so fast!•6 minutes
- Drawbacks of using Arrays•5 minutes
- How do resizable arrays work?•6 minutes
- Important Array Methods In Java Part 1•4 minutes
- Important Array Methods In Java Part 2•5 minutes
- Important Array Methods In Java Part 3•8 minutes
- Practice Problem 1 - Maximum Sum Subarray•9 minutes
- Practice Problem 2 - Best Time To Buy And Sell A Stock•8 minutes
- Practice Problem 3 - Maximum Product Subarray•11 minutes
- Practice Problem 4 - Product Of Array Except Self•7 minutes
- Practice Problem 5 - Rotate Array•10 minutes
- Practice Problem 6 - Max Consecutive Ones•5 minutes
- Practice Problem 7 - Valid Sudoku•14 minutes
- Practice Problem 8 - K Closest Points To Origin•5 minutes
- Practice Problem 9 - Encode and Decode Strings•11 minutes
1 assignment•Total 15 minutes
- Arrays Theory + Array Practice Problems from Leetcode - Assessment•15 minutes
In this module, we will explore the theory and practice of sorting algorithms, from basic methods like Bubble Sort and Selection Sort to more advanced techniques like Merge Sort and Quick Sort. You will implement these algorithms in Java and understand their inner workings. Additionally, we’ll solve Leetcode practice problems to reinforce your skills in applying sorting algorithms to real-world coding challenges.
What's included
21 videos1 assignment
21 videos•Total 168 minutes
- Why is sorting important?•4 minutes
- Introduction To Sorting•5 minutes
- Bubble Sort Theory•8 minutes
- Bubble Sort Implementation•7 minutes
- Selection Sort Theory•5 minutes
- Selection Sort Implementation•6 minutes
- Insertion Sort Theory•8 minutes
- Merge Sort Part 1 - How to merge two sorted arrays•11 minutes
- Merge Sort Part 2 - Merging Two Sorted Arrays Implementation•4 minutes
- Merge Sort Part 3 - Theory•7 minutes
- Merge Sort Implementation•9 minutes
- Quick Sort Part 1 - Partitioning Algorithm•11 minutes
- Quick Sort Part 2 - Understanding how quick sort works•5 minutes
- Counting Sort Part 1 - Theory•17 minutes
- Counting Sort - Implementation•19 minutes
- How is counting sort made stable?•3 minutes
- Radix Sort - Theory•5 minutes
- Radix Sort - Implementation•7 minutes
- Leetcode #283 - Move Zeroes - Java•5 minutes
- Leetcode #75 - Sort Colors - Java•9 minutes
- Leetcode #169 - Majority Element - Java•12 minutes
1 assignment•Total 15 minutes
- Sorting Theory + Sorting Practice Problems - Assessment•15 minutes
In this module, we will explore the structure of linked lists, from the basics of singly linked lists to the more advanced doubly linked lists. You will learn to implement, iterate, and modify linked lists using Java. Additionally, we will dive into practical problems, solving real-world challenges like detecting cycles, reversing lists, and merging lists, providing hands-on experience with this essential data structure.
What's included
24 videos1 assignment
24 videos•Total 168 minutes
- Drawback Of Arrays•4 minutes
- What Is Linked List•8 minutes
- Implementing Linked Lists•4 minutes
- Iterating Over Linked Lists•4 minutes
- Inserting In Linked List•6 minutes
- Deleting From Front In Linked List•3 minutes
- What Is Doubly Linked List•2 minutes
- Linked List Class In Java•3 minutes
- Creating Linked Lists•1 minute
- Using Iterators To Iterate•3 minutes
- Contains•1 minute
- Iterating In Reverse Order•1 minute
- Add Methods In Linked List•4 minutes
- Removal Methods In Linked Lists•3 minutes
- Practice Problem 1 - Intersection Of Two Linked Lists•19 minutes
- Practice Problem 2 - Merge Two Sorted Lists•11 minutes
- Practice Problem 3 - Linked List Cycle•8 minutes
- Practice Problem 4 - Reverse Linked List•10 minutes
- Practice Problem 5 - Palindrome Linked List•29 minutes
- Practice Problem 6 - Linked List Cycle II•7 minutes
- Practice Problem 7 - Find Middle Of The Linked List•6 minutes
- Practice Problem 8 - Remove Nth Node From End Of List•11 minutes
- Practice Problem 9 - Add Two Numbers•13 minutes
- Practice Problem 10 - Reorder List•7 minutes
1 assignment•Total 15 minutes
- Linked Lists - Assessment•15 minutes
In this module, we will explore the core concept of hash tables, how they function, and their practical applications in solving algorithmic problems. You’ll learn about collision resolution, different types of hash tables, and how to leverage them to solve real-world problems. Through Leetcode practice problems, you’ll gain hands-on experience applying hash tables to challenges like detecting duplicates, grouping anagrams, and finding missing integers.
What's included
12 videos1 assignment
12 videos•Total 118 minutes
- What Is Hash Table•5 minutes
- How does a hash table work?•6 minutes
- Hash Table Collision Resolution•7 minutes
- Types Of Hash Table•4 minutes
- Hash Table Usage•9 minutes
- Practice Problem 1 - Contains Duplicate•2 minutes
- Practice Problem 2 - Two Sum•9 minutes
- Practice Problem 3 - Valid Anagram•3 minutes
- Practice Problem 4 - Group Anagrams•9 minutes
- Practice Problem 5 - Longest Consecutive Sequence•24 minutes
- Practice Problem 6 - Three Sum•22 minutes
- Practice Problem 7 - First Missing Positive•18 minutes
1 assignment•Total 15 minutes
- Hash Table Theory + Leetcode Practice Problems - Assessment•15 minutes
In this module, we will introduce the stack data structure and its critical role in various algorithms and applications. You’ll learn how to implement stacks in Java and use them to solve real-world problems, including evaluating mathematical expressions and finding the next greater element. With practice problems from Leetcode, you’ll gain hands-on experience solving challenging tasks using stacks effectively.
What's included
6 videos1 assignment
6 videos•Total 60 minutes
- Introduction to Stacks•7 minutes
- Using Stacks In Java•3 minutes
- Practice Problem 1 - Valid Parenthesis•10 minutes
- Practice Problem 2 - Min Stack•12 minutes
- Practice Problem 3 - Next Greater Element II•19 minutes
- Practice Problem 4 - Evaluate Reverse Polish Notation•9 minutes
1 assignment•Total 15 minutes
- Stacks - Assessment•15 minutes
In this module, we will introduce the queue data structure, explaining its key features and applications in algorithms. You’ll learn how to implement a queue in Java, both through arrays and linked lists, and explore how to use it for efficient data management. By the end of this module, you will be well-equipped to use queues in various coding challenges and problem-solving contexts.
What's included
3 videos1 reading3 assignments
3 videos•Total 17 minutes
- Introduction to Queue•4 minutes
- How Is Queue Implemented•8 minutes
- Using Queue In Java•5 minutes
1 reading•Total 10 minutes
- Conclusion to the Course 'Foundations of Data Structures & Algorithms'•10 minutes
3 assignments•Total 90 minutes
- Queue - Assessment•15 minutes
- Full Course Assessment•60 minutes
- Full Course Practice Assessment•15 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructor
Explore more from Algorithms
- Status: Free Trial
- Status: Free Trial
- Status: Free Trial
- Status: Free Trial
Why people choose Coursera for their career
Frequently asked questions
Data structures and algorithms (DSA) are fundamental concepts in computer science that help in organizing and processing data efficiently. DSA is critical for optimizing code performance and is widely used in software development, machine learning, and system design. Mastering DSA allows you to build scalable and efficient systems, solve complex problems, and excel in technical interviews.
This course focuses on building a strong foundation in data structures and algorithms. It covers essential topics like time and space complexity, arrays, sorting algorithms, linked lists, hash tables, stacks, and queues. Through theoretical lessons and practical problem-solving on platforms like Leetcode, you'll gain deep insights into algorithm design and analysis, which are critical for solving real-world programming challenges.
Upon completing this course, you will have a comprehensive understanding of the most commonly used data structures and algorithms. You will be able to efficiently solve algorithmic problems, analyze the time and space complexity of algorithms, and apply these techniques to real-world coding problems. This knowledge will prepare you for technical interviews and help you build more efficient software systems.
More questions
Financial aid available,
