- Sachin Kaushik
- DSML Dec24(2) Advanced
- DSML Dec24(2) Intermediate
This repository contains notebooks and PDF notes designed to help you understand fundamental and advanced concepts in Python programming, data structures, algorithms, and object-oriented programming (OOP). The materials are structured to guide you through core programming concepts with practical examples and exercises.
- Summary: A refresher course on the fundamentals of Python programming, covering basic syntax, control flow, data types, and functions.
- Core Usecase: Ensures a solid understanding of Python fundamentals, providing the foundation for more advanced topics.
- Applications: Basic scripting, automation tasks, and simple data processing.
- Summary: A continuation of the Python refresher, focusing on data structure topics such as Dictionary, set, lists and memory management
- Core Usecase: Prepares learners to work with modular, reusable code and understand advanced Python features for clean and efficient programming.
- Applications: Efficiently storing data into appropriate data structure
- Summary: This notebook introduces the fundamental concepts of time and space complexity. It covers how to evaluate the efficiency of algorithms using Big O notation, and discusses various scenarios, along with space vs. time trade-offs.
- Core Usecase: Helps in analyzing and optimizing algorithms for performance, especially in time-critical applications.
- Applications: Algorithm optimization in data processing, machine learning, and system design.
- Summary: An introduction to Object-Oriented Programming (OOP) in Python. The notebook covers key OOP concepts such as classes, objects, methods, and encapsulation.
- Core Usecase: Organizes code into reusable objects and classes, making large projects more manageable and scalable.
- Applications: Software development, game development, web applications, and systems that require complex data modeling.
- Summary: A deeper dive into OOP, this notebook explores special methods (dunders) and the concept of inheritance. It provides insights into creating complex and hierarchical class structures.
- Core Usecase: Enables more advanced object-oriented designs through inheritance, polymorphism, and the use of special methods for custom object behavior.
- Applications: Creating frameworks, building complex software systems, and designing reusable codebases.
- Summary: An introduction to functional programming in Python. Concepts such as higher-order functions, lambda expressions, and immutability are discussed.
- Core Usecase: Encourages writing cleaner, more maintainable code with functions as first-class citizens and immutable data structures.
- Applications: Data transformation, parallel computing, and functional reactive programming.
- Summary: A deeper exploration of functional programming in Python, covering advanced concepts such as map, filter, reduce, and functional data structures.
- Core Usecase: Helps solve problems with functional constructs, improving readability and conciseness, while ensuring immutability and side-effect-free code.
- Applications: Data pipelines, functional programming frameworks, and large-scale data processing tasks.
- Summary: This notebook explores Python's exception handling mechanisms. Topics covered include try-except blocks, custom exceptions, and best practices for writing robust Python code.
- Core Usecase: Teaches the best practices for handling errors in Python applications, ensuring smooth user experiences and system reliability.
- Applications: Developing robust Applications and APIs, handling runtime errors in applications, and building fault-tolerant systems.
- Summary: This repository also demonstrates how to handle files in Python. You’ll find examples of reading and writing to text and CSV files, handling file paths, and working with file I/O operations.
- Core Usecase: Teaches essential skills for working with files, including reading from and writing to text, CSV, and JSON files, as well as handling large datasets.
- Applications: Data analysis, log file processing, building custom file-based data storage systems, and automating file handling tasks.
- For basic Data Structure applications refer : Data_Structure_Use_Cases_and_Practice_Problems.ipynb
- For Algorithms and maths concept used in ML: Fundamental_MathswithAlgorithmsPractice_Sheet.ipynb
- Practice followings Questions:
https://www.geeksforgeeks.org/problems/largest-element-in-array4009/1
https://www.geeksforgeeks.org/problems/second-largest3735/1
https://leetcode.com/problems/valid-palindrome/
https://leetcode.com/problems/fibonacci-number/description/
https://leetcode.com/problems/frequency-of-the-most-frequent-element/description/
https://www.geeksforgeeks.org/problems/frequency-of-array-elements-1587115620/0
https://leetcode.com/problems/check-if-array-is-sorted-and-rotated/description/
https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/
https://leetcode.com/problems/rotate-array/description/
https://leetcode.com/problems/move-zeroes/description/
https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/
https://leetcode.com/problems/valid-parentheses/description/
https://leetcode.com/problems/longest-common-prefix/description/
https://leetcode.com/problems/length-of-last-word/description/
https://leetcode.com/problems/merge-two-sorted-lists/description/
https://leetcode.com/problems/powx-n/description/
https://leetcode.com/problems/climbing-stairs/description/
https://leetcode.com/problems/pascals-triangle/description/
https://leetcode.com/problems/single-number/description/
https://leetcode.com/problems/lru-cache/description/
https://leetcode.com/problems/number-of-1-bits/description/
https://leetcode.com/problems/determine-whether-matrix-can-be-obtained-by-rotation/
https://leetcode.com/problems/rotate-image/description/
https://leetcode.com/problems/spiral-matrix/description/
- for Medium | Advanced problems on algorithms: DSA_Practice_problems_Medium_|_Hard.ipynb
All notebooks and files are present in main branch of this repository