Welcome to the supplementary GitHub repository for the course Programming, Data Structures, and Algorithms Using Python (BSCS2002) which is offered as part of the IITM BS in Data Science and Applications program. You can find more information about the course here. There is also an online textbook that you can use as reference throughout the course.
I created this repository as a part of my work as a Teaching Assistant for this course. In this repository, you will find a solution explanations and code implementations for a list curated Leet Code problems that span the topics covered in the lectures. The problems are categorized such that they correspond to each week’s course content.
The solutions presented here are mostly based on the codes discussed in the course to keep it familiar, but readers are encouraged to look at better and more efficient solutions that are available online. I will continue to add some additional problems in this repo in the future as well.
📝 Overview of Course Topics:
- Week 1: Overview and recap of Python
- Week 2: Sorting and Searching Algorithms- Binary Search, Quick Sort, Merge Sort, Insertion Sort, Selection Sort.
- Week 3: Stacks, Heaps, Linked Lists, Arrays, and Hashing
- Week 4: Graph Algorithms- BFS, DFS, Topological Sorting, DAG
- Week 5: Graph Algorithms- Shortest Paths, Minimum Cost Spanning Trees
- Week 6: Union Find, Priority Queues, Heaps, Binary Search Trees
- Week 7: Balanced Search Trees, Greedy Algorithms- Huffman Coding, Interval Scheduling
- Week 8: Divide and Conquer- Quick Select, Closest Pair of Points, Counting Inversions
- Week 9: Dynamic Programming- Grid Paths, Edit Distance, Longest Common Subsequence
- Week 10: String Matching- Boyer-Moore, Rabin-Karp, KMP, Tries, Regular Expressions
- Week 11: Network Flows, Linear Programming, NP Hardness
- Week 12: Summary
🔎 About the Problems
The problems selected from LeetCode cover the range of difficulties, from easy to hard. Each problem is chosen to reinforce the concepts learned during the week, and provides both practice and an understanding of the topics. You are encouraged to attempt the problems before looking at the solution approach and code.
🙌 Credits
This repository is a collaborative effort between the course instructors, teaching assistants, and the enthusiastic community of students. Special thanks to Professor Madhavan Mukund Sir, the instructors Atul Pratap Singh Sir, S Satyanarayana Sir for their continued support, and a shoutout to the creators of the LeetCode platform for providing a wealth of coding challenges.
Happy coding! 🚀