We may earn an affiliate commission when you visit our partners.
Shibaji Paul

This course will help the students ability to grasp the knowledge of data structures and algorithm using the C programming language. Knowledge of Data Structures and Algorithms are essential in developing better programming skills.

This course is based on the standard curriculum of Universities across the globe for graduate level engineering and computer application course.

Apart from step by step development of concepts students will also learn how to write algorithms and then how to write programs based on the algorithms in this course.

Read more

This course will help the students ability to grasp the knowledge of data structures and algorithm using the C programming language. Knowledge of Data Structures and Algorithms are essential in developing better programming skills.

This course is based on the standard curriculum of Universities across the globe for graduate level engineering and computer application course.

Apart from step by step development of concepts students will also learn how to write algorithms and then how to write programs based on the algorithms in this course.

You will learn the following in this course:  (All implemented using C programming)

  1. Fundamental of Data Structure concept

  2. Why we need Data Structures

  3. Stack - Idea, definition, algorithm, implementations.

  4. Using Stack - Parenthesis checking, Polish Notation, Infix to postfix conversion and evaluation.

  5. FIFO Queue - Idea, definition, algorithm, implementation.

  6. Circular Queue using array - Idea, definition, algorithm, implementation.

  7. Double ended queue using array - Idea, definition, algorithm, implementation.

  8. Linked List - Idea, definition, why we need linked list. Comparison with array.

  9. Singly Linked List - Development of algorithm for various operations and then Implementation of each of them

  10. Creating Stack and Queue using Singly Linked list - Implementation.

  11. Doubly Linked List - Idea, definition, algorithm of various operations and implementations.

  12. Circular Linked List - Idea, definition, algorithm and implementations.

14. Calculating efficiency of algorithms, Worst Case (Big Oh), Average Case (Big Theta) and Best case (Big omega) complexities. How to calculate them for different algorithms.

15. Binary Searching

16. Recursion in detail. Example program using recursion and the critical comparison between Recursive approach and Iterative approach of problem solving.

 17. Binary Tree, definition, traversal (In, Pre and Post Order), Binary Search Tree implementation.

18. Heap data structure,  definition, heap insertion, deletion, heap adjust, Heapify and heap sort.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Recursion, stack, polish notations, infix postfix, fifo, circular & double ended queue, linked list - linear, double & circular, stack & queue using linked list
  • What is stack, algorithms for push and pop operation. implementation of stack data structure using c.
  • Using stack - checking parenthesis in an expression
  • Using stack - understanding polish notations, algorithm and implementation of infix to postfix conversion and evaluation of postfix expression
  • What is a fifo queue, understanding queue operations - insert and delete, implementing fifo queue
  • Limitations of fifo queue, concept of circular queue - implementation of circular queue.
  • Concept of double ended queue, logic development and implementation of double ended queue.
  • Concept of linked list - definition, why we need linked list.
  • Singly linked list - developing algorithms for various methods and then implementing them using c programming
  • Doubly linked list - developing algorithm of various methods and then implementing them using c programming
  • Circular linked list - developing algorithm of various methods and then implementing them using c programming
  • How to estimate time complexity of any algorithm. big oh, big omega and big theta notations.
  • Recursion, concept of tail recursion, recursion vs iteration.
  • Binary tree, definition, traversal (in-order, pre-order and post-order), binary search tree, implementation.
  • Heap - concept, definition, almost complete binary tree, insertion into heap, heap adjust, deletion, heapify and heap sort.
  • Show more
  • Show less

Syllabus

An introduction to the course.
Introduction to the course.
To understand Stack data structure, where we can use Stack, how we can implement and some application development where Stack is used.
Read more

Introduction to stack data structure. Definition and description, how it works. Understanding Push and Pop operations along with overflow and underflow state of a Stack.

Evaluation of your basic understanding of Stack Data Structuure.

Real life applications where Stack has been used, just to help student understand how stack can be used for practical purposes.

Understanding and development of basic algorithms for Push and Pop operations of Stack.

This quiz will tests your understanding about the Stack operations.

Implementing Stack operations using C programming language.

Explanations and clarifications how the pointers works for implementing Stack operations, why we should pass the address of Stack object to the functions.

Building a console based menu system for the Stack operations so that one can call and test the different Stack operations and see how they works.

The stack we developed was fixed in size, now let us improve the implementation using dynamic memory allocation technique so that the stack can be allocated with custom size.

Improve the stack implementation by adding more dynamic mechanism to it, when the stack is overflow grow the stack to double in size dynamically retaining the existing content.

Using the stack data structure in solving a problem. If you try to develop a program for converting an unsigned integer to it's binary equivalent then you will need a Stack. See how stack helps to develop a program to solve a problem.

Another programming example where we can use Stack data structure.

Let us understand the problem and how we can approach for a solution using stack. How stack can be useful for developing a solution.

The algorithm for solving the problem of parenthesis checking.

Detail explanation of algorithm for checking parenthesis, whether the parenthesis are well formed in a mathematical expression or not.

Starting the implementation of the parenthesis checking program using the C language.

Completing the implementation and executing the program.

How expressions could be represented. Introduction to Polish and Reverse Polish Notation.

Understand how the default precedence works, how we can use the precedence to convert from infix to prefix or postfix. Learn how to manually convert infix to prefix/ postfix.

Check your skill on converting infix to pre/post fix and how you have understood the functionality of precedence of operator.

Understand how we can evaluate Polish or Reverse Polish Notations using Stack.

Developing algorithm for evaluating Postfix expression using Stack.

You will follow how the evaluation of Postfix expression could be implemented using C Programming language. It will be best if you can try to write the code just after watching the algorithm and cross check with your implementation with the one that is done in this video lecture.

Understand how we should proceed to convert an Infix expression into it's equivalent Postfix expression using a Stack.

Another example, a more complex one, that will help you to understand the procedure for converting infix to postfix, clearly explains how precedence function should work in such a routine.

To help you understand better, just added this lecture which explains in details again about the procedure that converts the infix expression to postfix. Since, the procedure is little bit tricky, this lecture will help you to ease the complexity involved.

This lecture develops the algorithm for converting Infix expression to it's equivalent Postfix step-by-step. It is strongly recommended that you complete the previous lectures of this section and then start with this. The previous 3 lectures specially discussed the procedure that I am going to use here for developing the algorithm.

Let us dry run the algorithm, that we developed in the last lecture, with some input infix expression to convert it to Postfix. Take your Pen and Paper and do the dry run with me.

In this lecture I will show you how to develop the PRCD function that takes care of comparing the precedence of 2 operators. We need this for implementing the infix to postfix conversion implementation.

Finally, let us write the C Function to convert infix to postfix. The best way for you will be to write the code along with me side-by-side.

Finally combine the functions written to convert from infix to postfix and postfix evaluation into a single program. This is your task to put them together, I am just giving the proposal ;).

Understanding Queue data structure - definition, operations on a Queue, various types of Queue data structure.

Understand how we can build a FIFO queue using one dimensional array. The description and the animation will help you the understand the core concept of how front and rear marker used for building a FIFO queue.

Developing algorithm for insert and delete operations for a FIFO Queue.

Take your pen and paper and proceed with me for dry running the algorithm for FIFO queue operation - this is the best way to understand how any algorithm works.

Implementation of FIFO queue operations using C Language. Open your favourite IDE and start writing with me.

A simple console based menu is added to call different Queue operations.

Understanding what went wrong with our implementation of FIFO Queue.

Explanation about the flaw in the FIFO algorithm.

Introduction to Circular Queue data structure for implementing FIFO queue. Idea of how we can move the rear and front circularly over the array.

Conception on how to perform enqueue and dequeue operations for a circular queue. The conditions for overflow and underflow.

The algorithm for enqueue and dequeue operations for a Circular Queue.

This lecture shows how we can implement Circular queue concept using C Programming language.

Introduction to the concept of double ended queue.

Development and understanding of the algorithm for Double Ended Queue data structure.

Let us do the dry run of the algorithm of various operations on Double Ended Queue.

Implementing operations for a double ended queue using C programming language.

Introduction to LinkedList Data structure, drawbacks of Arrays and facilities of having LinkedList. When we should use LinkedList.

Understanding the definition of Linked List, conception of Node in a Linked List, how the link works. The external pointers for accessing linked list.

Idea of different categories of linked list, when and how they are beneficial.

Declare and understand the 'struct' types we need for representing a Node and a Linked List. First step for building various operations on Linked List.

Understanding various functions and their prototypes which we will implement for abstracting various operations on Linked List. Understanding how we should pass the linked list object to various functions.

This lecture describes and simultaneously develops a function to add a new node at the end of singly linked list.

Let us now understand and develop a function to dynamically add a new node as the first node of the singly linked list.

Let us understand how we can traverse the entire linked list node by node starting from the first node until we access the last node. Then we build a print function that traverses the entire linked list to print the content of each node.

To understand clearly how nodes of the linked list resides in memory developing a function that will print the content of next pointer field of each node, address of the node and the content of the node. When we execute this, you can see how addresses are used to build the linked list.

Just compiling and running the programme written so far.

A practice exercise for Singly Linked List.

How we can search for a target data in linked list.

This lectures shows how we can build a function that reads data from a text file and builds the linked list using those data.

This lecture shows how we can generate random numbers and use them to build the linked list using insert at tail operation.

This lecture describes and implements how we can implement a function that deletes the first node of the linked list.

In this lecture you will get the way to develop delete last operation to delete the last node of the linked list.

Let us develop a function that deletes a node containing target data (if that exists).

Understanding and implementing the idea of reversing a singly linked list. This lecture shows you how you can reverse the linked list physically, on calling the reverse function twice in a row, the linked list will remain same.

Let us try to develop function that uses recursive technique to traverse the linked list.

Let us now build a Stack using Linked List. Implementation of Push and Pop operation when we use linked list as data structure for building a Stack.

Lets us build a queue using Linked List data structure.

Introduction to the Doubly Linked List data structure. Each node contains two pointer this time - traversal in both the ways are possible with doubly linked list.

You will get to know what is the new stuff that we need in the Node to make the linked list doubly. You will learn about the various operations on Doubly Linked List.

Understand and Implement of AddFirst operation that will add a new node as the first node of doubly linked list.

This lecture describes and shows how you can add a new node as the last node of the linked list.

This lecture describes various delete operations for a doubly linked list - delete first to delete the first node, delete last to delete the last node, delete target - to delete a node that contains the target data.

How we can develop a double ended queue using doubly linked list.

The definition and structure of Circular Linked List. Understanding the basics of Circular Linked List.

How we can develop a function that inserts a new node into the Circular Linked List.

How we can delete a node from the Circular Linked List.

Lets understand how we can traverse a circular linked list. Idea of how we can build a Circular Queue using a Circular Linked List data structure.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses the C programming language, which is still prevalent in systems programming and embedded systems, offering practical skills applicable to low-level development
Covers time complexity analysis using Big Oh, Big Omega, and Big Theta notations, which are essential for evaluating algorithm performance and efficiency
Includes stack applications like parenthesis checking and infix to postfix conversion, providing hands-on experience with practical uses of data structures
Requires learners to implement data structures and algorithms using C, so familiarity with C programming is expected for successful completion
Explores recursion in detail, comparing recursive and iterative approaches, which is valuable for understanding different problem-solving paradigms
Focuses on fundamental data structures like stacks, queues, linked lists, and trees, which are foundational concepts in computer science

Save this course

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

Reviews summary

Fundamental dsa concepts with c implementation

according to students, this course provides a solid foundation in fundamental data structures and algorithms, with a strong focus on implementation using C. Learners particularly appreciate the clear explanations and the step-by-step approach to coding various data structures like stacks, queues, and linked lists. The inclusion of practical applications and complexity analysis is also noted positively. While the C language allows for a deep understanding of memory management, some reviewers suggest it can be a challenge for those new to pointers or the language itself. Overall, it is seen as a valuable resource for mastering core DSA concepts through hands-on coding.
Covers standard DSA topics thoroughly.
"The course covers all the classic data structures and algorithms mentioned in the syllabus."
"Provides a good overview of stacks, queues, trees, and sorting basics."
"Felt like a proper university introduction to fundamental DSA."
Strong focus on hands-on coding in C.
"Implementing the data structures in C really solidified my understanding."
"The coding examples provided were very helpful and practical."
"Loved the detailed implementation steps for linked lists and queues."
Instructor explains complex topics well.
"The concepts were explained step-by-step in an easy to understand manner."
"I found the lectures very clear and easy to follow."
"The instructor did a great job of breaking down complex ideas."
C language can be difficult for some.
"The C programming aspect was a bit tough without prior experience with pointers."
"Understanding the memory management in C was challenging at times."
"Beginners in C might need supplementary resources."

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 Fundamental Data Structures & Algorithms using C language. with these activities:
Review C Programming Fundamentals
Strengthen your understanding of C programming concepts. This will provide a solid foundation for implementing data structures and algorithms in C.
Show steps
  • Review basic C syntax and data types.
  • Practice writing simple C programs.
  • Study pointers and memory management in C.
Read 'Data Structures and Algorithm Analysis in C'
Supplement your learning with a classic textbook on data structures and algorithms. This book provides in-depth explanations and examples using C.
Show steps
  • Obtain a copy of the book.
  • Read relevant chapters alongside the course material.
  • Work through the examples and exercises.
Implement Data Structures from Scratch
Reinforce your understanding by implementing data structures from scratch. This hands-on practice will solidify your knowledge of the underlying concepts.
Show steps
  • Choose a data structure (e.g., linked list, stack, queue).
  • Implement the data structure in C without using built-in libraries.
  • Test your implementation thoroughly.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Data Structure Visualization
Deepen your understanding by creating a visual representation of a data structure. This will help you visualize the underlying concepts and how data is organized.
Show steps
  • Select a data structure to visualize.
  • Create a diagram or animation illustrating the data structure's organization and operations.
  • Explain the visualization in a short write-up.
Read 'Algorithms in C'
Expand your knowledge of algorithms with this comprehensive guide. This book provides detailed explanations and C implementations of various algorithms.
View Algorithms in C++ on Amazon
Show steps
  • Obtain a copy of the book.
  • Read relevant chapters to supplement course material.
  • Study the C implementations of the algorithms.
Contribute to a Data Structures Library
Apply your knowledge by contributing to an open-source data structures library. This will provide valuable experience working on a real-world project.
Show steps
  • Find an open-source data structures library written in C.
  • Identify a bug or missing feature.
  • Implement a fix or new feature and submit a pull request.
Tutor other students
Solidify your understanding by explaining data structures and algorithms to others. Teaching is a great way to reinforce your own knowledge.
Show steps
  • Offer to tutor classmates or students in introductory programming courses.
  • Prepare explanations and examples for common data structures and algorithms.
  • Answer questions and provide guidance to students.

Career center

Learners who complete Fundamental Data Structures & Algorithms using C language. will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer designs, develops, and maintains software systems. This role often requires a deep understanding of data structures and algorithms to create efficient and scalable solutions. This course will help a software engineer build a foundation by providing hands-on experience with fundamental data structures like stacks, queues, linked lists, and trees in the C programming language. The course includes implementing algorithms for operations on these structures along with evaluating the efficiency of such algorithms. Learning concepts of recursion will also be useful to a software engineer.
Algorithm Developer
An algorithm developer designs and implements algorithms to solve specific problems, often for complex software or systems. This role requires a very strong grasp of data structures and algorithm design principles. This course with its in-depth exploration of data structures and algorithm implementation using C, assists an aspiring algorithm developer. By covering topics such as stacks, various forms of queues, linked lists, binary search trees, and heap data structures, the course provides a range of practical exposure. The content on algorithm efficiency, including Big Oh notation, will be particularly useful to an algorithm developer.
Systems Programmer
A systems programmer focuses on the core software components of a computer system, such as operating systems and device drivers. Understanding the fundamental data structures and algorithms is essential in this role to create efficient code. This course will help a systems programmer build a foundation with the C language, which is often used in systems programming. It will develop familiarity with various data structures and the implementation of algorithms, including recursion, which will prove valuable to a systems programmer. The course's emphasis on efficiency analysis will also assist in optimizing performance.
Embedded Systems Engineer
An embedded systems engineer develops software for devices that are not general-purpose computers, such as appliances, vehicles, and medical devices. These often require efficient use of memory and processing power. This course helps an embedded systems engineer through mastery of data structures and algorithm implementation using C, an essential language for embedded systems. The course covers a complete range of topics, including stacks, queues, linked lists, and tree-based data structures. The course's analysis of algorithm efficiency will prove beneficial in crafting high performance code for embedded systems.
Game Developer
A game developer is responsible for the design and implementation of video game software mechanics. They rely on efficient data structures and algorithms for graphics rendering, AI, and game logic. This course will assist a game developer by providing a solid foundation in fundamental data structures and algorithms, implemented using C. The course will provide experience implementing stacks, queues, and linked lists. The section on tree structures plus an understanding of recursion will be particularly helpful for creating game engines and game AI.
Data Scientist
A data scientist analyzes data to extract meaningful insights, often requiring custom algorithms and efficient data handling especially with large datasets. This course may be useful to a data scientist by introducing fundamental data structures and algorithm implementation using C. Although C is not used much in data science, the course can help build a foundation in the underlying principles behind data handling and manipulation, which are useful in data science. The course covers a wide array of data structures, like linked lists, trees and heaps. The knowledge of algorithm efficiency may be useful to a data scientist.
Robotics Engineer
A robotics engineer designs, builds, and programs robots with a focus on movement, interaction, and control. A robotics engineer manipulates data structures and implements algorithms for tasks such as path planning and sensor processing. This course may be useful given that it provides the foundational knowledge of data structures and algorithms implemented using C, a popular language in robotics. With the coverage and implementation of topics such as stacks, queues, linked lists, searching, sorting, and trees, the course will give the robotics engineer a hands on experience for data handling in robotics and control.
Financial Software Developer
A financial software developer creates software applications for financial institutions. This requires a focus on data management and complex calculations. This course may be useful in the role of a financial software developer, by providing an introduction to data structures and algorithms using C. It provides hands-on experience with stacks, queues, linked lists, and tree data structures and the algorithms that operate on them. While financial software development often uses higher-level languages, this course builds a foundation of data handling which can be useful in any programming language.
Database Administrator
A database administrator is responsible for the performance, integrity, and security of databases. This position deals with how data is organized and accessed in a database. This course may be useful for a database administrator given that it provides a general introduction to implementing data structures using the C language. While the role focuses on the implementation and maintenance of commercial systems, understanding the underlying principles of data structures may be useful. The knowledge of how linked lists, trees and heaps work will prove to be beneficial to a database administrator.
Quantitative Analyst
A quantitative analyst or quant develops and implements mathematical and statistical models for financial markets. While this role often deals with abstract mathematical concepts, it may be useful to have a foundation of data structures and algorithms. This course may help a quantitative analyst by providing experience with concepts fundamental to efficient data manipulation, even though it's not in the quant domain. The course will assist with implementation of stacks, queues, linked lists, and binary search trees and this focus on algorithm design and analysis will be useful.
Network Engineer
A network engineer designs, implements, and manages computer networks. While networking involves routing protocols and network topology, a foundation in fundamental data structures may be beneficial for any technical role. This course may be useful as it has a wide coverage of various data structures and algorithms using C. Although network engineering mainly focuses on networking protocols this course will help one in understanding the fundamentals of how data is handled to build efficient systems. This may be helpful to a network engineer when building their own network management tools.
Web Developer
A web developer designs and builds websites and web applications. While the focus of web development is on front-end and back-end technologies, understanding data structures and algorithms can be beneficial for back-end performance optimization. This course may be useful by giving the web developer a foundation of various data structures and their implementation using the C language. Although, web development uses higher-level languages, the understanding of linked lists, trees and heaps, may prove to be beneficial for back end applications that a web developer might have to deal with.
IT Support Specialist
An IT support specialist provides technical support to users of computer systems and applications. This role generally does not require knowledge of data structures and algorithms. However, learning how to use C may be a good starting point for anyone aspiring to build a career in computers. This course may be helpful as it introduces fundamental programming principles of data and code management that the IT support specialist may face. This course introduces data structures like linked lists and trees may be relevant if the support specialist moves to other roles.
Technical Writer
A technical writer creates documentation for technical products and services. While the role typically doesn't require coding skills, a grasp of technical concepts can improve the quality of documentation. This course may be useful as it provides a basic understanding of data structures and algorithm principles which may be helpful for accurately translating complex ideas into understandable prose. The specific topics covered in the course, like stacks, queues, linked lists, and tree data structures, may help the writer to understand software development.
Quality Assurance Analyst
A quality assurance analyst tests software to identify bugs and ensure it meets required standards. While this is not a software development role, it may be useful to have some foundational knowledge of how software is built. This course may be useful as it provides a glimpse of principles of data structures and algorithms using C. Although this role does not directly use these concepts, it helps in better understanding how software is built. The course covers aspects of data management that may be useful in understanding how a programmer works.

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 Fundamental Data Structures & Algorithms using C language..
Provides a comprehensive overview of data structures and algorithms using the C programming language. It covers a wide range of topics, including stacks, queues, linked lists, trees, and graphs. This book is commonly used as a textbook in undergraduate and graduate courses. It offers detailed explanations and numerous examples to help solidify understanding.
Offers a comprehensive guide to algorithms, implemented in C. It covers fundamental algorithms for sorting, searching, graph processing, and string processing. This book valuable resource for understanding the practical implementation of algorithms. It provides clear explanations and detailed code examples.

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