
Applications of Data Structures in C and C++
Explore real-world applications of data structures in areas like searching, sorting, and file systems.

Track
Software Development
Level
Advanced
Language
English
Duration
30 hours
Learning Mode
Learn at ALC or at Home
Introduction
- Understand the fundamental concepts of linear sorting techniques such as Counting Sort, Radix Sort, and Bucket Sort.
- Apply hashing techniques, including chaining, linear probing, and double hashing, to optimize data retrieval.
- Compare different implementations of symbol tables using arrays, linked lists, and other structures.
- Develop algorithms for finding the single source shortest path using Dijkstra’s and Bellman-Ford algorithms.
- Analyze the greedy approach for solving optimization problems like Huffman coding and the fractional knapsack problem.
- Demonstrate the use of dynamic programming in solving problems like 0/1 knapsack and matrix chain multiplication.
- Implement divide and conquer algorithms like binary search and Strassen’s matrix multiplication.
- Explore the branch and bound approach to solving complex problems like the 4-queens problem and least cost search.
- Investigate selection algorithms and their applications in finding the k-smallest elements.
- Assess the complexity of algorithms and understand NP-complete problems and their computational challenges.
What you'll learn ?
- Explain the significance and differences of various linear sorting algorithms.
- Solve hashing problems by implementing different collision handling methods such as chaining and linear probing.
- Evaluate the efficiency of different symbol table implementations in terms of space and time complexity.
- Compute the shortest paths using Dijkstra’s and Bellman-Ford algorithms for various graph-based problems.
- Design efficient solutions to optimization problems using the greedy approach.
- Apply dynamic programming techniques to complex problems like knapsack and matrix chain multiplication.
- Implement divide and conquer algorithms to improve efficiency in search and matrix multiplication.
- Solve problems using branch and bound techniques, ensuring optimal solutions for puzzles and scheduling problems.
- Identify the k-smallest elements in a set of data using selection algorithms.
- Classify problems as NP-complete and understand the implications of solving these problems in real-world applications.
Syllabus
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!