Innovation... driven by intelligence and logic

Project.101: Advanced Data Structures and Algorithms using C

Introduction:

Data Structure is a specialized format for arrangement, collection, organizing, storing and accessing data in such a way that we can perform operations on these data in a desired way. It is about rendering data elements in terms of some relationship, for better organization and storage. Advanced data Structures concepts are used in technologies related to storage, networking, big-data, cloud, operating systems design IoT etc.


Salient Features of Training Program:

Training Objective:

The trainee should be able to understand, analyse, designing and implement data in various formats and ways for effective storage, and access to meet requirements varing in nature depending on applications requirements. The trainee should be able to understand the related Algorithms and strategies. The trainee should also be able to optimize algoriths and its implementation with respect to time and space complexity.

Training Topics:

  • Programming Strategies
    • Divide and Conquer
    • Greedy Strategy
    • Dynamis Programming
  • Performance Analysis
    • Space Complexity, Time Complexity, Asymtotic Notation(O,π, θ), Practical Complexities, Performance Measurement
  • Advanced Data Structures
    • Trees: Binary Trees, Efficient Binary Trees, Operations on Trees, AVL Trees, RB Trees, Splay Trees
    • Search Trees: B Trees, B+ Trees, 2-3 Trees, Trie
    • Heaps: Binary, Binomialan Fibonacci Heaps
    • Graphs: Directed and Bi-connected Graphs
    • Graph Representations: Arrays, Adjescency Matrix, Adjescency Lists, Adjescency Multi-Lists
    • Graph Traversal Algorithms: BFS and DFS Algorithms
    • Shortest Path Algorithms: Minimum Spanning Trees, Prims, Krushkals, Dijkastras and  Warshalls Algorithm
    • Sorting Algorithms: MergeSort, QuiskSort, RadixSort, HeapSortShellSort and TreeSort Algorithms
    •  Hashing and Collision: hash Tables, Hash Functions, Collisions
    • Files and Organisation: File Organization, Indexing

Pre-requisite:

The trainee should be good in C Programming. have good understanding of basic data-structures like Structures, Linklists, Stacks, Queues, Union and Bit-Fields.

Agenda:

The Duration of Training would be:

The Duration of training would be 10 working days.
There would be
40 Classroom Sessions of 1 hour each
10 Lab of 4 hours each
75 hours of training.

Training Methodology:

Behaviorial model of training would be practices. Making trainees hands-on would be the priority. Training sessions will be followed bu hands-on lab and practice assignments would follow.

After the training is over, the Trainee should be able to:-

Understand various programming strategies
Underatand and implement various algorithms for...
searching, sorting, graphs and trees
implement algorithms using c programs
Understand essential algorithmic techniques and apply them to solve algorithmic problems
Formulate real life computational problems as rigorous algorithmic problems
Prove correctness of an algorithm and analyze its running time

Deliverables:

EmbLogic would issue/provide the following:-

Crertificate/letter of completion of this training
Access to training material for 3 months

About Advanced Data Structures and Algorithms:

Why should you learn about data structures and programming techniques?
For small programs, you don’t need much in the way of data structures. But as soon as you are representing reasonably complicated data, you need some place to store it. Thinking about how you want to store and organize this data can be a good framework for organizing the rest of your  program.
Many programming environments will give you a rich collection of built-in data structures as part of their standard library. C does not: unless you use thirdparty libraries, any data structure you want in C you will have to build yourself.  For most data structures this will require an  understanding of pointers and storage allocation, mechanisms often hidden in other languages. Understanding these concepts will give you a deeper understanding of how computers actually work, and will both let you function in minimalist environments where you don’t have a lot of support and let you understand what more convenient environments are doing under their abstraction barriers.
The same applies to the various programming techniques we will discuss in this training module. While some of the issues that come up are specific to C and similar lowlevel languages (particular issues involving disciplined management of storage), some techniques will apply no matter what kinds of programs you are writing and all will help in understanding what your computer systems are doing even if some of the details are hidden.

The specialisation in Algorithms enables you to:
Deal with computational problems where efficiency and scalability is crucial, for example optimization problems and big data analysis
Formulate real-world problems as algorithmic ones, analyze the time complexity of algorithms, and predict their performance in a large scale setting
Recognize computationally hard problems and apply techniques for dealing with them in practice
Devise and implement new, efficient data structures and algorithms for problems based on known algorithms for related problems and on general techniques for designing algorithms
Suggest suitable computing architectures for large-scale computations

Prospects:

Career prospects in Algorithm Design
Algorithmic skills are typically desired by large mutinational IT brands, and by small innovative start-ups developing new technologies. Many successful IT companies emphasize algorithmic skills when hiring. For example, Google released a list of key skills for engineers, and many of these are trained in this specialization, in particular:
Develop logical reasoning and knowledge of discrete math
Develop strong understanding of Algorithms and Data Structures
Learn parallel programming.
Practice your algorithmic knowledge and coding skills

Training Resources ... click here ...


 

Go to Top ^