Welcome to my repository for the Data Structures and Algorithms Specialization offered by Microsoft on Coursera. This repository serves as a portfolio of my work, containing all the C# projects, lab assignments, and programming challenges I've completed throughout the series.
The goal of this specialization is to build a strong theoretical and practical foundation in core computer science concepts. Each folder in this repository corresponds to one of the courses in the specialization.
The projects in this repository are developed using C# with the .NET SDK. To run any of the projects:
-
Navigate to the specific project folder (e.g.,
./Course2_DataStructures/Projects/ArrayBasedStack/). -
Open a terminal in that directory.
-
Run the command:
dotnet run
Below is a breakdown of each course in the specialization, along with my completed projects and key takeaways.
-
Official Link: Introductions to Data Structures and Algorithms
-
Description: Understanding fundamental data structures is essential for efficient back-end development. This module introduces core data structures, including arrays, linked lists, stacks, and queues, explaining their characteristics and use cases. Learners will implement these structures in a .NET Core environment and analyze their time and space complexity using Big O notation. By comparing different linear data structures, participants will develop the ability to select the most suitable one for various back-end applications, such as optimizing API request handling.
-
My Projects:
-
[Link to Project 1 Folder](./Course1_AlgorithmicToolbox/Project1/)- A brief description of the project. -
[Link to Project 2 Folder](./Course1_AlgorithmicToolbox/Project2/)- A brief description of the project.
-
-
Key Learnings:
-
Analyzed the fundamental trade-offs between arrays and linked lists, focusing on memory usage and the time complexity of access (O(1) vs. O(n)) versus insertion/deletion operations.
-
Mastered the Last-In, First-Out (LIFO) principle of stacks and its practical applications, such as managing function call stacks and implementing undo features.
-
Understood the First-In, First-Out (FIFO) principle of queues and its importance in handling tasks in sequential order, like processing API requests.
-
Applied Big O notation to evaluate algorithmic efficiency, recognizing that
O(log n)(binary search) is the optimal choice for searching in large, sorted datasets.
-
-
Official Link: Sorting and Searching Algorithms
-
Description: Efficient data processing requires mastering sorting and searching algorithms. This module covers widely used sorting techniques, such as bubble sort, quicksort, and merge sort, emphasizing their efficiency and real-world applications. Learners will implement these algorithms in .NET Core, analyze their time and space complexity, and explore searching techniques like linear search and binary search. By applying binary search within sorted data sets, participants will enhance back-end system performance and evaluate trade-offs between different algorithmic approaches.
-
My Projects:
- (To be completed)
-
Key Learnings:
- (To be completed)
-
Official Link:
-
Description: Hierarchical and interconnected data structures are essential for many back-end applications. This module introduces tree structures, including binary trees and balanced trees (e.g., AVL trees), along with traversal techniques such as preorder, inorder, and postorder traversal. Learners will also explore graph theory concepts, implementing traversal algorithms like Depth-First Search (DFS) and Breadth-First Search (BFS) to solve practical back-end challenges. Analyzing the time and space complexity of these structures will help developers optimize system performance.
-
My Projects:
- (To be completed)
-
Key Learnings:
- (To be completed)
-
Official Link: Advanced Algorithms and Problem-Solving
-
Description: Advanced problem-solving techniques, such as dynamic programming and greedy algorithms, play a crucial role in optimizing back-end systems. This module covers the implementation of dynamic programming solutions (e.g., Fibonacci sequence, longest common subsequence) and explores how hashing and hash tables improve search operations. Learners will apply these advanced algorithms to real-world back-end tasks, such as database query processing and authentication systems, while evaluating trade-offs between different algorithmic approaches.
-
My Projects:
- (To be completed)
-
Key Learnings:
- (To be completed)
Upon completion of the entire specialization, I will add my certificate here.
-
LinktoMyCertificate
(Coming Soon)