Data Structures and Algorithms Self Paced Training Report
Data Structures and Algorithms Self Paced Training Report
and Algorithms -
Self Paced Training
Report
This report documents my self-paced training on Data Structures
and Algorithms, undertaken from June 27th, 2024, to August 10th,
2024. The course was provided by GeeksforGeeks, a renowned
platform for learning computer science concepts. This report
details the technologies learned, projects undertaken, and the
overall learning outcomes of this enriching experience.
by Soura Reox
Introduction to Data Structures and
Algorithms
1 Data Structures
A data structure is a method of organizing and managing data to perform operations
efficiently. It involves arranging data elements based on specific relationships to improve
organization and storage.
2 Algorithms
An algorithm is a set of step-by-step instructions or logic, arranged in a specific order, to
achieve a particular task. It is the fundamental solution to a problem, presented either as a
high-level description in pseudocode or through a flowchart, but it is not the full code or
program.
3 Course Structure
This course provided a comprehensive learning experience, guiding me through Data
Structures and Algorithms from the basics to advanced concepts. The curriculum is
structured into 8 weeks, allowing participants to work through practice problems and
assessments at their own pace.
4 Benefits
The course offers a variety of programming challenges that are invaluable in preparing for
interviews with leading companies like Microsoft, Amazon, Adobe, and others.
Technology Learnt: Analysis of Algorithms
1 Order of Growth
I learned about the mathematical representation of growth analysis using limits and functions, including a straightforward approach to determining the order of growth.
2 Asymptotic Notations
This covered the best, average, and worst-case scenarios, explained through example programs.
3 Big O Notation
The concept was explained both graphically and mathematically, with calculations and applications demonstrated using Linear Search.
4 Omega Notation
I explored this notation through graphical and mathematical explanations, along with calculations.
5 Theta Notation
The Theta notation was explained with graphical and mathematical insights, including detailed calculations.
6 Recursion Analysis
This included various calculations using the Recursion Tree method.
7 Space Complexity
I explored basic programs, auxiliary space, and analyzed the space complexity of recursive functions and the Fibonacci sequence.
Technology Learnt: Arrays and Searching
Arrays Searching
An overview of arrays and their advantages. I learned both iterative and recursive approaches
Covered fixed-sized and dynamic-sized arrays. to binary search, along with associated problems.
Studied operations like searching, insertion, Explored problems that utilize the two-pointer
deletion, comparison with other data structures, approach.
and reversing arrays with complexity analysis.
Technology Learnt: Sorting
Algorithms
STL Sort in C++
Implementing the sort() function in arrays and vectors in C++
with a focus on time complexities.
Sorting Algorithms
I implemented and analyzed sorting algorithms like Insertion
Sort, Merge Sort, and Quick Sort (including Lomuto and Hoare
partitioning methods), along with their time and space
complexities, pivot selection, and worst-case scenarios.
Technology Learnt: Linked Lists and
Stacks
Linked Lists Stacks
An introduction to linked lists with An overview of the stack data structure and its
implementations in C++ and Java. Explored applications. Implementation of stacks using
doubly linked lists and circular linked lists. arrays and linked lists in C++ .
Covered problems like detecting loops using
Floyd's cycle detection algorithm, and detecting
and removing loops in linked lists.
Technology Learnt: Trees and
Graphs
Trees Basics of trees, including binary trees
and their applications. Implemented
various tree traversal techniques like
Inorder, Preorder, Postorder, Level
Order (line by line).