We may earn an affiliate commission when you visit our partners.
Abdul Bari

You may be new to Data Structure or you have already Studied and Implemented Data Structures but still you feel you need to learn more about Data Structure in detail so that it helps you solve challenging problems and used Data Structure efficiently.

This 53 hours of course covers each topic in greater details, every topic is covered on Whiteboard which will improve your Problem Solving and Analytical Skills. Every Data Structure is discussed, analysed and implemented with a Practical line-by-line coding.

Source code for all Programs is available for you to download

About Instructor

Read more

You may be new to Data Structure or you have already Studied and Implemented Data Structures but still you feel you need to learn more about Data Structure in detail so that it helps you solve challenging problems and used Data Structure efficiently.

This 53 hours of course covers each topic in greater details, every topic is covered on Whiteboard which will improve your Problem Solving and Analytical Skills. Every Data Structure is discussed, analysed and implemented with a Practical line-by-line coding.

Source code for all Programs is available for you to download

About Instructor

I am the Instructor of this course, I have been teaching this course to university students for a long period of time, I know the pulse of students very well, I know how to present the topic so that it’s easy to grasp for students.

I know how to use White board to explain the topic and also to make it memorable. Remembering the thing and using them in right place is more important than just understanding the topic.

After Completing Course

After completing this course you will be confident enough to take up any challenging problem in coding using Data Structures.

Course Contents

1. Recursion

2. Arrays Representation

3. Array ADT

4. Linked List

5. Stack

6. Queues

7. Trees

8. Binary Search Tree

9. AVL Trees

10. Graphs

11. Hashing Technique

Enroll now

What's inside

Learning objectives

  • Learn various popular data structures and their algorithms.
  • Develop your analytical skills on data structure and use then efficiently.
  • Learn recursive algorithms on data structures
  • Learn about various sorting algorithms
  • Implementation of data structures using c and c++

Syllabus

Before we Start
Instructor's Note
Introduction
Revising Concept, used in this course
Read more
Arrays Basics
Practice : Arrays Basics
Structures
Practice : Structures
Pointers
Practice : Pointers
Reference in C++
Practice : Reference
Pointer to Structure
Practice : Pointer to Structure
Functions
Practice : Functions
Parameter Passing Methods
Practice : Parameter Passing Methods
Array as Parameter
Practice : Array as Parameter
Structure as Parameter
Practice : Structure as Parameter
Structures and Functions (Must Watch)
Converting a C program to a C++ class (Must Watch)
Practice : Monolithic Program
Practice : Modular Program
Practice : Structure and Functions
Practice : Object-Oriented Program
C++ Class and Constructor
Practice : C++ Class
Template classes
Practice : Template Class
Lear how to install IDE and Compiler
Online C and C++ compiler
Setup CodeBlocks and Settings
Setup Dev-C++ and Settings
Debugging using Dev-C++
Debugging using CodeBlocks
Setup Visual Studio
Debugging using Visual Studio
Setup Xcode

Learn What are Data Structures.

Comparing

1. Data Structure

2. Database

3. Datawarehouse

4. Big Data

Learn How program uses Main Memory. How program uses sections of Memory

Learn How function uses Stack, how memory is allocated when the function is called.

Learn how Heap is used with the help of Pointers

Difference between Physical and Logical Data Structures

Physical : Array and Linked List

Logical : Stack,Queues, Trees, Graphs, Hashtables

Learn what does it mean by Abstract Datatypes

Learn How to Analyse Time and Space of any Algorithm on Data Structures, based on working of Algorithm

Learn How to Analyse based on Code of Algorithm

Learn about Recursion, it's working and all Types of Recursions.

Learn how to trace a Recursion

General form of Recursion and its phases

1. Ascending Phase

2. Descending Phase

Learn how Recursion uses Stack

Learn how to find the Time complexity of Recursion using Recurrence Relation

Lets Code Recursion

Learn how Static and Global variables are used in Recursion

Let's Code Static and Global in Recursion

Learn What does it mean by Tail Recursion, a recursion processing at calling time

Learn what does it mean by Head Recursion, a recursion processing at returning time

Learn Tree Recursion, a Recursion calling itself more than one time

Let's Code Tree Recursion

Learn Indirect Recursion. two or more functions calling each other recursively.

Let's Code Indirect Recursion

Learn Nested Recursion. a Function call is passed as parameter to itself.

Let's Code Nested Recursion

Finding Sum of first n natural numbers using Recursion and Iteration

Let's Code Sum of N using Recursion

Finding Factorial using Recursion.

Let's Code Factorial using Recursion

Finding Power using Recursion and computing using less number of multiplications

Let's Code Power Recursion

Recursive function for Taylor Series using Static variables

Let's Code Taylor Series using Recursion

Apply Horner's Rule to reduce number of multiplications in Taylor Series.

Let's Code Taylor Series Horner's Rule - Recursion
Let's Code Taylor Series Iterative

Learn about Fibonacci Series.

1. Iterative method for Fibonacci Series.

2. Recursive Method.

3. Using Memoization

Let's Code Fibonacci

Learn how to devise a Recursive function for nCr formula using Pascals Triangle

Let's Code nCr using Recursion

Devising a Recursive function for Tower of Hanoi

Let's Code Tower of Hanoi
Recursion
Quiz 1 Solutions
Learn Arrays and Representation of Arrays By Compilers

1. What is an Array

2. Declaring and Initialising Array

3. Accessing Elements of an Array

Declarations of Array
Demo - Array Declaration

Learn how to create Array in Stack and Heap.

Demo - Static vs Dynamic Array

How to change Size of an Array

Demo - Increasing Array Size

Learn various methods of creating 2D Array

Demo - 2D Array

How Compiler manage Arrays, How compilers use Relative addresses

Learn how Compilers use Relative address for Representing 2D arrays

Learn how Compilers use Relative address for Representing nD arrays

Learn how Compilers use Relative address for Representing 3D arrays

Arrays Representation

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers data structures and algorithms in depth, which are essential for coding interviews and building efficient software systems
Requires familiarity with C and C++, which may pose a barrier to entry for beginners with no prior experience in these languages
Includes whiteboard explanations, which can improve problem-solving and analytical skills, as well as line-by-line coding implementations
Explores recursion, arrays, linked lists, stacks, queues, trees, graphs, and hashing techniques, which are foundational topics in computer science
Provides source code for all programs, allowing learners to experiment and reinforce their understanding through practical application
Teaches debugging using Dev-C++, CodeBlocks, and Visual Studio, which are older IDEs that may not be relevant to modern software development

Save this course

Save Mastering Data Structures & Algorithms using C and C++ to your list so you can find it easily later:
Save

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 Mastering Data Structures & Algorithms using C and C++ with these activities:
Review Pointers in C/C++
Solidify your understanding of pointers, a fundamental concept in C and C++, before diving into data structures. A strong grasp of pointers is crucial for efficient memory management and implementing complex data structures.
Browse courses on Pointers
Show steps
  • Review the syntax and usage of pointers in C/C++.
  • Practice pointer arithmetic and memory allocation.
  • Work through examples of using pointers with arrays and structures.
Review 'Data Structures and Algorithms in C++' by Adam Drozdek
Deepen your understanding of data structures and algorithms with a comprehensive textbook. This book provides detailed explanations and C++ implementations of various data structures.
Show steps
  • Read the chapters relevant to the data structures covered in the course.
  • Work through the examples and exercises in the book.
  • Compare the book's implementations with the course's implementations.
Follow advanced C++ tutorials on data structures
Refine your skills by following tutorials on advanced C++ data structure implementations. This will expose you to different coding styles and optimization techniques.
Show steps
  • Find tutorials on topics like AVL trees or graph algorithms.
  • Follow the tutorial step-by-step, understanding each line of code.
  • Adapt the code to your own projects and coding style.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement basic data structures from scratch
Reinforce your understanding by implementing fundamental data structures like linked lists, stacks, and queues in C/C++. This hands-on practice will solidify your grasp of the underlying concepts.
Show steps
  • Choose a data structure (e.g., linked list).
  • Implement the basic operations (e.g., insertion, deletion, traversal).
  • Test your implementation thoroughly.
Build a simple address book application
Apply your knowledge by building a practical application that utilizes various data structures. This project will help you integrate different concepts and develop problem-solving skills.
Show steps
  • Design the data structures to store contact information.
  • Implement the functionality to add, delete, search, and display contacts.
  • Use appropriate data structures for efficient storage and retrieval.
Review 'Introduction to Algorithms' by Cormen et al.
Supplement your learning with a classic algorithms textbook. This book provides a theoretical foundation for understanding the efficiency and complexity of different algorithms.
Show steps
  • Read the chapters relevant to the algorithms covered in the course.
  • Focus on understanding the pseudocode and theoretical analysis.
  • Try to implement the algorithms in C++ based on the pseudocode.
Contribute to an open-source data structures library
Enhance your skills and contribute to the community by contributing to an open-source data structures library. This will provide valuable experience in working with real-world code and collaborating with other developers.
Show steps
  • Find an open-source data structures library on platforms like GitHub.
  • Identify a bug or a feature that you can contribute.
  • Submit a pull request with your changes.

Career center

Learners who complete Mastering Data Structures & Algorithms using C and C++ will develop knowledge and skills that may be useful to these careers:
Algorithm Engineer
An algorithm engineer designs and develops algorithms to solve complex problems, and this course's detailed exploration of data structures and algorithms is extremely relevant. The course, with its depth in recursion, sorting, and other algorithmic techniques, helps build a foundation for this role. An algorithm engineer needs expertise in analyzing the performance of algorithms and implementing them, which is a focus of this course. The fact that the course emphasizes practical, line-by-line coding in C and C++ also benefits the work of an algorithm engineer. The course's deep exploration of data structure implementations will benefit those who aim for roles in algorithm engineering.
Software Developer
A software developer creates applications and systems, and this course provides a strong foundation in data structures and algorithms, which are essential for efficient coding. The course emphasizes implementation in C and C++, languages commonly used in performance-critical software development. This is useful for a software developer because it explores various data structures, including arrays, linked lists, stacks, queues, trees, graphs, and hash tables. The course's focus on problem-solving, and its hands-on coding approach, prepares a software developer to tackle complex challenges and write optimized code. Understanding how algorithms behave regarding time and space complexity, also covered by this course, are crucial in a software development career.
Compiler Engineer
A compiler engineer develops the software that translates programming languages into machine code. This course may be useful if a candidate is specifically interested in the low-level optimizations done by a compiler and the efficient data handling it requires. The compiler engineering role benefits from the strong foundation in data structures and algorithms this course offers. The course teaches memory management and the representation of arrays, which are concepts directly relevant to compiler design. The emphasis on efficient coding, with the use of C and C++, also helps the work of a compiler engineer who often needs to work with low level languages.
Systems Programmer
A systems programmer works on the core components of operating systems or other low-level software, where efficient data management is crucial, and this course is appropriate for anyone wishing to enter this field. The course uses C and C++ for implementation, languages commonly used in system programming. The detailed study of memory management, abstract data types and how programs use memory, as covered in the course, are all relevant to systems programming. The course's focus on the practical implementation of various data structures with code, and analyzing time and space complexity, are of great use to systems programmers.
Research Scientist
A research scientist, especially in computer science, may find this course useful, as it helps build a foundation in data structures and algorithms, which are fundamental in many research problems. Research scientists often encounter situations where they must develop new algorithms or optimize existing ones, and this course's focus on analyzing both code and algorithm performance is relevant. The fact that the course is practical and implementation-based, in C and C++, is also helpful. Although a research scientist may not always need to code in C++, the skills taught by this course are transferable to other languages. This course may be useful, especially if the research involves low-level coding and algorithmic optimization. Typically this role involves an advanced degree such as a PhD.
Robotics Engineer
A robotics engineer designs and develops robots, including the software that controls them, and this course's coverage of data structures and algorithms is relevant. The course's focus on implementation in C and C++, may be useful, as they are used heavily in robotics. Topics such as trees and graphs, which the course explores, have applications in robotic path planning and navigation. The course emphasizes problem solving and analytical skills, which are needed by a robotics engineer. The practical implementations with code, which are part of the course, may also be useful.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded systems, which often requires efficient handling of data. This course may be useful because it will help those who want to enter this field with a deep understanding of data structures and algorithms. The practical coding examples in C and C++, as covered by this course, are commonly used in embedded systems development. The content of this course on memory management, the way programs use different parts of memory, and time and space complexity, will benefit an embedded systems engineer. The detailed study of data structure implementations, also part of this course, are relevant skills for an embedded systems engineer.
Technical Lead
A technical lead oversees a team of developers, and requires a deep understanding of software architecture and system design, and this course's deep dive into data structures and algorithms is a good foundation for this role. The course may help a technical lead in making informed decisions about the most efficient data handling techniques to use in a project. Although this role does not require hands-on coding, as done in this course, a technical lead will benefit from the practical implementation of the data structures and analysis of their performance. The problem solving skills that the course helps in building will be useful for a technical lead.
Game Developer
A game developer uses data structures and algorithms for game logic, character movement, and rendering, and this course's focus on mastering data structures and algorithms may be useful for those entering this role. The course's in-depth coverage of topics, like trees and graphs, are directly applicable in game development for pathfinding and level design. The use of C and C++ in implementations, as taught in this course, helps the work of a game developer. The practical, line-by-line coding approach, also covered in the course, may be useful for a game developer.
Quantitative Analyst
A quantitative analyst, often working in finance, uses algorithms and data structures to develop trading strategies and pricing models and this course's deep dive into algorithms and data structure implementations may be useful for this role. The course, with its emphasis on analyzing algorithms' performance, can help a quantitative analyst. The course's focus on the practical application of data structures and algorithms in C and C++ may also be valuable in the development of complex financial algorithms. A quantitative analyst needs a very solid foundation of data structures and algorithms, which this course will help in building.
Mobile Application Developer
A mobile application developer creates applications for mobile devices, and this course's emphasis on data structures and algorithms may be useful in building efficient mobile applications. The course's coverage includes arrays, lists, stacks and queues, all of which are useful in building data handling systems in mobile apps. The course's focus on C and C++ may be less relevant as mobile development often makes use of other languages, but this course still helps in developing effective problem solving skills. The practical implementation of data structures and analysis of their efficiency, also taught in this course, may be helpful for this role.
Cloud Computing Engineer
A cloud computing engineer manages and develops cloud-based systems, and this course on data structures may be helpful as it may allow for more efficient resource management and data handling in the cloud. The course's exploration of data structures like graphs and trees may be relevant in optimizing network performance in the cloud. While most high-level cloud development does not directly involve implementation of fundamental data structures, this course will help a cloud engineer appreciate their importance in the underlying systems. This course may be useful for optimizing cloud systems.
Database Administrator
A database administrator manages and maintains databases, and this course on data structures may be useful as it helps one understand the principles behind efficient data storage and retrieval. The course explores fundamental data structures such as arrays and linked lists, which underpin how databases are organized. Although this course does not directly teach database skills, the focus on analyzing the efficiency of data structures helps understand how to make database systems more efficient. The practical coding and implementation, taught in this course, will help a database administrator improve the performance of database systems.
Machine Learning Engineer
A machine learning engineer develops and deploys machine learning models, and a basic understanding of data structures may be helpful, but this course is less relevant than other courses. The algorithms that are used in machine learning often make use of data structures. Although this course on data structures and algorithms may not be directly used in machine learning, it develops general skills about how algorithms are implemented and how to analyze their efficiency. This course may help in understanding the underlying techniques used in algorithms, which a machine learning engineer may find helpful. Given the wealth of other material, this course may not be the best use of time, unless the candidate is specifically looking to do very low-level machine learning development.
Data Scientist
A data scientist analyzes large datasets to extract meaningful insights, and this course may be useful in helping one develop the ability to work with unstructured data. The course's focus on data structures such as trees and graphs may be helpful in data modeling. However, it is not a core skill for a data scientist, as the focus is on implementing these structures rather than using them to model data. The course may give an understanding of performance characteristics of certain data structures, which may be useful in designing efficient data analysis algorithms. A data scientist uses numerous tools, and this course may be less helpful than other course material.

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 Mastering Data Structures & Algorithms using C and C++.
Provides a comprehensive overview of data structures and algorithms using C++. It covers a wide range of topics, including arrays, linked lists, stacks, queues, trees, graphs, and sorting algorithms. It valuable resource for understanding the theoretical concepts and practical implementations of data structures in C++. This book is commonly used as a textbook in universities.
Comprehensive textbook on algorithms, covering a wide range of topics from fundamental data structures to advanced algorithms. While not specific to C++, the concepts are universally applicable. It is particularly useful for understanding the theoretical underpinnings of algorithms and their performance characteristics. This book is commonly used as a textbook in universities.

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