# Cracking Coding Interviews

Enrolling in a weekend course focused on Data Structures and Algorithms (DSA) is an excellent opportunity for individuals seeking to enhance their programming and problem-solving skills. These courses typically provide a comprehensive curriculum covering essential DSA concepts, algorithms, and their practical applications. Conducted on weekends, the course caters to individuals with busy weekday schedules, allowing them to balance their professional or academic commitments while dedicating time to skill development.

The weekend DSA course often includes interactive lectures, hands-on coding exercises, and real-world problem-solving sessions. Participants have the chance to delve into fundamental data structures such as arrays, linked lists, trees, and graphs, as well as algorithms like sorting, searching, and dynamic programming.

Instructors guide students through a structured learning path, fostering a deeper understanding of efficient problem-solving techniques. One of the key advantages of weekend DSA courses is the flexibility they offer, enabling learners to progress at their own pace without the intensity of daily commitments. Additionally, the condensed nature of weekend sessions encourages focused learning, making the course accessible to working professionals, students, and anyone looking to upskill. Overall, a weekend DSA course provides a practical and convenient avenue for individuals to strengthen their programming foundation, tackle coding challenges with confidence, and boost their overall proficiency in software development.

# Requirements
  • You should be comfortable with basics of programming, such as array and strings.
  • You should have the zeal to learn and put in the time and efforts needed to make this course a success.
# Who this course is for?
  • If you are a beginner and just wants to learn to code.
  • If you are in college and placement season is coming near.
  • If you are in the industry and looking to switch and wants a refresher on DSA.
  • If you are someone who is interested in knowing the ins and outs of programming.
# Course Content
Logic Building
  • Building Intuition
  • Developing logical thought process
Problem Solving in Online Platforms
  • Well-defined coding problems
  • Problem Comprehension
  • Constraints Analysis
  • Verdicts and Resolutions
Number System
  • Binary vs Decimal
  • Signed vs Unsigned Numbers
  • 2s Complement
  • Range of Data Types (32-bit and 64-bit)
  • Overflow and Underflow
Complexity Analysis
  • Time and Space complexity
  • Big-Oh Notation
  • Various classes of complexities
  • Analysing examples of various time and space complexities
  • Logarithms and Powers
  • Square Roots
Pre-Computation
  • Modular Arithmetic
  • Prefix and Suffix Sum
  • 1D Range Sum Queries
  • 2D Range Sum Queries
  • Prime Queries and Sieve
  • Segmented Sieve
Built-In Library
  • List
  • List of List
  • Pair
  • Sort
  • Set
  • Map
Bit Manipulations
  • Bitwise Operators
  • Bit Observations
  • Bit Manipulation Problems
  • Properties of XOR
  • Bit Tricks and Application Problems
  • Subsets with Bitmasking
  • Modular Exponentiation
Array Problem Solving Tricks
  • Index Marking
  • Two Pointer Technique
Recursion and Complexity Analysis
  • Visualisation of Recursion
  • Recurrence Relation
  • Complexity Analysis of Recursive Codes
  • Tracing Recursive Codes
  • Call Stack and Stack unwinding
Divide and Conquer
  • Merge Sort
  • Inversion Counting
  • Matrix Exponentiation
Sorting and Searching
  • Custom Sorting
  • Sorting Algorithms and Complexity Analysis
  • Binary Search on Array
  • Binary Search on Integral Range
  • Binary Search on Floating Numbers
  • Binary Search on Matrix
  • Binary Search on Sorted Rotated Arrays
  • Binary Search on Answer
Abstract Data Types
  • Stacks and Its Applications
  • Queues and Its Applications
  • Priority Queue/Heap
Misc Topics
  • Game Theory
  • Meet in the Middle
Sliding Window
  • Subarray Problems
  • Counting Subarrays
  • Finding Longest or Shortest Subarrays with Criteria
Hashing
  • String Hashing
  • Collision and Resolution
  • Prefix Hash and Suffix Hash
Range Queries
  • Segment Tree
  • Fenwick Tree
Linked Lists
  • Singly Linked List
  • Doubly Linked List
  • Circular Linked List
  • Two Pointers
  • Advanced problems on Linked Lists
Trees
  • Binary Search Tree
  • Binary Tree
  • N-ary Tree
  • Path Problems on Trees
Dynamic Programming
  • Intuition and Terminologies
  • Building Recurrences
  • Top Down and Bottom Up
  • PreComputation
  • Counting DP
  • Grid DP
  • Subset DP
  • String DP
  • Partition DP
Graph Algorithms
  • Graph Representation
  • BFS
  • DFS
  • Implicit Graphs
  • Disjoint Set Union
  • Topological Sort
  • Shortest Path Problems
  • Bipartite Graphs
  • Cycle Detection
Backtracking
  • 1D Problems
  • 2D Problems
  • Implicit Backtracking Problems
Trie
  • Fundamentals of Trie
  • Trie with characters and words
  • Trie with binary numbers
  • Problem Solving using Trie
# Instructor
Sandeep kumar (Software Engineer & Instructor)

Proficient in System Design, Software Architecture, Problem Solving, Data Structures and Algorithms.