#### Course Modules we covered:

**Data Structures**

- Introduction
- Variables
- Datatypes
- Data Structures
- Structured Representation
- Statements and Control Structures
- Abstract Data Types
- Static & Dynamic Data Types
- Arrays & Pointers
- Linked List
- What is an algorithm
- Why analysis of Algorithms
- Goal of analysis algorithms
- What is the Running Time Analysis
- How to Compare Algorithms
- What is the Rate of Growth
- Commonly Used Rate of Growth
- Types of Analysis
- Big-O Notation
- Omega Notation
- Theta Notation
- Why is it called Asymptotic Notation
- Guidelines for Asymptotic Notation
- Properties of Notation
- Commonly used Logarithms and Summations
- Mater Theorem For divide and Conquer
- Problems on divide and Conquer Master theorem
- Master theorem for subtract and Conquer Recurrences
- Variant of subtraction and conquer master theorem
- Method of Guessing and Confirm
- Amortized Analysis
- Problems on Algorithms Analysis
- Testing

**Stacks with Algorithms**

- Defining stack
- Application of stack
- Conversion and Evaluation of Expressions
- Operations of stack
- Stack implemented as an array
- Stack implemented with pointers
- Using Stacks to solve problems

**Standard Input and Output Functions**

- Library Functions
- Single Character Input – The getchar Function
- Single Character Output – The Putchar Function
- Entering input Data – The scanf Function
- More about the scanf/ Printf
- The gets and Puts Function

**Queues with Algorithms**

- Defining Queue
- Application of Queue
- Operation of Queue
- Circular Queue
- Priority Queue
- Double Ended Queue
- Queue implemented with Pointers
- Differences between Stacks and Queues
- Problems on Queues

**Linked List**

- Introduction
- What is a Linked List
- Advantages of Linked List over an Array
- Application of Linked List
- Types of Linked Lists
- Singly Linked Lists
- Operation of Singly Linked Lists
- Doubly Linked Lists
- Operations on Doubly Linked Lists
- Circular Linked Lists
- Circular Double Linked Lists
- Uses of Linked Lists
- Difference between Arrays and Linked List
- A memory-Efficient Doubly Linked List
- Problems on Linked List

**Trees**

- Introduction
- Binary Trees
- Implementation of Binary Trees
- Insertion into a Binary Tree
- Binary Tree Deletion
- Traversing a Binary Tree
- Binary Search Trees
- Binary Height Balanced Trees
- AVL Trees
- B- Trees

**Sorting Techniques with Order of Growth **

- Introduction
- Why Sorting Necessary
- Classification of sorting Algorithms
- Other classification
- Bubble Sort
- Selection Sort
- Quick Sort
- Merge Sort
- Iterative Merge Sort
- Introduction to Heap
- Heap Operations
- Heap Sort
- Comparison of Sorting Algorithm
- Non-Comparison Sorting Algorithm

**Searching Techniques**

- Introduction
- Linear Search
- Binary Search

**Hashing Techniques**

- Introduction
- What is Hashing
- HashTable ADT
- Hashing Techniques
- Division Method
- Mid Square Method
- Folding Method
- Hash Collision
- Open Address

**Graphs**

- Introduction
- Types of Graphs
- Various Representation of Graphs
- Application of Graphs
- Graph Traversals

**Course Highlights:**

- Paper Solving on all Data Structures Concepts including MNC Company Papers Amazon, Oracle ,Microsoft etc