Python DSA
Fee : ₹25,000 + GST ₹4500, Duration : 5 months, Contact : patkar@rajeshpatkar.com
Upcoming Class
Duration
5 months
Start Date
16th Jan 2025
End Date
3rd June 2025
Timings
7.30 pm to 9.30 pm
Days
Tue/Thu
Course Content
1. Structured Programming
A. Information Modeling
Variables and Data Types
Understanding different data types (int, float, str, bool)
Variable declaration and assignment
Type casting and type checking
Operators and Expressions
Arithmetic, comparison, logical, and bitwise operators
Operator precedence and associativity
B. Control Structures
Conditional Statements
if, elif, else constructs
Nested conditionals
The match statement
Iterative Statements
while loops
for loops and iteration over sequences
Loop control statements: break, continue, else clause in loops
C. Functions
Definition and Invocation
Defining functions using def
Calling functions with positional and keyword arguments
Parameters and Arguments
Default parameters
Variable-length arguments (*args, **kwargs)
Return Values
Returning single or multiple values
The None value
Scope and Lifetime
Local vs. global variables
The global and nonlocal keywords
Activation Records
Understanding call stack and function call mechanics
D. Console I/O
Using print() for output formatting
Reading user input with input()
String formatting methods (%, .format(), f-strings)
E. Collections
Lists
Creation, indexing, slicing, and methods
List comprehensions
Tuples
Immutable sequences
Packing and unpacking
Strings
String methods and operations
Escape sequences and raw strings
2. Object Oriented Programming
A. Object Based
Objects and Classes
Understanding objects: state and behavior
Defining classes using class keyword
Instantiating objects
Attributes and Methods
Instance variables (attributes)
Defining methods
The self parameter
Constructors
The __init__ method
Initialization of object state
B. Object Oriented
Inheritance
Single and multilevel inheritance
Using super() to access parent class methods
Multiple Inheritance
Method Resolution Order (MRO)
Potential pitfalls and the Diamond Problem
Method Overriding
Overriding parent class methods
Polymorphism concepts
C. Exception Handling
Error Handling Constructs
Using try, except, finally, and else blocks
Catching specific exceptions
Custom Exceptions
Defining user-defined exceptions by extending Exception class
Context Managers
The with statement
Implementing context managers using __enter__ and __exit__ methods
D. Collections
Dictionaries
Key-value pairs
Dictionary methods and comprehension
Sets
Unordered collections of unique elements
Set operations (union, intersection, difference)
E. File Handling
Basic File Operations
Opening files using open()
Reading (read(), readline(), readlines())
Writing and appending data
File Pointers
Using tell() and seek() methods
Understanding file modes ('r', 'w', 'a', 'rb', 'wb')
3. Functional Programming
A. Core Concepts
Closures
Functions with enclosed scopes
Nested functions and nonlocal variables
Lambda Functions
Anonymous function syntax
Use cases for concise functions
B. Higher Order Functions
Functions as First-Class Objects
Passing functions as arguments
Returning functions from functions
Built-in Higher-Order Functions
map(), filter(), and reduce() (from functools)
List comprehensions as alternatives
C. Generator
Generator Functions
Using yield to produce iterators
Memory-efficient data handling
Generator Expressions
Similar to list comprehensions but with lazy evaluation
D. Decorator
Function Decorators
Modifying functions using other functions
Using @decorator_name syntax
Common Use Cases
Logging, access control, caching
E. Modules and Packages
Modules
Understanding and creating modules
Importing modules (import, from ... import)
Packages
Directory structures for packages
Using __init__.py
Relative imports
4. Data Structures and Algorithms
A. Fundamental Data Structures
1. Stack
Introduction
Definition and LIFO principle
Real-world analogies (e.g., stack of plates)
Implementations
Array Implementation
Fixed-size stacks using lists
List Implementation
Dynamic stacks using Python lists
Operations
push(), pop(), peek(), is_empty()
Applications
Expression evaluation (infix to postfix conversion)
Backtracking algorithms (e.g., maze solving)
Undo mechanisms in software
2. Queue
Introduction
Definition and FIFO principle
Real-world analogies (e.g., queues in a supermarket)
Implementations
Array Implementation
Using lists with pointers
List Implementation
Using collections.deque for efficient operations
Operations
enqueue(), dequeue(), peek(), is_empty()
Types of Queues
Circular Queue
Efficient use of storage by connecting the end to the front
Priority Queue
Elements processed based on priority
Deque (Double-Ended Queue)
Insertion and deletion from both ends
Applications
Order processing systems
Scheduling algorithms
Breadth-First Search (BFS)
3. Linked Lists
Singly Linked List
Nodes with data and a pointer to the next node
Operations: insertion, deletion, traversal
Doubly Linked List
Nodes with pointers to both previous and next nodes
Bidirectional traversal
Use cases over singly linked lists
Circular Linked List
Implementation and benefits
Applications
Implementing stacks and queues
Managing music playlists or photo galleries
4. Strings
String Manipulation
Slicing, concatenation, and methods
String Algorithms
Pattern matching algorithms (e.g., Knuth-Morris-Pratt)
Anagram checks
Palindrome detection
Applications
Text processing
Data validation
5. Hash Tables
Introduction to Hashing
Hash functions and their importance
Implementations
Using dictionaries in Python
Collision Resolution Techniques
Chaining (linked lists)
Open addressing (linear probing, quadratic probing)
Applications
Caching mechanisms
Database indexing
Implementing associative arrays
6. Trees
Tree Terminology
Nodes, edges, root, leaves, height, depth
Binary Trees
Structure and properties
Traversal methods: in-order, pre-order, post-order
Binary Search Trees (BST)
Insertion, deletion, searching
Threaded Trees
Purpose and implementation
AVL Trees
Self-balancing properties
Rotations (single and double)
Heaps
Min-Heap and Max-Heap
Heap operations
Applications
Expression parsing
Priority queues
Memory management
7. Graphs
Graph Terminology
Vertices (nodes), edges, paths, cycles
Implementations
Adjacency Matrix
Adjacency List
Graph Traversal Algorithms
Breadth-First Search (BFS)
Depth-First Search (DFS)
Shortest Path Algorithms
Dijkstra's Algorithm
Bellman-Ford Algorithm
A* Algorithm
Topological Sort
Use in scheduling tasks
Applications
Social network analysis
Routing algorithms
Dependency resolution
B. Advanced Data Structures
Disjoint Sets (Union-Find)
Concepts
Representing disjoint subsets
Operations
find() with path compression
union() by rank or size
Applications
Network connectivity
Kruskal's algorithm for MST
Detecting cycles in graphs
Tries
Introduction
Prefix trees for efficient retrieval
Operations
Insertion, search, deletion
Applications
Auto-completion features
Spell checking
C. Algorithmic Techniques
Sorting Algorithms
Elementary Sorting Algorithms
Bubble Sort
Selection Sort
Insertion Sort
Efficient Sorting Algorithms
Merge Sort
Quick Sort
Heap Sort
Hybrid Sorting Algorithms
Tim Sort (Python's built-in sort algorithm)
Non-Comparison Sorts (Optional)
Counting Sort
Radix Sort
Algorithm Analysis
Time Complexity (Big O notation)
Space Complexity
Stability and in-place sorting
Searching Algorithms
Linear Search
Binary Search
Prerequisites (sorted data)
Implementation and analysis
Recursion and Backtracking
Understanding Base Cases and Recursive Calls
Recursion vs. Iteration
Common Recursive Algorithms
Factorial, Fibonacci sequence
Backtracking
N-Queens problem
Sudoku solver
Dynamic Programming
Principles and Methodology
Overlapping subproblems
Optimal substructure
Techniques
Memoization (top-down)
Tabulation (bottom-up)
Classic Problems
Knapsack problem
Longest Common Subsequence
Coin change problem
Greedy Algorithms
Concepts
Making locally optimal choices
Common Problems
Activity selection
Huffman coding
Fractional Knapsack problem
Divide and Conquer
Techniques
Master theorem
Applications beyond sorting
Applications
Closest pair of points problem
Karatsuba algorithm for fast multiplication
Computational Geometry (Basic)
Points, Lines, Polygons
Convex Hull Algorithms
Graham scan
Jarvis march
Applications
Geometric problem-solving
Collision detection
Mathematical Algorithms
Number Theory
Greatest Common Divisor (GCD)
Least Common Multiple (LCM)
Prime numbers and Sieve of Eratosthenes
Modular arithmetic
Combinatorics
Permutations and combinations
Pascal's triangle
Probability Basics
Basic probability principles
Expected value calculations
D. Advanced Graph Algorithms
Minimum Spanning Trees
Prim's Algorithm
Kruskal's Algorithm
Strongly Connected Components
Tarjan's Algorithm
Advanced Shortest Path Algorithms
Floyd-Warshall Algorithm
All pairs shortest paths
Johnson's Algorithm
E. Algorithmic Complexity
Time and Space Complexity
Big O, Big Θ, Big Ω notations
Best, average, and worst-case scenarios
Amortized Analysis
Aggregate method
Accounting method
Potential method