Welcome to the Data Structures and Algorithms course! Dive into the essential principles and techniques that form the backbone of computer science and software development. This comprehensive course explores the efficient organization, storage, and manipulation of data using various data structures such as arrays, linked lists, stacks, queues, hash tables, trees, and graphs. You will learn how to implement these structures in your code, optimize their performance, and solve complex computational problems through algorithm design and analysis.

This Labor Day, enjoy $120 off Coursera Plus. Unlock access to 10,000+ programs. Save today.


What you'll learn
Implement and manipulate data structures (arrays, linked lists, stacks, queues) for efficient data management in software development.
Apply sorting algorithms (quicksort, mergesort, insertion sort) to optimize data organization and retrieval for solving real-world problems.
Design and analyze graph algorithms (BFS, DFS, shortest paths) to address complex network-related challenges in data management.
Utilize tree structures (binary trees, AVL trees) and hash tables for rapid data access and storage, enhancing computational efficiency.
Skills you'll gain
Details to know

Add to your LinkedIn profile
August 2025
140 assignments
See how employees at top companies are mastering in-demand skills

There are 10 modules in this course
In this module, you will learn how to measure the efficiency of algorithms at design time. More specifically, you will learn about asymptotic notation to represent the efficiency of algorithms in terms of the time and space utilized by your algorithms. You will also revisit C fundamentals with the help of a few basic programs.
What's included
22 videos5 readings8 assignments1 ungraded lab1 plugin
In this module, you will learn about linked lists, stacks, and queues, along with their applications to various domains of computing. You will learn to apply them to construct efficient algorithms for various problems. You will also be able to implement these data structures in C.
What's included
27 videos8 readings17 assignments1 discussion prompt3 ungraded labs
In this module, you will learn about top-down recursive algorithms, with a specific discussion on insertion sort and merge sort algorithms. Specifically, you will understand the recursive and iterative versions of these sorting algorithms along with their derivations of time and space complexities. You will also implement these algorithms on large tuple data read from files and compare the running time of these algorithms. Additionally, you will learn to implement linear and binary search algorithms over arrays.
What's included
23 videos8 readings18 assignments1 discussion prompt3 ungraded labs
In this module, you will learn about the quick sort algorithm, implement it and analyze its time complexity. You will additionally study a summary of comparison-based sorting algorithms, along with their lower bound time complexity. You will also learn non-comparison-based sorting algorithms, such as bucket sort and radix sort, along with their complexity analysis and implementation.
What's included
14 videos5 readings12 assignments1 programming assignment1 discussion prompt2 ungraded labs
In this module, you will learn about dictionary ADT s, hash tables, and binary trees. You will understand various hashing schemes, such as linear chaining and open addressing, and analyze their performance for large data. You will also gain insights into binary trees, tree traversals, and their implementations.
What's included
16 videos6 readings14 assignments1 discussion prompt2 ungraded labs
In this module, you will learn to use binary search trees and AVL trees as dictionaries. You will learn to implement them and store large tuple data. You would also be able to compare the search performance of both the trees averaged over large datasets. Additionally, you would be able to derive the best and worst-case complexities of search, insert, and delete in binary search trees (BST s) and AVL trees.
What's included
22 videos5 readings18 assignments1 discussion prompt1 ungraded lab
In this module, you will learn about priority queues abstract data type (ADT ) and various kinds of tries. You will also learn to implement heaps for priority queues and use them to find efficient tries for file compression. Additionally, you will learn about tries, compressed tries, and suffix trees, along with their applications to various domains of computer science.
What's included
20 videos6 readings15 assignments1 programming assignment1 discussion prompt2 ungraded labs
In this module, you will learn the fundamentals of graphs, the data structures used to represent them, and the breadth-first graph traversal algorithm. You will learn to use the breadth-first graph traversal to solve a few computational problems related to graphs, such as checking for bipartite graphs and counting the connected components. You will also be able to implement breadth-first traversal efficiently using the appropriate data structure.
What's included
17 videos4 readings14 assignments1 discussion prompt1 ungraded lab
In this module, you will learn about depth-first traversal in graphs and its applications to graph-related problems. You will learn to analyze its complexity and implement it efficiently. You will understand the minimum spanning trees (MST) problem in weighted graphs and study Kruskal’s algorithm that computes MST from a weighted graph. You will additionally learn to optimize the time complexity of Kruskal’s algorithm using the union-find data structure and implement it.
What's included
19 videos6 readings15 assignments1 discussion prompt1 ungraded lab
In this module, you will learn about Prim’s algorithm for computing the minimum spanning tree in a weighted graph. Additionally, you will also learn about Dijkstra’s algorithm to compute “single-source shortest paths.” You will also learn about the Bellman-Ford algorithm to compute “single-source shortest paths” in graphs with negative edge weights. You will also be able to implement these algorithms and analyze their time complexities.
What's included
14 videos6 readings9 assignments1 ungraded lab1 plugin
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

Why people choose Coursera for their career





Open new doors with Coursera Plus
Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Join over 3,400 global companies that choose Coursera for Business
Upskill your employees to excel in the digital economy
Frequently asked questions
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
You will be eligible for a full refund until two weeks after your payment date, or (for courses that have just launched) until two weeks after the first session of the course begins, whichever is later. You cannot receive a refund once you’ve earned a Course Certificate, even if you complete the course within the two-week refund period. See our full refund policy.
More questions
Financial aid available,