Welcome to the Data Structures and Algorithms (DSA) Lecture Notes and Assignments repository for the "PDSA" course at IIT Madras. This repository contains a comprehensive collection of lecture notes, along with graded assignments, to help you excel in your DSA studies. All lecture notes are organized by week, and assignments are stored within the "graded" folder. All code examples are implemented using Python.
This section covers various algorithms that are essential for understanding and implementing data structures and solving computational problems effectively. The topics covered include:
- Sorting
- Searching
- Recurion
- Greedy Algorithms
- Dynamic Programming
- String Matching
- Interval Scheduling
This section focuses on fundamental data structures that are the building blocks of algorithms and software development. The data structures covered include:
- Arrays
- Stacks
- Queues
- Linked Lists
- Graphs
- Trees
- Tries
- Heaps
- Union-Find (Disjoint Set Data Structure)
To help you navigate through the course materials, here's the weekly schedule for the PDSA course at IIT Madras:
- Week 1: Python Refresher
- Week 2: Complexity Analysis, Notations, Sorting, and Searching Algorithms
- Week 3: Arrays, Lists, Stacks, Queues, Hashing
- Week 4: Graph Algorithms
- Week 5: Graph Algorithms (Continued)
- Week 6: Union-Find Data Structure, Priority Queue, Heap, Binary Search Tree
- Week 7: Balanced Search Trees, Greedy Algorithms
- Week 8: Divide and Conquer
- Week 9: Dynamic Programming
- Week 10: String or Pattern Matching Algorithms
- Week 11: Network Flows, Linear Programming, and Class of Algorithms
- Navigate to the desired week's folder to access lecture notes.
- Inside the "graded" folder, you'll find assignments related to the corresponding week's topics.
- Feel free to explore the code implementations in Python for a practical understanding of the algorithms and data structures discussed.
If you would like to contribute to this repository by adding additional lecture notes, assignments, or code examples, please follow these steps:
- Fork this repository.
- Make your changes or additions.
- Create a pull request, detailing the changes you've made.
Your contributions are highly appreciated and will help improve the learning experience for others.
Special thanks to the instructors and contributors at IIT Madras for providing the lecture notes and assignments that make this repository possible.
Happy learning, and best of luck with your DSA studies!