We may earn an affiliate commission when you visit our partners.
Prateek Narang and Coding Minutes

Are you a beginner looking to enter the world of Data Structures or intermediate programmer wondering what happens behind a Hash-table?

Welcome to Data Structures & Algorithms, Essentials Course - the only course you need to understand the core concepts behind Data Structures & build a solid programming foundations using C++ . The course is taught by an expert instructor Prateek Narang from Google, who is not just a software engineer but also has mentored thousands of students in becoming great programmers & developers and is top rated on Udemy for his amazing teaching skills.

Read more

Are you a beginner looking to enter the world of Data Structures or intermediate programmer wondering what happens behind a Hash-table?

Welcome to Data Structures & Algorithms, Essentials Course - the only course you need to understand the core concepts behind Data Structures & build a solid programming foundations using C++ . The course is taught by an expert instructor Prateek Narang from Google, who is not just a software engineer but also has mentored thousands of students in becoming great programmers & developers and is top rated on Udemy for his amazing teaching skills.

Every software application revolves around data, performing different operations like Insert, Delete, Update & Search. To be a great software developer, understanding of Data Structures & Algorithms is must and this course provides you a deep understanding of the topic by covering both the theory and hands-on-implementation of each data structure from scratch.

The Course contains 20+ hours of interactive video content & dozens of coding exercises, teaching you all essential concepts starting from ground zero. Each section covers data structure in great detail, with Coding Exercises & real life examples. Here is what you will learn -

Programming ConceptsBit masking

Object Oriented Programming Basics

Pointers & Dynamic Memory (C++)

Recursion

Data Structures Foundation

Array, 2D Array, Strings, Vectors

Linked Lists, Stacks, Queues

Trees, BST, Tries

Heaps/Priority Queues

Hash-tables, Collision Handling

Graphs

Algorithms Foundation

Brute Force, Backtracking

Sorting & Searching

Divide & Conquer

Dynamic Programming

The course is designed for beginner & intermediate programmers. We try to make not so easy topics look easy with intuitive explanations & interactive video lectures with dozens of memes ;) The course finishes with a final mini project - a command line app for an online shopping cart combining principles from Object Oriented Programming & Data Structures.

Unlike most instructors, we are not a salesperson or a marketer. My job is to help you build strong fundamentals in programming & be a successful developer. Through Udemy & Coding Minutes, I am providing this course to you at a fraction of cost of its original cost, so that anyone who is interested to learn can take their skills to the next level. So I hope you sign up today, and I will see you in the course.

Enroll now

What's inside

Learning objectives

  • Core concepts & internals of data structures
  • Trees, linked lists, heaps, graphs
  • Build all data structures from scratch
  • Object oriented programming basics
  • Brute force & optimisation techniques
  • Space time complexity analysis
  • Hash functions, collision handling
  • Recursion & backtracking
  • Dynamic memory & pointers
  • Create your own ds library!
  • C++ standard template library basics
  • Project - design & implement shopping cart

Syllabus

Introduction
Course Orientation!
Get maximum out of this course?
Code Repository
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Taught by an instructor from Google, which is known for its contributions to computer science and software engineering
Covers bit masking, which is a technique used in low-level programming and algorithm optimization
Includes a final mini project where learners design and implement a shopping cart application, which reinforces object-oriented programming and data structures
Explores dynamic programming, which is a powerful technique for solving optimization problems
Uses C++ Standard Template Library (STL) basics, which can accelerate development and promote code reuse
Requires learners to work with pointers and dynamic memory allocation, which can be challenging concepts for beginners

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Course focus based on its content

According to students, the course provides a deep understanding of Data Structures & Algorithms by covering both theory and hands-on implementation from scratch. Taught by an expert instructor with industry experience, it includes 20+ hours of video content and dozens of coding exercises. It aims to build strong fundamentals using C++, covering a wide range of topics from arrays to graphs, including pointers, dynamic memory, and STL basics. Designed for beginner and intermediate programmers, it features intuitive explanations and a practical final project.
Taught using C++, includes language features.
"The course uses C++, including pointers and dynamic memory."
"It's useful that they cover C++ specific features like STL basics."
"Focusing on C++ implementation was exactly what I was looking for."
Features coding exercises and a project.
"The numerous coding exercises were vital for practicing."
"Building the final project helped solidify my understanding."
"I appreciated the focus on implementation alongside theory."
Learn from an industry expert instructor.
"It was great learning from an instructor with experience at Google."
"The instructor is clearly knowledgeable and explains concepts well."
"His reputation as a top-rated teacher seems well deserved."
Covers wide range of DS & Algo topics.
"The course covers all the essential DS&A topics I needed."
"I found the breadth of material, from arrays to graphs, excellent."
"It provides a strong foundation across many different data structures and algorithms."

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 & Algorithms Essentials using C++ with these activities:
Review C++ Fundamentals
Solidify your understanding of C++ syntax, data types, and control structures. This will make learning data structures and algorithms in C++ much smoother.
Show steps
  • Review basic C++ syntax and data types.
  • Practice writing simple C++ programs.
  • Familiarize yourself with C++ standard library.
Review 'Cracking the Coding Interview'
Reinforce your understanding of data structures and algorithms with a focus on interview preparation. This book provides a practical perspective on applying these concepts.
Show steps
  • Read relevant chapters on data structures and algorithms.
  • Solve practice problems from the book.
  • Analyze the time and space complexity of your solutions.
LeetCode Easy Problems
Practice implementing basic data structures and algorithms using LeetCode. This will help you solidify your understanding and improve your coding skills.
Show steps
  • Solve 5-10 easy LeetCode problems per week.
  • Focus on problems related to arrays, linked lists, and strings.
  • Analyze the time and space complexity of your solutions.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Blog Post on Hash Tables
Explain the concept of hash tables, collision handling techniques, and their applications. This will reinforce your understanding and help you communicate complex ideas effectively.
Show steps
  • Research hash tables and different collision handling methods.
  • Write a clear and concise blog post explaining the concepts.
  • Include code examples and diagrams to illustrate your points.
  • Publish your blog post on a platform like Medium or your own website.
Implement a Simple Data Structures Library
Create your own C++ library containing implementations of common data structures. This will deepen your understanding of how these structures work internally.
Show steps
  • Choose 2-3 data structures to implement (e.g., linked list, stack, queue).
  • Write C++ code to implement the data structures from scratch.
  • Write unit tests to ensure your implementations are correct.
  • Document your code and create a simple API.
Review 'Introduction to Algorithms'
Deepen your understanding of algorithms with a more theoretical approach. This book provides a solid foundation for advanced topics.
Show steps
  • Read chapters on specific algorithms covered in the course.
  • Work through the exercises and problems in the book.
  • Compare the book's explanations with the course materials.
Help Others on Forums
Reinforce your understanding by helping other students with their questions and problems. Explaining concepts to others is a great way to solidify your own knowledge.
Show steps
  • Find online forums or communities related to data structures and algorithms.
  • Browse the forums for questions you can answer.
  • Provide clear and helpful explanations to other students.

Career center

Learners who complete Data Structures & Algorithms Essentials using C++ will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer designs, develops, and maintains software systems, requiring a deep knowledge of data structures and algorithms, which are covered in this course. The course provides a thorough understanding of these topics through lectures and practice, using the C++ programming language. Specifically, this course’s curriculum on searching and sorting will likely prove useful for a software engineer, as will the lessons on dynamic programming. The course's hands-on approach to building data structures from scratch, along with a final project, directly prepares a software engineer for practical challenges.
Software Developer
A software developer creates applications and systems, requiring a strong understanding of data structures and algorithms. This course helps build a foundation in these core concepts, covering topics such as linked lists, trees, and graphs, and provides hands-on experience using C++. The course's focus on building data structures from scratch and implementing a shopping cart project directly translates to the practical skills a software developer needs in their daily work. Furthermore, learning about space time complexity analysis and object oriented programming can be very helpful for a software developer.
Backend Developer
A backend developer focuses on the server-side logic and databases of an application, a role where understanding data structures and algorithms is essential for efficient data management. This course provides an in-depth exploration of data structures and algorithms, such as trees, priority queues, and hash tables, and how these can be implemented in C++. A backend developer should consider the course’s mini project, a command line app for a shopping cart, as it is a practical scenario for back end logic. Furthermore, a study of dynamic memory and pointers may be quite helpful.
Systems Programmer
A systems programmer works on the low-level software that interacts directly with computer hardware, where a detailed understanding of data structures and memory management is paramount. This course helps with these concepts, providing a deep dive into pointers, dynamic memory allocation, and object oriented programming along with data structures such as graphs. The course’s hands-on approach to building data structures from scratch and the use of C++ provide the practical skills needed by a systems programmer.
Algorithm Engineer
An algorithm engineer specializes in developing and optimizing algorithms for various applications, and this course offers a strong foundation in the core data structures and algorithm concepts essential to the role. The course has an extensive curriculum on topics like linked lists, trees, graphs, sorting techniques, and dynamic programming, which are critical elements in an algorithm engineer’s work. This course may be useful, given its focus on optimization techniques such as those found in dynamic programming.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded devices, often needing to optimize memory and performance, which requires a thorough grasp of data structures and memory management. This course helps build skills in these topics, covering dynamic memory allocation, pointers, and C++ implementation of data structures such as linked lists. The content on C++ and building a data structure library from scratch may be helpful to an embedded systems engineer.
Technical Lead
A technical lead guides a development team and needs a strong understanding of data structures and algorithms to make informed decisions on system design and performance. This course may be useful to a technical lead, teaching the core concepts of data structures such as linked lists, queues, and trees. A technical lead should take the course’s final project, building an online shopping cart, into their thinking, as it’s a practical approach to software design.
Cloud Computing Engineer
A cloud computing engineer designs, implements, and maintains cloud-based systems, needing a solid understanding of data structures and algorithms for efficient data management. The course provides an introduction to data structures such as trees, graphs, and hash tables, all of which can be valuable in cloud infrastructure management. The course's focus on implementation using C++ may be useful for understanding the low-level aspects of cloud systems.
Game Developer
A game developer creates video games, a role that can benefit from an understanding of data structures and algorithms for game logic and efficient data handling. This course may be useful for game developers, as it provides a solid introduction to core concepts such as graphs and trees that are frequently used in game development. The course also includes a study of object oriented programming using C++, which is a widely used programming language in the gaming industry.
Mobile Application Developer
A mobile application developer creates applications for mobile devices, and this role can benefit from an understanding of data structures and algorithms for efficient data handling and performance optimization. This course may be useful for a mobile application developer, as it provides an introduction to common data structures such as linked lists, trees, and graphs. The course’s lessons on object oriented programming may also be quite helpful, as this is a common paradigm in mobile app development.
Data Scientist
A data scientist analyzes and interprets complex data, a role that needs an understanding of data structures and algorithms. While this course focuses on implementation in C++, the data structures such as trees, heaps, and graphs may be useful for analysis. The course provides hands-on experience building these structures from scratch. The included lessons on space time complexity analysis can also prove valuable for a data scientist.
Database Administrator
A database administrator manages and maintains databases, a job that can benefit from an understanding of data structures and algorithms for efficient data storage and retrieval. This course’s study of hash tables and its collision handling methods may be useful to a database administrator in their daily work. The course's coverage of space and time complexity may also prove beneficial for database design.
DevOps Engineer
A DevOps engineer focuses on automating and streamlining software development processes, a role that sometimes needs an understanding of data structures and algorithms for handling configuration data. This course may be useful, providing developers the ability to implement data structures from scratch, using C++. The study of C++ may also be useful, since it tends to be used in infrastructure and systems programming, which are important parts of a DevOps engineer's duties.
Quantitative Analyst
A quantitative analyst develops mathematical and statistical models for financial markets, which sometimes requires the use of data structures and algorithms for efficient data processing. This course introduces learners to such concepts as dynamic programming, which may be useful in quantitative analysis. The course also covers space time complexity analysis, which may be useful in optimizing models in a quantitative analyst's daily work.
Technology Consultant
A technology consultant advises clients on technology strategies and solutions, and a familiarity with various data structures and algorithms is helpful in understanding different technology options. This course may be useful for a technology consultant, as it provides a fundamental understanding of these concepts, particularly how they are implemented in C++. The lessons in space time complexity analysis may also prove helpful when analyzing client needs.

Reading list

We've selected two 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 & Algorithms Essentials using C++.
Provides a comprehensive overview of data structures and algorithms commonly used in coding interviews. It includes detailed explanations, code examples, and practice problems. It valuable resource for understanding the practical applications of the concepts taught in the course. It is commonly used by students and professionals preparing for technical interviews.
Provides a rigorous and comprehensive introduction to algorithms. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming. While it may be more valuable as additional reading, it provides a deeper understanding of the theoretical foundations of algorithms. It is commonly used as a textbook at academic institutions.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser