Welcome to my comprehensive Java and Data Structures & Algorithms (DSA) notes repository! My name is Varshith, and I'm currently pursuing a Master's degree in Computer Science. This repository contains my notes, code examples, and exercises as I learn Java and various data structures and algorithms. I hope these resources will be helpful to others who are also learning these concepts.
This course is a deep dive into Java programming and Data Structures & Algorithms, designed to prepare students for technical interviews and advanced studies.
- Java Basics
- Data Structures & Algorithms (DSA)
- Advanced Data Structures
- Contributing
- License
- Contact
- Flowcharts & Pseudocodes: What are flowcharts, pseudocodes, decision making using flowcharts, examples
- Variables & Data Types: Our first Java program, Variables and data types, Taking input/output, How java code runs?
- Conditional Statements: Introduction to if else, else if, Nested conditionals, switch
- Operators: Arithmetic, relational, logical & assignment operators
- Loops & Functions: For loops, While loops, Do-while loops, Flow of execution of statements, break & continue examples
- Patterns: Introduction to nested loops, basic to advanced patterns solved (butterfly, Floyd's triangle, rhombus, etc.
- Functions: Introduction to functions, function calling, Pass by value, scope
- Introduction to Arrays: Introduction to arrays, arrays in memory, Passing arrays to functions, interview problems
- Searching & Sorting: Linear search, Binary search, Selection sort, Bubble sort, Insertion sort, count sort
- 2D Arrays: 2D arrays, 2D arrays in memory, Examples using 2D Arrays
- Introduction to Strings: Introduction to strings & StringBuilder, storage of strings and their inbuilt functions
- Recursion, Backtracking, Divide & Conquer: Introduction to recursion, Principle of mathematical induction, factorial, Fibonacci numbers, Recursion using arrays, Recursion using strings, Recursion using 2D arrays, backtrack, merge sort, quick sort
- Bit Manipulation: Binary number system, bitwise operators, operations on bits, fast exponentiation
- Time & Space Complexity: Order complexity analysis, Theoretical complexity analysis, Time complexity analysis of searching and recursive algorithms, Space complexity analysis of merge sort
- Basic to Advanced OOP: Objects & Classes, Creating objects, Getters, and setters, Constructors and related concepts, Inbuilt constructor and destructor, Example classes, Static members, Function overloading and related concepts, Abstraction, Encapsulation, Inheritance, Polymorphism, Abstract classes, Interfaces
- Introduction to Greedy Approach: Introduction to greedy approach to problem-solving, solving classical problems
- Linked Lists: Introduction, Inserting a node in a linked list, Deleting a node from a linked list, Midpoint of a linked list, Merge two sorted linked lists, merging sort of a linked list, Reversing a linked list
- Stacks and Queues: Introduction, Stack using arrays, Dynamic Stack class, Stack using linked list, Inbuilt stack, Queue using arrays, Dynamic queue class, circular queue
- ArrayLists: Introduction to java collection framework, arrays, solved questions
- Introduction to Heaps: Min/Max heaps, Heap Sort, Priority Queues, how to implement priority queues
- Complete Binary Trees: Introduction to CBT and its implementation, Insert and Delete operations in heaps, Implementing priority queues, In-built Priority Queue
- Introduction to Hashing: Hashmaps, Inbuilt Hashmap, Hashsets, In-built Hashsets, Hash functions, Insert and Delete operation implementation in hashmap/hashset, examples
- Introduction to Tries: Creating a Trie node class, Insert, Search and Remove operation in Tries, Types of Tries, Questions on Tries
- Fundamentals of Dynamic Programming: Introduction to Memoization, Knapsack using DP, Factorial using DP, Fibonacci numbers using recursion, memoization and tabulation, Longest Common Subsequence (LCS) using recursion, Catalan's number, Edit distance using recursion, memorization, and dynamic programming, Matrix Chain Multiplication and much more
Contributions are welcome! If you have improvements, bug fixes, or new implementations to share, please feel free to submit a pull request. For major changes, please open an issue first to discuss what you would like to change.
This repository is licensed under the MIT License. See the LICENSE file for more details.
For any questions, suggestions, or feedback, please open an issue or reach out to me directly at varshithkola20@gmail.com.
Happy learning!
Varshith