
Advanced Data Structures using C and C++
Implement trees, graphs, hashing, and efficient algorithms in C/C++.

Track
Software Development
Level
Advanced
Language
English
Duration
60 hours
Learning Mode
Learn at ALC or at Home
Introduction
- To deepen understanding of advanced data structures like AVL trees, heaps, and disjoint subsets.
- To explore complex algorithmic paradigms such as divide and conquer, dynamic programming, and greedy approaches.
- To enhance skills in graph algorithms, including spanning trees and shortest path algorithms.
- To prepare students for real-world applications by implementing data structures and algorithms in C and C++.
- To introduce computational complexity and familiarize learners with NP-complete and NP-hard problems.
- To develop proficiency in dynamic memory management and hashing techniques.
What you'll learn ?
- Implement advanced data structures such as AVL trees, heaps, and symbol tables.
- Design and analyze efficient algorithms for graph traversal, sorting, and searching.
- Apply algorithmic paradigms to solve optimization problems like the knapsack problem and traveling salesman problem.
- Understand and work with computational complexity, including NP-complete problems.
- Use advanced memory management techniques and improve algorithm efficiency.
- Tackle real-world computational problems with effective and innovative solutions.
- Course Introduction
- The iLike Certificate in Advanced Data Structures using C & C++ is a comprehensive program that builds on foundational data structures to equip learners with advanced concepts and techniques in data management and algorithm design. This course introduces critical topics such as binary search trees, AVL trees, graph algorithms, dynamic programming, and computational complexity. With a blend of theoretical Foundation and practical applications, learners will enhance their problem-solving skills and develop optimized solutions for complex computational challenges.
Syllabus
Binary Search Tree
- Introduction
- Operation on BST - search and insert
- Deletion from a BST
- Programming: Binary Search Tree
- Generating BST from preorder
- Applications of Binary Tree
- Generating BST from post order
- Binary Search Tree: Problems and Solution
AVL Trees
- Introduction
- Operation on AVL tree
- Programming various operations on AVL
- AVL Tree: Problems and Solution
AVL Tree
- Balancing AVL tree
- Programming Balancing of AVL
Search Trees
- 2-3 Trees Introduction
- 2-3-4 trees Introduction
- Searching in a 2-3 Tree
- Insertion in a 2-3 Tree
- Deletion from a 2-3 Tree
Search Tree
- Introduction to red black tree
- Operations on red black tree
- Operation on red black tree to a 2-3-4 tree
Heap
- Priority Queue
- Introduction to Heap
- Insertion in a heap
- Heap: Problems, Solution and Implementation
- Heap as a priority queue and Implementation
- Heap as a priority queue and Implementation
- Replacement of a node in heap
Disjoint Subsets
- Introduction to Disjoint subsets
- Fast find implementation
- Fast Union Implementation
Graphs
- Definition and terminologies
- Depth First Search (DFS)
- Breadth First Search (BFS)
- Spanning Tree
- Disjoint subsets
Minimal Spanning Tree
- Minimum Spanning Tree
- Prim’s method
- Kruskal’s method
- Programming: Minimal spanning tree
Searching
- Introduction
- Linear Search
- Binary Search
- Interpolation Search
Sorting
- Introduction to sorting
- Bubble Sort
- Selection Sort
- Insertion Sort
- Shell Sort
- Comparison of Sorting Methods
- Merge Sort
- Quick Sort
Linear Sorting
- Counting Sort
- Radix Sort
- Bucket Sort
Symbol Table
- Introduction to Symbol table
- Array Implementation of Symbol Table
- Linked List Implementation of Symbol Table
- Other implementation
- Comparison of implementation methods
Hashing
- Introduction to Hashing
- Chaining
- Linear Probing
- Double Hashing
- Hash Functions
Single Source Shortest Path
- Introduction to Single Shortest Path
- Dijkstra’s Algorithm
- Bellman-Ford Algorithm
Greedy Approach
- Introduction to Greedy Approach
- Huffman Coding Algorithm
More About Greedy Approach
- Huffman Coding Algorithm
- Fractional Knapsack problem
- Dynamic Programming
- Algorithm: 0/1 Knapsack Problem
Dynamic Programming Approach
- Matrix Multiplication
- Chain Matrix Multiplication
Divide and Conquer Approach
- Divide and Conquer Approach
- Binary Search
- Strassen’s Matrix Chain Multiplication
Branch and Bound
- Introduction to Branch and Bound Approach
- 4-Queens Problem
- Least Cost search
- 15-puzzle problem
- FIFO - Branch and Bound
Selection Algorithms
- Introduction
- Partition Based Selection
- Linear Search
- Finding K-smallest elements
- Selection Algorithm: Problems and Solutions
More Algorithmic Problems
- Introduction to Travelling Salesman Problem
- Introduction to All Pairs Shortest Path Problem
- Job Scheduling Problem
- Coin Change Problem
Computational Complexity
- Introduction to NP completeness
- Polynomial Time Reduction algorithms
- NP hard and NP complete Problems
- SAT problem
- NP problems: Examples
Dynamic Memory Management
- Compaction of Blocks and storage
- First-Fit
- Best-Fit
- Improvement in the first fit algorithm
- Freeing Storage Blocks
- Dynamic Memory Allocation: Problems and Solutions
Conclusion
- Revisiting Programming Concepts
- Revisiting data structures
- Revisiting algorithmic concepts
- miscellaneous problems and solutions
Work-Centric Approach
The academic approach of the course focuses on ‘work-centric’ education. With this hands-on approach, derive knowledge from and while working to make it more wholesome, delightful and useful. The ultimate objective is to empower learners to also engage in socially useful and productive work. It aims at bringing learners closer to their rewarding careers as well as to the development of the community.
- Step 1: Learners are given an overview of the course and its connection to life and work
- Step 2: Learners are exposed to the specific tool(s) used in the course through the various real-life applications of the tool(s).
- Step 3: Learners are acquainted with the careers and the hierarchy of roles they can perform at workplaces after attaining increasing levels of mastery over the tool(s).
- Step 4: Learners are acquainted with the architecture of the tool or tool map so as to appreciate various parts of the tool, their functions, utility and inter-relations.
- Step 5: Learners are exposed to simple application development methodology by using the tool at the beginner’s level.
- Step 6: Learners perform the differential skills related to the use of the tool to improve the given ready-made industry-standard outputs.
- Step 7: Learners are engaged in appreciation of real-life case studies developed by the experts.
- Step 8: Learners are encouraged to proceed from appreciation to imitation of the experts.
- Step 9: After the imitation experience, they are required to improve the expert’s outputs so that they proceed from mere imitation to emulation.
- Step 10: Emulation is taken a level further from working with differential skills towards the visualization and creation of a complete output according to the requirements provided. (Long Assignments)
- Step 11: Understanding the requirements, communicating one’s own thoughts and presenting are important skills required in facing an interview for securing a work order/job. For instilling these skills, learners are presented with various subject-specific technical as well as HR-oriented questions and encouraged to answer them.
- Step 12: Finally, they develop the integral skills involving optimal methods and best practices to produce useful outputs right from scratch, publish them in their ePortfolio and thereby proceed from emulation to self-expression, from self-expression to self-confidence and from self-confidence to self-reliance and self-esteem!