Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ravi's Progress Tracker #1370

Open
RaviAshray15 opened this issue Sep 19, 2024 · 2 comments
Open

Ravi's Progress Tracker #1370

RaviAshray15 opened this issue Sep 19, 2024 · 2 comments

Comments

@RaviAshray15
Copy link

RaviAshray15 commented Sep 19, 2024

Data Structures and Algorithms (DSA) Course Outline

Git & GitHub

  • Complete Git & GitHub Course

Introduction to Programming

  • Types of languages
  • Memory management
  • Flow of the program
  • Flowcharts
  • Pseudocode

Introduction to Java

  • Introduction
  • How it works
  • Setup Installation
  • Input and Output in Java

Conditionals & Loops in Java

  • if else
  • loops
  • Switch statements

Data types

  • Coding best practices

Functions

  • Introduction
  • Scoping in Java
  • Shadowing
  • Variable Length Arguments
  • Overloading

Arrays

  • Introduction
  • Memory management
  • Input and Output
  • ArrayList Introduction

Sorting

  • Insertion Sort
  • Selection Sort
  • Bubble Sort
  • Cyclic Sort (Merge sort etc after recursion)

Searching

  • Linear Search
  • Binary Search
  • Modified Binary Search
  • Binary Search Interview questions
  • Binary Search on 2D Arrays

Pattern questions

  • Strings

Introduction to Strings

  • How Strings work
  • Comparison of methods
  • Operations in Strings
  • StringBuilder in Java

Maths for DSA

  • Introduction
  • Complete Bitwise Operators
  • Prime numbers
  • HCF / LCM
  • Sieve of Eratosthenes
  • Newton's Square Root Method
  • Number Theory
  • Euclidean algorithm

Space and Time Complexity Analysis

  • Introduction
  • Comparison of various cases
  • Solving Linear Recurrence Relations
  • Solving Divide and Conquer Recurrence Relations
  • Big-O, Big-Omega, Big-Theta Notations
  • Get equation of any relation easily - best and easiest approach
  • Complexity discussion of all the problems we do
  • Space Complexity
  • Memory Allocation of various languages
  • NP Completeness and Hardness

Recursion

  • Introduction
  • Why recursion?
  • Flow of recursive programs - stacks
  • Convert recursion to iteration
  • Tree building of function calls
  • Tail recursion

Sorting

  • Merge Sort
  • Quick Sort

Backtracking

  • Sudoku Solver
  • N-Queens
  • N-Knights
  • Maze problems
  • Recursion String Problems
  • Recursion Array Problems
  • Recursion Pattern Problems
  • Subset Questions
  • Recursion - Permutations, Dice Throws etc Questions

Object Oriented Programming (OOP)

  • Introduction
  • Classes & its instances
  • this keyword in Java
  • Properties
  • Inheritance
  • Abstraction
  • Polymorphism
  • Encapsulation
  • Overloading & Overriding
  • Static & Non-Static
  • Access Control
  • Interfaces
  • Abstract Classes
  • Singleton Class
  • final, finalize, finally
  • Exception Handling

Linked List

  • Introduction
  • Singly and Doubly Linked List
  • Circular Linked List
  • Fast and slow pointer
  • Cycle Detection
  • Reversing of LinkedList
  • Linked List Interview questions

Stacks & Queues

  • Introduction
  • Interview problems
  • Push efficient
  • Pop efficient
  • Queue using Stack and Vice versa
  • Circular Queue

Dynamic Programming (DP)

  • Introduction
  • Recursion + Recursion DP + Iteration + Iteration Space Optimized
  • Complexity Analysis
  • 0/1 Knapsack
  • Subset Questions
  • Unbounded Knapsack
  • Subseq questions
  • String DP

Trees

  • Introduction
  • Binary Trees
  • Binary Search Trees
  • DFS
  • BFS
  • AVL Trees
  • Segment Tree
  • Fenwick Tree / Binary Indexed Tree

Heaps

  • Introduction
  • Theory
  • Priority Queue
  • Two Heaps Method
  • k-way merge
  • Top k elements
  • Interval problems

Hashmaps

  • Introduction
  • Theory - how it works
  • Comparisons of various forms
  • Limitations and how to solve
  • Map using LinkedList
  • Map using Hash
  • Chaining
  • Probing
  • Huffman-Encoder

Tries

  • Introduction

Graphs

  • Introduction
  • BFS
  • DFS
  • Working with graph components
  • Minimum Spanning Trees
  • Kruskal Algorithm
  • Prim’s Algorithm
  • Dijkstra’s shortest path algorithm
  • Topological Sort
  • Bellman Ford
  • A* pathfinding Algorithm

Greedy Algorithms

  • Introduction

Advanced Concepts

  • Fast IO
  • File handling
  • Bitwise + DP
  • Extended Euclidean algorithm
  • Modulo Multiplicative Inverse
  • Linear Diophantine Equations
  • Matrix Exponentiation
  • Mathematical Expectation
  • Catalan Numbers
  • Fermat’s Theorem
  • Wilson's Theorem
  • Euler's Theorem
  • Lucas Theorem
  • Chinese Remainder Theorem
  • Euler Totient
  • NP-Completeness
  • Multithreading
  • Fenwick Tree / Binary Indexed Tree
  • Square Root Decomposition
@AmanKumar2342
Copy link

Where are the videos of Dynamic programming which you mentioned?

@RaviAshray15
Copy link
Author

RaviAshray15 commented Sep 23, 2024

I think Kunal will take some time to upload them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants