
Explore asymptotic notations—big O, big Omega, and big Theta—and learn to determine upper, lower, and tight bounds for algorithm running time using examples.
Analyze space complexity and time complexity, separating fixed and variable parts, and evaluate recursion stack and depth of recursion through swap, arrays, and matrix operations.
Create and link nodes in a singly linked list by dynamically allocating memory, initializing data, and setting next pointers. Update the head and links to form a multi-node list.
Learn insertion at the beginning in a singly linked list by setting the new node's next to the head, then updating the head. See related insertions at other positions.
Explore the stack, a linear data structure with last-in, first-out behavior, its push, pop, and peek operations, and its use in string reversal, undo, and infix-postfix conversions.
Implement stacks with arrays and linked lists, including static and dynamic memory. Master push, pop, peek, display, overflow, underflow, and time complexities.
Explore tree terminologies, including root, edges, parent and child, degree, leaves, siblings, height, depth, subtree and path, plus array or linked list representations in binary and complete binary trees.
Explore how collisions arise when multiple keys share a hash value and learn separate chaining, an open hashing approach using a linked list in the hash table to resolve them.
Demystify open addressing collision resolution with linear probing. Apply hash(key) mod m and probe i steps (0-9) to place keys like 89, 18, 49, and 58.
Explain how double hashing resolves collisions in addressing using two hash functions u and v, via the probe sequence (u + i v) mod m, with r as a prime.
Explore graphs as non-linear data structures with vertices and edges, differentiate undirected and directed graphs, and learn representations via adjacency matrix and adjacency list, including in-degree and out-degree.
Learn Prim's algorithm for constructing a minimum spanning tree by starting at a vertex, expanding through smallest edges, avoiding cycles, and computing the minimum spanning tree cost.
This course offers a deep dive into the world of data structures, a foundational aspect of computer science and programming. It is designed for beginners looking to strengthen their understanding of how data can be organized, stored, and accessed efficiently. The course covers the basics about data, the need for a data structures, its types and a variety of fundamental data structures such as arrays, linked lists, stacks, queues, trees, hash tables, and graphs.
Participants will explore the properties and applications of each data structure, learning how to implement them in real-world scenarios. Emphasis is placed on understanding when and why to use particular structures to optimize algorithm performance. The course includes hands-on coding exercises and problem-solving sessions to reinforce theoretical concepts with practical experience. The course also explains how a particular data structure is used in solving a problem.
By the end of the course, learners will be equipped with the knowledge to select the right data structure for any given problem, improve the efficiency of their code, and develop more sophisticated algorithms. This course is ideal for aspiring programmers, computer science students, or anyone who wants to build a solid foundation in data structures to advance their programming skills.