├── 1.1 C.md ├── 1.2 C++.md ├── 1.3 Data-structures-and-algorithm.md ├── 1.4 Data Sturctures.md ├── 2.1 HTML.md ├── 2.1.1 seo-optimised.html ├── 2.2 CSS.md ├── 2.3 JavaScript.md ├── 2.4 React.md ├── 2.5 NodeJs.md ├── 3 Machine-Learning.md ├── Images └── roadmapforml.jpg ├── LICENSE └── README.md /1.1 C.md: -------------------------------------------------------------------------------- 1 | # Complete C Programming Learning Guide 2 | 3 | Welcome to the Complete C Programming Learning Guide! This guide is designed to help you master C programming, whether you are a beginner just starting out or an experienced developer aiming to deepen your knowledge and skills. 4 | 5 | ## Table of Contents 6 | 7 | 1. [Introduction to C](#introduction-to-c) 8 | 2. [Setting Up the Environment](#setting-up-the-environment) 9 | 3. [Basic Concepts](#basic-concepts) 10 | - [Hello World](#hello-world) 11 | - [Data Types](#data-types) 12 | - [Variables](#variables) 13 | - [Operators](#operators) 14 | 4. [Control Structures](#control-structures) 15 | - [Conditional Statements](#conditional-statements) 16 | - [Loops](#loops) 17 | 5. [Functions](#functions) 18 | - [Defining and Calling Functions](#defining-and-calling-functions) 19 | - [Function Parameters](#function-parameters) 20 | - [Return Values](#return-values) 21 | 6. [Arrays and Strings](#arrays-and-strings) 22 | - [Arrays](#arrays) 23 | - [Strings](#strings) 24 | 7. [Pointers](#pointers) 25 | - [Pointer Basics](#pointer-basics) 26 | - [Pointer Arithmetic](#pointer-arithmetic) 27 | - [Pointers and Arrays](#pointers-and-arrays) 28 | 8. [Structures and Unions](#structures-and-unions) 29 | - [Structures](#structures) 30 | - [Unions](#unions) 31 | 9. [Memory Management](#memory-management) 32 | - [Dynamic Memory Allocation](#dynamic-memory-allocation) 33 | - [Memory Leaks and Errors](#memory-leaks-and-errors) 34 | 10. [File I/O](#file-io) 35 | - [Reading and Writing Files](#reading-and-writing-files) 36 | - [File Operations](#file-operations) 37 | 11. [Advanced Topics](#advanced-topics) 38 | - [Preprocessor Directives](#preprocessor-directives) 39 | - [Bitwise Operations](#bitwise-operations) 40 | - [Multi-Threading](#multi-threading) 41 | - [Network Programming](#network-programming) 42 | - [C Standard Library](#c-standard-library) 43 | 12. [Preparation for Top Companies](#preparation-for-top-companies) 44 | - [Data Structures and Algorithms](#data-structures-and-algorithms) 45 | - [System Design](#system-design) 46 | - [Coding Interview Preparation](#coding-interview-preparation) 47 | 13. [Tools and Resources](#tools-and-resources) 48 | - [IDEs and Compilers](#ides-and-compilers) 49 | - [Version Control](#version-control) 50 | - [Documentation and References](#documentation-and-references) 51 | - [Online Platforms](#online-platforms) 52 | 53 | --- 54 | 55 | ## Introduction to C 56 | 57 | Learn the history and importance of C programming language. 58 | - [C Programming Language - Wikipedia](https://en.wikipedia.org/wiki/C_(programming_language)) 59 | - [YouTube: Computerphile](https://www.youtube.com/watch?v=CIhkX3IeFK0) 60 | 61 | ## Setting Up the Environment 62 | 63 | Set up your development environment with an IDE or a text editor and a compiler. 64 | - [Setting Up C Environment - GeeksforGeeks](https://www.geeksforgeeks.org/setting-c-development-environment/) 65 | - [YouTube: The Net Ninja](https://www.youtube.com/watch?v=8PopR3x-VMY) 66 | 67 | ## Basic Concepts 68 | 69 | ### Hello World 70 | 71 | Write and understand your first C program. 72 | - [Hello World Program - GeeksforGeeks](https://www.geeksforgeeks.org/c-program-to-print-hello-world/) 73 | - [YouTube: The Net Ninja](https://www.youtube.com/watch?v=ZSPZob_1TOk) 74 | 75 | ### Data Types 76 | 77 | Learn about the different data types in C. 78 | - Subtopics: 79 | - Basic Data Types (int, char, float, double) 80 | - Derived Data Types (array, pointer, structure, union) 81 | - Enumeration 82 | 83 | - [Data Types - GeeksforGeeks](https://www.geeksforgeeks.org/data-types-in-c/) 84 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=QQQpOaGmB7s) 85 | 86 | ### Variables 87 | 88 | Understand how to declare and use variables in C. 89 | - [Variables - GeeksforGeeks](https://www.geeksforgeeks.org/variables-in-c/) 90 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=5-HzYjYwA9E) 91 | 92 | ### Operators 93 | 94 | Learn about the different operators in C. 95 | - Subtopics: 96 | - Arithmetic Operators 97 | - Relational Operators 98 | - Logical Operators 99 | - Bitwise Operators 100 | - Assignment Operators 101 | - Miscellaneous Operators 102 | 103 | - [Operators - GeeksforGeeks](https://www.geeksforgeeks.org/operators-in-c-set-1-arithmetic-operators/) 104 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=6p5mMc1On8I) 105 | 106 | ## Control Structures 107 | 108 | ### Conditional Statements 109 | 110 | Understand how to use if, else if, and else statements. 111 | - [Conditional Statements - GeeksforGeeks](https://www.geeksforgeeks.org/decision-making-c-c-else-nested-else/) 112 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=aYtlVzHJuxg) 113 | 114 | ### Loops 115 | 116 | Learn about different looping constructs in C. 117 | - Subtopics: 118 | - for Loop 119 | - while Loop 120 | - do-while Loop 121 | 122 | - [Loops - GeeksforGeeks](https://www.geeksforgeeks.org/loops-in-c/) 123 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=kn3nKsmG4bU) 124 | 125 | ## Functions 126 | 127 | ### Defining and Calling Functions 128 | 129 | Learn how to define and call functions. 130 | - [Functions - GeeksforGeeks](https://www.geeksforgeeks.org/functions-in-c/) 131 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=QYub6yFfOeM) 132 | 133 | ### Function Parameters 134 | 135 | Understand passing parameters to functions. 136 | - Subtopics: 137 | - Pass by Value 138 | - Pass by Reference 139 | 140 | - [Function Parameters - GeeksforGeeks](https://www.geeksforgeeks.org/function-parameter/) 141 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=FuOkBr5dRcw) 142 | 143 | ### Return Values 144 | 145 | Learn about returning values from functions. 146 | - [Return Values - GeeksforGeeks](https://www.geeksforgeeks.org/return-values-functions-c/) 147 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=07pvO0NIjfk) 148 | 149 | ## Arrays and Strings 150 | 151 | ### Arrays 152 | 153 | Understand how to declare and use arrays. 154 | - Subtopics: 155 | - One-Dimensional Arrays 156 | - Multi-Dimensional Arrays 157 | 158 | - [Arrays - GeeksforGeeks](https://www.geeksforgeeks.org/arrays-in-c-cpp/) 159 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=_MVbToRmFDM) 160 | 161 | ### Strings 162 | 163 | Learn about strings and string handling functions. 164 | - Subtopics: 165 | - String Declaration and Initialization 166 | - String Input and Output 167 | - String Manipulation Functions 168 | - String Comparison Functions 169 | - String Searching and Tokenization 170 | 171 | - [Strings - GeeksforGeeks](https://www.geeksforgeeks.org/strings-in-c-2/) 172 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=SKYHqoDVty8) 173 | 174 | ## Pointers 175 | 176 | ### Pointer Basics 177 | 178 | Understand the basics of pointers. 179 | - [Pointers - GeeksforGeeks](https://www.geeksforgeeks.org/pointers-in-c-and-c-set-1-introduction-arithmetic-and-array/) 180 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=KaShlqj0cCQ) 181 | 182 | ### Pointer Arithmetic 183 | 184 | Learn about pointer arithmetic. 185 | - [Pointer Arithmetic - GeeksforGeeks](https://www.geeksforgeeks.org/pointer-arithmetic-in-c-c-with-examples/) 186 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=Z74xYF-SIzE) 187 | 188 | ### Pointers and Arrays 189 | 190 | Understand the relationship between pointers and arrays. 191 | - [Pointers and Arrays - GeeksforGeeks](https://www.geeksforgeeks.org/pointers-and-arrays-cpp/) 192 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=sTKob7fD4hE) 193 | 194 | ## Structures and Unions 195 | 196 | ### Structures 197 | 198 | Learn how to define and use structures. 199 | - [Structures - GeeksforGeeks](https://www.geeksforgeeks.org/structures-c/) 200 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=Eu6OGFgKIYE) 201 | 202 | ### Unions 203 | 204 | Understand how to define and use unions. 205 | - [Unions - GeeksforGeeks](https://www.geeksforgeeks.org/unions-in-c/) 206 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=6y0bp-mnYU0) 207 | 208 | ## Memory Management 209 | 210 | ### Dynamic Memory Allocation 211 | 212 | Learn about dynamic memory allocation using malloc, calloc, realloc, and free. 213 | - [Dynamic Memory Allocation - GeeksforGeeks](https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/) 214 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=1W4oyuOdXv8) 215 | 216 | ### Memory Leaks and Errors 217 | 218 | Understand how to avoid and detect memory leaks. 219 | - [Memory Leaks - GeeksforGeeks](https://www.geeksforgeeks.org/memory-leak-in-c-and-how-to-avoid-it/) 220 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=Y9Z3Y3w7GSQ) 221 | 222 | ## File I/O 223 | 224 | ### Reading and Writing Files 225 | 226 | Learn how to read from and write to files. 227 | - [File I/O - GeeksforGeeks](https://www.geeksforgeeks.org/basics-file-handling-c/) 228 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=kE20uqV0fEE) 229 | 230 | ### File Operations 231 | 232 | Understand various file operations in C. 233 | - [File Operations - GeeksforGeeks](https://www.geeksforgeeks.org/file-handling-c-classes/) 234 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=Fc5I-Ts_BTo) 235 | 236 | ## Advanced Topics 237 | 238 | ### Preprocessor Directives 239 | 240 | Learn about preprocessor directives and their uses. 241 | - [Preprocessor Directives - GeeksforGeeks](https://www.geeksforgeeks.org/preprocessor-directives-c/) 242 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=GgmZaDgnK0Q) 243 | 244 | ### Bitwise Operations 245 | 246 | Understand bitwise operations and their applications. 247 | - [Bitwise Operations - GeeksforGeeks](https://www.geeksforgeeks.org/bitwise-operators-in-c-cpp/) 248 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=6Qp-ypYpTHQ) 249 | 250 | ### Multi-Threading 251 | 252 | Learn about creating and managing threads in C. 253 | - [Multi-Threading - GeeksforGeeks](https://www.geeksforgeeks.org/multithreading-c-2/) 254 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=9axdYk422_k) 255 | 256 | ### Network Programming 257 | 258 | Understand the basics of network programming in C. 259 | - [Network Programming - GeeksforGeeks](https://www.geeksforgeeks.org/network-programming-using-sockets/) 260 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=2iOhxS1_1Jc) 261 | 262 | ### C Standard Library 263 | 264 | Learn about the standard library functions in C. 265 | - [C Standard Library - GeeksforGeeks](https://www.geeksforgeeks.org/c-standard-library-functions/) 266 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=SB2qQrgdJfk) 267 | 268 | ## Preparation for Top Companies 269 | 270 | ### Data Structures and Algorithms 271 | 272 | Master data structures and algorithms for coding interviews. 273 | - [Data Structures - GeeksforGeeks](https://www.geeksforgeeks.org/data-structures/) 274 | - [Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/fundamentals-of-algorithms/) 275 | - [YouTube: MyCodeSchool](https://www.youtube.com/playlist?list=PL2_aWCzGMAwLL-mEB4ef20f3iqWMGWa25) 276 | 277 | ### System Design 278 | 279 | Understand the fundamentals of system design. 280 | - [System Design - GeeksforGeeks](https://www.geeksforgeeks.org/system-design-tutorial/) 281 | - [YouTube: Gaurav Sen](https://www.youtube.com/playlist?list=PLMCXHnjXnTnszHL4Gmu2Ns4GXpD_yJzRO) 282 | 283 | ### Coding Interview Preparation 284 | 285 | Prepare for coding interviews with practice problems and mock interviews. 286 | - [Coding Interview Questions - GeeksforGeeks](https://www.geeksforgeeks.org/must-do-coding-questions-for-companies-like-amazon-microsoft-adobe/) 287 | - [YouTube: Clément Mihailescu](https://www.youtube.com/c/Cl%C3%A9mentMihailescu) 288 | 289 | ## Tools and Resources 290 | 291 | ### IDEs and Compilers 292 | 293 | Use IDEs and compilers to write and compile C code. 294 | - [Visual Studio Code](https://code.visualstudio.com/) 295 | - [Code::Blocks](http://www.codeblocks.org/) 296 | - [GCC Compiler](https://gcc.gnu.org/) 297 | 298 | ### Version Control 299 | 300 | Learn Git for managing code. 301 | - Subtopics: 302 | - Git Basics 303 | - Branching and Merging 304 | - Pull Requests 305 | - Collaboration with GitHub 306 | 307 | - [Git Documentation](https://git-scm.com/doc) 308 | - [YouTube: Traversy Media](https://www.youtube.com/watch?v=SWYqp7iY_Tc) 309 | 310 | ### Documentation and References 311 | 312 | Use documentation and reference websites to aid your learning. 313 | - [cppreference](https://en.cppreference.com/w/) 314 | - [cplusplus.com](http://www.cplusplus.com/) 315 | - [C Standard Library](https://en.cppreference.com/w/c) 316 | 317 | ### Online Platforms 318 | 319 | Enhance your skills through coding platforms and online courses. 320 | - [Coursera](https://www.coursera.org/) 321 | - [edX](https://www.edx.org/) 322 | - [Udemy](https://www.udemy.com/) 323 | - [YouTube: FreeCodeCamp](https://www.youtube.com/user/freecodecamp) 324 | -------------------------------------------------------------------------------- /1.2 C++.md: -------------------------------------------------------------------------------- 1 | # Complete C++ Learning Guide 2 | 3 | Welcome to the Complete C++ Learning Guide! Whether you're a beginner starting with C++ or an experienced developer aiming to master advanced concepts and crack top tech companies' interviews, this guide will help you navigate through the world of C++ programming. 4 | 5 | ## Table of Contents 6 | 7 | 1. [Introduction](#introduction) 8 | 2. [Beginner](#beginner) 9 | - [Basic Syntax](#basic-syntax) 10 | - [Variables and Data Types](#variables-and-data-types) 11 | - [Operators](#operators) 12 | - [Control Structures](#control-structures) 13 | - [Functions](#functions) 14 | - [Arrays and Strings](#arrays-and-strings) 15 | - [Pointers](#pointers) 16 | - [References](#references) 17 | - [Namespaces](#namespaces) 18 | - [Preprocessor Directives](#preprocessor-directives) 19 | 3. [Intermediate](#intermediate) 20 | - [Object-Oriented Programming (OOP)](#object-oriented-programming-oop) 21 | - [Inheritance and Polymorphism](#inheritance-and-polymorphism) 22 | - [Templates](#templates) 23 | - [Exception Handling](#exception-handling) 24 | - [STL (Standard Template Library)](#stl-standard-template-library) 25 | - [File I/O](#file-io) 26 | - [Dynamic Memory Allocation](#dynamic-memory-allocation) 27 | - [Bit Manipulation](#bit-manipulation) 28 | - [Type Conversion and Casting](#type-conversion-and-casting) 29 | 4. [Advanced](#advanced) 30 | - [Multithreading and Concurrency](#multithreading-and-concurrency) 31 | - [Memory Management](#memory-management) 32 | - [Design Patterns](#design-patterns) 33 | - [Advanced STL](#advanced-stl) 34 | - [Networking](#networking) 35 | - [Boost Libraries](#boost-libraries) 36 | - [C++17 and C++20 Features](#c17-and-c20-features) 37 | - [Compile-Time Programming](#compile-time-programming) 38 | 5. [Preparation for Top Companies](#preparation-for-top-companies) 39 | - [Data Structures and Algorithms](#data-structures-and-algorithms) 40 | - [System Design](#system-design) 41 | - [Coding Interview Preparation](#coding-interview-preparation) 42 | 6. [Tools and Resources](#tools-and-resources) 43 | - [IDEs and Compilers](#ides-and-compilers) 44 | - [Version Control](#version-control) 45 | - [Documentation and References](#documentation-and-references) 46 | - [Online Platforms](#online-platforms) 47 | 48 | ## Introduction 49 | 50 | C++ is a powerful, high-performance programming language that supports both procedural and object-oriented programming paradigms. It is widely used in systems software, game development, real-time simulation, and performance-critical applications. 51 | 52 | ## Beginner 53 | 54 | ### Basic Syntax 55 | Learn the basic structure of a C++ program, including headers, main function, and basic input/output operations. 56 | - Subtopics: 57 | - Hello World Program 58 | - Structure of a C++ Program 59 | - Comments 60 | - Input/Output Streams 61 | 62 | - [C++ Basic Syntax - GeeksforGeeks](https://www.geeksforgeeks.org/c-plus-plus/) 63 | - [YouTube: ProgrammingKnowledge](https://www.youtube.com/watch?v=vLnPwxZdW4Y) 64 | 65 | ### Variables and Data Types 66 | Understand how to declare and use variables, and learn about different data types. 67 | - Subtopics: 68 | - Declaration and Initialization 69 | - Primitive Data Types (int, float, char, double, etc.) 70 | - User-Defined Data Types (struct, union, enum) 71 | - Constants and Literals 72 | - Type Inference (auto keyword) 73 | 74 | - [Variables and Data Types - cppreference](https://en.cppreference.com/w/cpp/language/type) 75 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=GQp1zzTwrIg) 76 | 77 | ### Operators 78 | Learn about arithmetic, relational, logical, bitwise, assignment, and other operators in C++. 79 | - Subtopics: 80 | - Arithmetic Operators 81 | - Relational Operators 82 | - Logical Operators 83 | - Bitwise Operators 84 | - Assignment Operators 85 | - Compound Assignment Operators 86 | - Increment and Decrement Operators 87 | - Ternary Operator 88 | - Operator Precedence and Associativity 89 | 90 | - [Operators - GeeksforGeeks](https://www.geeksforgeeks.org/operators-in-c-c/) 91 | - [YouTube: Neso Academy](https://www.youtube.com/watch?v=m9b41jOxlEA) 92 | 93 | ### Control Structures 94 | Understand the control flow of a program using if-else, switch-case, loops (for, while, do-while), and break/continue. 95 | - Subtopics: 96 | - If-Else Statements 97 | - Switch-Case Statements 98 | - For Loop 99 | - While Loop 100 | - Do-While Loop 101 | - Break and Continue Statements 102 | - Nested Loops 103 | 104 | - [Control Structures - Tutorialspoint](https://www.tutorialspoint.com/cplusplus/cpp_decision_making.htm) 105 | - [YouTube: Jenny's Lectures CS/IT NET&JRF](https://www.youtube.com/watch?v=7idwIHGqD6U) 106 | 107 | ### Functions 108 | Learn how to declare, define, and invoke functions, as well as understand function parameters and return types. 109 | - Subtopics: 110 | - Function Declaration and Definition 111 | - Function Parameters and Return Type 112 | - Default Arguments 113 | - Inline Functions 114 | - Function Overloading 115 | - Recursion 116 | 117 | - [Functions - GeeksforGeeks](https://www.geeksforgeeks.org/functions-in-c/) 118 | - [YouTube: Caleb Curry](https://www.youtube.com/watch?v=0kI5A8HO1D4) 119 | 120 | ### Arrays and Strings 121 | Understand how to work with arrays and strings, including declaration, initialization, and manipulation. 122 | - Subtopics: 123 | - Single-Dimensional Arrays 124 | - Multi-Dimensional Arrays 125 | - Character Arrays (C-Strings) 126 | - String Class (std::string) 127 | - Array and String Manipulation Functions 128 | 129 | - [Arrays - cppreference](https://en.cppreference.com/w/cpp/language/array) 130 | - [Strings - cppreference](https://en.cppreference.com/w/cpp/string/basic_string) 131 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=4P_kbF0EbZM) 132 | 133 | ### Pointers 134 | Learn about pointers, including declaration, dereferencing, and pointer arithmetic. 135 | - Subtopics: 136 | - Pointer Declaration and Initialization 137 | - Dereferencing Pointers 138 | - Pointer Arithmetic 139 | - Pointers to Pointers 140 | - Pointers and Arrays 141 | - Pointers and Functions 142 | 143 | - [Pointers - GeeksforGeeks](https://www.geeksforgeeks.org/pointers-in-c-and-c-set-1-introduction-arithmetic-and-array/) 144 | - [YouTube: FreeCodeCamp](https://www.youtube.com/watch?v=zuegQmMdy8M) 145 | 146 | ### References 147 | Understand the concept of references and how they differ from pointers. 148 | - Subtopics: 149 | - Reference Declaration and Initialization 150 | - References vs Pointers 151 | - References as Function Parameters 152 | - Returning References from Functions 153 | 154 | - [References - cppreference](https://en.cppreference.com/w/cpp/language/reference) 155 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=IzoFn3dfsPA) 156 | 157 | ### Namespaces 158 | Learn about namespaces and how they help in avoiding name conflicts. 159 | - Subtopics: 160 | - Using Namespaces 161 | - Creating Namespaces 162 | - Nested Namespaces 163 | - Namespace Aliases 164 | - Anonymous Namespaces 165 | 166 | - [Namespaces - cppreference](https://en.cppreference.com/w/cpp/language/namespace) 167 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=qzRKaPalrS8) 168 | 169 | ### Preprocessor Directives 170 | Understand the use of preprocessor directives like #include, #define, #if, #ifdef, #ifndef, and macros. 171 | - Subtopics: 172 | - Include Directives 173 | - Macro Definitions 174 | - Conditional Compilation 175 | - File Inclusion Guards 176 | 177 | - [Preprocessor Directives - GeeksforGeeks](https://www.geeksforgeeks.org/preprocessor-directives-c/) 178 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=yn2eQABlg1A) 179 | 180 | ## Intermediate 181 | 182 | ### Object-Oriented Programming (OOP) 183 | Learn the principles of OOP including classes, objects, encapsulation, inheritance, and polymorphism. 184 | - Subtopics: 185 | - Classes and Objects 186 | - Encapsulation and Data Hiding 187 | - Constructors and Destructors 188 | - Access Specifiers 189 | - Member Functions 190 | - Static Members 191 | - Friend Functions and Classes 192 | 193 | - [OOP - GeeksforGeeks](https://www.geeksforgeeks.org/object-oriented-programming-in-cpp/) 194 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=xXj6tPcnB2Q) 195 | 196 | ### Inheritance and Polymorphism 197 | Understand how to use inheritance to create a hierarchy of classes and polymorphism to manage them. 198 | - Subtopics: 199 | - Base and Derived Classes 200 | - Types of Inheritance (Single, Multiple, Multilevel, Hierarchical, Hybrid) 201 | - Virtual Functions 202 | - Abstract Classes 203 | - Function Overriding 204 | - Dynamic Binding 205 | 206 | - [Inheritance - cppreference](https://en.cppreference.com/w/cpp/language/inheritance) 207 | - [Polymorphism - GeeksforGeeks](https://www.geeksforgeeks.org/polymorphism-in-c/) 208 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=1N4SoBmqTrc) 209 | 210 | ### Templates 211 | Learn about function and class templates for generic programming. 212 | - Subtopics: 213 | - Function Templates 214 | - Class Templates 215 | - Template Specialization 216 | - Variadic Templates 217 | 218 | - [Templates - cppreference](https://en.cppreference.com/w/cpp/language/templates) 219 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=I-hZkUa9mIs) 220 | 221 | ### Exception Handling 222 | Understand how to handle exceptions using try, catch, and throw keywords. 223 | - Subtopics: 224 | - Basics of Exception Handling 225 | - Standard Exceptions 226 | - Custom Exceptions 227 | - Exception Propagation 228 | - Stack Unwinding 229 | 230 | - [Exception Handling - cppreference](https://en.cppreference.com/w/cpp/error/exception) 231 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=O_Nq9GV4mHY) 232 | 233 | ### STL (Standard Template Library) 234 | Learn about the Standard Template Library, including containers, iterators, algorithms, and functions. 235 | - Subtopics: 236 | - Containers (vector, list, deque, set, map, etc.) 237 | - Iterators 238 | - Algorithms (sort, search, transform, etc.) 239 | - Functors and Lambda Expressions 240 | 241 | - [STL - cppreference](https://en.cppreference.com/w/cpp/container) 242 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=_aWzGGNrcic) 243 | 244 | ### File I/O 245 | Understand how to perform input and output operations on files. 246 | - Subtopics: 247 | - File Streams (ifstream, ofstream, fstream) 248 | - Reading from and Writing to Files 249 | - File Modes 250 | - Binary File I/O 251 | 252 | - [File I/O - GeeksforGeeks](https://www.geeksforgeeks.org/file-handling-c-classes/) 253 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=SPzxHp41Lys) 254 | 255 | ### Dynamic Memory Allocation 256 | Learn about dynamic memory allocation using new and delete operators. 257 | - Subtopics: 258 | - Dynamic Allocation and Deallocation 259 | - Dynamic Arrays 260 | - Memory Leaks 261 | - Smart Pointers (unique_ptr, shared_ptr, weak_ptr) 262 | 263 | - [Dynamic Memory - cppreference](https://en.cppreference.com/w/cpp/memory) 264 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=xDVC3wKjS64) 265 | 266 | ### Bit Manipulation 267 | Understand how to perform operations at the bit level. 268 | - Subtopics: 269 | - Bitwise Operators 270 | - Bit Fields 271 | - Bit Manipulation Techniques (set, clear, toggle, check) 272 | 273 | - [Bit Manipulation - GeeksforGeeks](https://www.geeksforgeeks.org/bitwise-operators-in-c-cpp/) 274 | - [YouTube: Jenny's Lectures CS/IT NET&JRF](https://www.youtube.com/watch?v=5FsoXpCgeDI) 275 | 276 | ### Type Conversion and Casting 277 | Learn about implicit and explicit type conversions, and casting operators. 278 | - Subtopics: 279 | - Implicit Type Conversion 280 | - Explicit Type Conversion (static_cast, dynamic_cast, const_cast, reinterpret_cast) 281 | - Conversion Operators 282 | 283 | - [Type Conversion - cppreference](https://en.cppreference.com/w/cpp/language/implicit_cast) 284 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=oq8XmDFZOUw) 285 | 286 | ## Advanced 287 | 288 | ### Multithreading and Concurrency 289 | Understand how to create and manage threads, and use synchronization mechanisms. 290 | - Subtopics: 291 | - Creating and Joining Threads 292 | - Thread Synchronization (mutex, lock_guard, unique_lock) 293 | - Condition Variables 294 | - Atomic Operations 295 | - Thread Pools 296 | 297 | - [Multithreading - cppreference](https://en.cppreference.com/w/cpp/thread) 298 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=cjWnW0hdF1Y) 299 | 300 | ### Memory Management 301 | Learn about advanced memory management techniques, including smart pointers and garbage collection. 302 | - Subtopics: 303 | - Smart Pointers (unique_ptr, shared_ptr, weak_ptr) 304 | - Custom Allocators 305 | - Garbage Collection Strategies 306 | - Memory Pools 307 | 308 | - [Memory Management - cppreference](https://en.cppreference.com/w/cpp/memory) 309 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=UOB7-B2MfwA) 310 | 311 | ### Design Patterns 312 | Understand common design patterns and their implementations in C++. 313 | - Subtopics: 314 | - Creational Patterns (Singleton, Factory, Builder, Prototype) 315 | - Structural Patterns (Adapter, Composite, Proxy, Flyweight) 316 | - Behavioral Patterns (Observer, Strategy, Command, State) 317 | 318 | - [Design Patterns - GeeksforGeeks](https://www.geeksforgeeks.org/software-design-patterns/) 319 | - [YouTube: Christopher Okhravi](https://www.youtube.com/watch?v=v9ejT8FO-7I) 320 | 321 | ### Advanced STL 322 | Explore advanced uses of STL components and custom container implementations. 323 | - Subtopics: 324 | - Custom Allocators 325 | - Custom Iterators 326 | - Advanced Algorithms 327 | - Policy-Based Data Structures 328 | 329 | - [Advanced STL - cppreference](https://en.cppreference.com/w/cpp/container) 330 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=3xY1x6U2Ka0) 331 | 332 | ### Networking 333 | Learn about networking concepts and how to create network applications in C++. 334 | - Subtopics: 335 | - Sockets (TCP, UDP) 336 | - Asynchronous I/O 337 | - HTTP Protocol 338 | - REST APIs 339 | 340 | - [Networking - GeeksforGeeks](https://www.geeksforgeeks.org/socket-programming-cc/) 341 | - [YouTube: Jacob Sorber](https://www.youtube.com/watch?v=LtXEMwSG5-8) 342 | 343 | ### Boost Libraries 344 | Understand the Boost libraries and their use cases in C++ programming. 345 | - Subtopics: 346 | - Boost.Asio for Networking 347 | - Boost.Filesystem for File Operations 348 | - Boost.Thread for Multithreading 349 | - Boost.Test for Unit Testing 350 | 351 | - [Boost Libraries - Boost.org](https://www.boost.org/) 352 | - [YouTube: Boost C++ Libraries](https://www.youtube.com/watch?v=hSjhQq0iN4A) 353 | 354 | ### C++17 and C++20 Features 355 | Explore new features introduced in C++17 and C++20. 356 | - Subtopics: 357 | - C++17 Features (std::optional, std::variant, if constexpr, etc.) 358 | - C++20 Features (concepts, ranges, coroutines, etc.) 359 | - Modern C++ Programming Techniques 360 | 361 | - [C++17 Features - cppreference](https://en.cppreference.com/w/cpp/17) 362 | - [C++20 Features - cppreference](https://en.cppreference.com/w/cpp/20) 363 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=8C8N9xWr1Uk) 364 | 365 | ### Compile-Time Programming 366 | Learn about advanced compile-time programming techniques like constexpr, type traits, and metaprogramming. 367 | - Subtopics: 368 | - constexpr and consteval 369 | - Type Traits and Type Manipulation 370 | - Template Metaprogramming 371 | - SFINAE (Substitution Failure Is Not An Error) 372 | 373 | - [Compile-Time Programming - cppreference](https://en.cppreference.com/w/cpp/language/constexpr) 374 | - [YouTube: The Cherno](https://www.youtube.com/watch?v=p3KW6kG7nBo) 375 | 376 | ## Preparation for Top Companies 377 | 378 | ### Data Structures and Algorithms 379 | Master essential data structures and algorithms for coding interviews. 380 | - Subtopics: 381 | - Arrays, Linked Lists, Stacks, Queues 382 | - Trees, Graphs, Heaps 383 | - Sorting and Searching Algorithms 384 | - Dynamic Programming 385 | - Greedy Algorithms 386 | - Hashing 387 | 388 | - [Data Structures and Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/data-structures/) 389 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=RBSGKlAvoiM) 390 | 391 | ### System Design 392 | Understand the fundamentals of system design for technical interviews. 393 | - Subtopics: 394 | - High-Level Design 395 | - Low-Level Design 396 | - Scalability and Performance 397 | - Database Design 398 | - Caching Strategies 399 | - Load Balancing 400 | 401 | - [System Design - GeeksforGeeks](https://www.geeksforgeeks.org/system-design-tutorial/) 402 | - [YouTube: Gaurav Sen](https://www.youtube.com/watch?v=UzLMhqg3_Wc) 403 | 404 | ### Coding Interview Preparation 405 | Prepare for coding interviews with mock questions and solutions. 406 | - Subtopics: 407 | - Problem-Solving Techniques 408 | - Mock Interviews 409 | - Common Interview Questions 410 | - Company-Specific Interview Questions 411 | 412 | - [LeetCode](https://leetcode.com/) 413 | - [HackerRank](https://www.hackerrank.com/) 414 | - [YouTube: CS Dojo](https://www.youtube.com/watch?v=GsB8f4cylnE) 415 | 416 | ## Tools and Resources 417 | 418 | ### IDEs and Compilers 419 | Choose the right IDEs and compilers for C++ development. 420 | - Subtopics: 421 | - Visual Studio 422 | - CLion 423 | - Code::Blocks 424 | - GCC and Clang Compilers 425 | 426 | - [Visual Studio](https://visualstudio.microsoft.com/) 427 | - [CLion](https://www.jetbrains.com/clion/) 428 | - [YouTube: Visual Studio C++ Setup](https://www.youtube.com/watch?v=TLB5MY9BB4g) 429 | 430 | ### Version Control 431 | Learn about version control systems like Git for managing code. 432 | - Subtopics: 433 | - Git Basics 434 | - Branching and Merging 435 | - Pull Requests 436 | - Collaboration with GitHub 437 | 438 | - [Git Documentation](https://git-scm.com/doc) 439 | - [YouTube: Traversy Media](https://www.youtube.com/watch?v=SWYqp7iY_Tc) 440 | 441 | ### Documentation and References 442 | Use documentation and reference websites to aid your learning. 443 | - [cppreference](https://en.cppreference.com/w/) 444 | - [cplusplus.com](http://www.cplusplus.com/) 445 | - [Boost Documentation](https://www.boost.org/doc/) 446 | 447 | ### Online Platforms 448 | Enhance your skills through coding platforms and online courses. 449 | - [Coursera](https://www.coursera.org/) 450 | - [edX](https://www.edx.org/) 451 | - [Udemy](https://www.udemy.com/) 452 | - [YouTube: FreeCodeCamp](https://www.youtube.com/user/freecodecamp) 453 | 454 | Happy coding! 455 | -------------------------------------------------------------------------------- /1.3 Data-structures-and-algorithm.md: -------------------------------------------------------------------------------- 1 | # Complete Data Structures and Algorithms Learning Guide 2 | 3 | Welcome to the Complete Data Structures and Algorithms Learning Guide! This guide is designed to help you master data structures and algorithms, whether you are a beginner just starting out or an experienced developer aiming to deepen your knowledge and skills. 4 | 5 | ## Table of Contents 6 | 7 | 1. [Introduction to Data Structures and Algorithms](#introduction-to-data-structures-and-algorithms) 8 | 2. [Beginner Topics](#beginner-topics) 9 | 3. [Intermediate Topics](#intermediate-topics) 10 | 4. [Advanced Topics](#advanced-topics) 11 | 5. [Preparation for Top Companies](#preparation-for-top-companies) 12 | 6. [Tools and Resources](#tools-and-resources) 13 | 14 | --- 15 | 16 | ## Introduction to Data Structures and Algorithms 17 | 18 | Learn the basics of data structures and algorithms and their importance in computer science. 19 | - [Data Structures and Algorithms - Wikipedia](https://en.wikipedia.org/wiki/Data_structure) 20 | - [YouTube: CS Dojo](https://www.youtube.com/watch?v=HtSuA80QTyo) 21 | 22 | ## Beginner Topics 23 | 24 | ### Arrays 25 | 26 | Understand the concept of arrays and basic operations. 27 | - Subtopics: 28 | - [Array Declaration and Initialization](https://www.geeksforgeeks.org/array-data-structure/) 29 | - [Accessing Array Elements](https://www.geeksforgeeks.org/array-data-structure/) 30 | - [Insertion and Deletion in Arrays](https://www.geeksforgeeks.org/array-data-structure/) 31 | - [Searching and Sorting in Arrays](https://www.geeksforgeeks.org/array-data-structure/) 32 | 33 | - [Arrays - GeeksforGeeks](https://www.geeksforgeeks.org/array-data-structure/) 34 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=5Eibt5wH5wE) 35 | 36 | ### Linked Lists 37 | 38 | Learn about linked lists and their types. 39 | - Subtopics: 40 | - [Singly Linked Lists](https://www.geeksforgeeks.org/data-structures/linked-list/) 41 | - [Doubly Linked Lists](https://www.geeksforgeeks.org/data-structures/linked-list/) 42 | - [Circular Linked Lists](https://www.geeksforgeeks.org/data-structures/linked-list/) 43 | - [Operations on Linked Lists](https://www.geeksforgeeks.org/data-structures/linked-list/) 44 | 45 | - [Linked Lists - GeeksforGeeks](https://www.geeksforgeeks.org/data-structures/linked-list/) 46 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=WwfhLC16bis) 47 | 48 | ### Stacks and Queues 49 | 50 | Understand the concepts of stacks and queues and their applications. 51 | - Subtopics: 52 | - [Stack Implementation and Operations](https://www.geeksforgeeks.org/stack-data-structure/) 53 | - [Queue Implementation and Operations](https://www.geeksforgeeks.org/queue-data-structure/) 54 | - [Applications of Stacks and Queues](https://www.geeksforgeeks.org/applications-of-stack/) 55 | 56 | - [Stacks and Queues - GeeksforGeeks](https://www.geeksforgeeks.org/stack-data-structure/) 57 | - [YouTube: mycodeschool](https://www.youtube.com/watch?v=wjI1WNcIntg) 58 | 59 | ### Recursion 60 | 61 | Learn about recursion and recursive algorithms. 62 | - Subtopics: 63 | - [Recursive Function Calls](https://www.geeksforgeeks.org/recursion/) 64 | - [Base Cases](https://www.geeksforgeeks.org/recursion/) 65 | - [Examples of Recursive Algorithms](https://www.geeksforgeeks.org/recursion/) 66 | 67 | - [Recursion - GeeksforGeeks](https://www.geeksforgeeks.org/recursion/) 68 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=KEEKn7Me-ms) 69 | 70 | ### Sorting and Searching Algorithms 71 | 72 | Understand various sorting and searching algorithms. 73 | - Subtopics: 74 | - [Bubble Sort](https://www.geeksforgeeks.org/bubble-sort/) 75 | - [Selection Sort](https://www.geeksforgeeks.org/selection-sort/) 76 | - [Insertion Sort](https://www.geeksforgeeks.org/insertion-sort/) 77 | - [Merge Sort](https://www.geeksforgeeks.org/merge-sort/) 78 | - [Quick Sort](https://www.geeksforgeeks.org/quick-sort/) 79 | - [Binary Search](https://www.geeksforgeeks.org/binary-search/) 80 | 81 | - [Sorting Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/sorting-algorithms/) 82 | - [Searching Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/searching-algorithms/) 83 | 84 | ## Intermediate Topics 85 | 86 | ### Trees 87 | 88 | Learn about tree data structure and its types. 89 | - Subtopics: 90 | - [Binary Trees](https://www.geeksforgeeks.org/binary-tree-data-structure/) 91 | - [Binary Search Trees (BST)](https://www.geeksforgeeks.org/binary-search-tree-data-structure/) 92 | - [AVL Trees](https://www.geeksforgeeks.org/avl-tree/) 93 | - [B-Trees](https://www.geeksforgeeks.org/b-tree-set-1-introduction-2/) 94 | - [Heap and Priority Queue](https://www.geeksforgeeks.org/priority-queue-using-linked-list/) 95 | 96 | - [Trees - GeeksforGeeks](https://www.geeksforgeeks.org/binary-tree-data-structure/) 97 | - [YouTube: mycodeschool](https://www.youtube.com/watch?v=qH6yxkw0u78) 98 | 99 | ### Graphs 100 | 101 | Understand graph data structure and its representations. 102 | - Subtopics: 103 | - [Graph Traversals (DFS and BFS)](https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/) 104 | - [Minimum Spanning Trees (Prim's and Kruskal's Algorithms)](https://www.geeksforgeeks.org/kruskals-minimum-spanning-tree-algorithm-greedy-algo-2/) 105 | - [Shortest Path Algorithms (Dijkstra's Algorithm)](https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/) 106 | - [Topological Sorting](https://www.geeksforgeeks.org/topological-sorting/) 107 | 108 | - [Graphs - GeeksforGeeks](https://www.geeksforgeeks.org/graph-data-structure-and-algorithms/) 109 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=gXgEDyodOJU) 110 | 111 | ### Hashing 112 | 113 | Learn about hash tables and collision resolution techniques. 114 | - Subtopics: 115 | - [Hash Table Implementation](https://www.geeksforgeeks.org/hashing-set-1-introduction/) 116 | - [Collision Resolution Techniques](https://www.geeksforgeeks.org/hashing-set-3-open-addressing/) 117 | 118 | - [Hashing - GeeksforGeeks](https://www.geeksforgeeks.org/hashing-data-structure/) 119 | - [YouTube: mycodeschool](https://www.youtube.com/watch?v=shs0KM3wKv8) 120 | 121 | ## Advanced Topics 122 | 123 | ### Advanced Data Structures 124 | 125 | Explore advanced data structures like Trie, Segment Tree, Fenwick Tree, etc. 126 | - Subtopics: 127 | - [Trie](https://www.geeksforgeeks.org/trie-insert-and-search/) 128 | - [Segment Tree](https://www.geeksforgeeks.org/segment-tree-set-1-sum-of-given-range/) 129 | - [Fenwick Tree](https://www.geeksforgeeks.org/binary-indexed-tree-or-fenwick-tree-2/) 130 | 131 | - [Advanced Data Structures - GeeksforGeeks](https://www.geeksforgeeks.org/advanced-data-structures/) 132 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=cNnG3MpzOYc) 133 | 134 | ### Dynamic Programming 135 | 136 | Understand dynamic programming and its applications in solving complex problems. 137 | - Subtopics: 138 | - [Introduction to Dynamic Programming](https://www.geeksforgeeks.org/dynamic-programming/) 139 | - [Memoization and Tabulation](https://www.geeksforgeeks.org/tabulation-vs-memoization/) 140 | - [Common DP Problems](https://www.geeksforgeeks.org/top-20-dynamic-programming-interview-questions/) 141 | - [Advanced DP Techniques](https://www.geeksforgeeks.org/advanced-dynamic-programming/) 142 | 143 | - [Dynamic Programming - GeeksforGeeks](https://www.geeksforgeeks.org/dynamic-programming/) 144 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=cNnG3MpzOYc) 145 | 146 | ### Greedy Algorithms 147 | 148 | Learn about greedy algorithms and their applications. 149 | - Subtopics: 150 | - [Introduction to Greedy Algorithms](https://www.geeksforgeeks.org/greedy-algorithms/) 151 | - [Greedy Algorithms for Graphs](https://www.geeksforgeeks.org/greedy-algorithms-for-graphs/) 152 | - [Greedy Algorithms for Strings](https://www.geeksforgeeks.org/greedy-algorithms-for-strings/) 153 | 154 | - [Greedy Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/greedy-algorithms/) 155 | - [YouTube: mycodeschool](https://www.youtube.com/watch?v=hVl2b3bLzBw) 156 | 157 | ### String Algorithms 158 | 159 | Explore algorithms and data structures related to string manipulation. 160 | - Subtopics: 161 | - [String Searching Algorithms](https://www.geeksforgeeks.org/string-searching-algorithms/) 162 | - [String Matching Algorithms](https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/) 163 | - [Suffix Array and Suffix Tree](https://www.geeksforgeeks.org/pattern-searching-using-suffix-tree/) 164 | 165 | - [String Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/string-data-structure/) 166 | - [YouTube: Tushar Roy - Coding Made Simple](https://www.youtube.com/user/tusharroy2525) 167 | 168 | ### Advanced Graph Algorithms 169 | 170 | Explore advanced algorithms on graphs. 171 | - Subtopics: 172 | - [Strongly Connected Components (SCC)](https://www.geeksforgeeks.org/strongly-connected-components/) 173 | - [Articulation Points and Bridges](https://www.geeksforgeeks.org/articulation-points-or-cut-vertices-in-a-graph/) 174 | - [Network Flow Algorithms](https://www.geeksforgeeks.org/ford-fulkerson-algorithm-for-maximum-flow-problem/) 175 | 176 | - [Advanced Graph Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/graph-data-structure-and-algorithms/) 177 | - [YouTube: William Fiset](https://www.youtube.com/watch?v=rw4s4M3hFfs) 178 | 179 | ### Approximation Algorithms 180 | 181 | Learn about approximation algorithms for NP-hard problems. 182 | - Subtopics: 183 | - [Approximation Algorithms Introduction](https://www.geeksforgeeks.org/approximation-algorithms/) 184 | - [Greedy Approximation Algorithms](https://www.geeksforgeeks.org/greedy-approximation-algorithms/) 185 | - [Advanced Approximation Techniques](https://www.geeksforgeeks.org/advanced-approximation-techniques/) 186 | 187 | - [Approximation Algorithms - GeeksforGeeks](https://www.geeksforgeeks.org/approximation-algorithms/) 188 | - [YouTube: NPTEL IIT Kharagpur](https://www.youtube.com/watch?v=-Q2Yb4CwqvY) 189 | 190 | ### Computational Geometry 191 | 192 | Explore algorithms and data structures for geometric problems. 193 | - Subtopics: 194 | - [Convex Hull](https://www.geeksforgeeks.org/convex-hull-set-1-jarviss-algorithm-or-wrapping/) 195 | - [Closest Pair of Points](https://www.geeksforgeeks.org/closest-pair-of-points/) 196 | - [Line Intersection and Polygon Triangulation](https://www.geeksforgeeks.org/line-sweep-technique/) 197 | 198 | - [Computational Geometry - GeeksforGeeks](https://www.geeksforgeeks.org/computational-geometry-2/) 199 | - [YouTube: Abdul Bari](https://www.youtube.com/watch?v=6koH8_xHw5c) 200 | 201 | ## Preparation for Top Companies 202 | 203 | ### Competitive Programming 204 | 205 | Prepare for coding interviews and competitive programming contests. 206 | - Subtopics: 207 | - [Online Judges and Platforms](https://www.geeksforgeeks.org/best-rated-placement-preparation-courses-on-udemy/) 208 | - [Practice Problems and Contests](https://www.geeksforgeeks.org/must-do-coding-questions-for-companies-like-amazon-microsoft-adobe/) 209 | - [Mock Interviews](https://www.geeksforgeeks.org/practice-for-cracking-any-coding-interview/) 210 | 211 | - [Competitive Programming - GeeksforGeeks](https://www.geeksforgeeks.org/top-10-algorithms-in-interview-questions/) 212 | - [YouTube: Errichto](https://www.youtube.com/user/Mysteriis1) 213 | 214 | ## Tools and Resources 215 | 216 | ### Online Courses and Platforms 217 | 218 | Enroll in online courses and use platforms for practicing coding problems. 219 | - Subtopics: 220 | - [Coursera](https://www.coursera.org/) 221 | - [edX](https://www.edx.org/) 222 | - [LeetCode](https://leetcode.com/) 223 | - [Codeforces](https://codeforces.com/) 224 | 225 | - [Online Courses and Platforms - GeeksforGeeks](https://www.geeksforgeeks.org/best-rated-placement-preparation-courses-on-udemy/) 226 | - [YouTube: CS50](https://www.youtube.com/user/cs50tv) 227 | 228 | ### Books 229 | 230 | Refer to books for in-depth understanding and practice. 231 | - Subtopics: 232 | - [Introduction to Algorithms by Cormen](https://en.wikipedia.org/wiki/Introduction_to_Algorithms) 233 | - [Algorithms by Robert Sedgewick and Kevin Wayne](https://algs4.cs.princeton.edu/home/) 234 | 235 | - [Books - GeeksforGeeks](https://www.geeksforgeeks.org/must-read-books-for-placement-preparation/) 236 | - [YouTube: freeCodeCamp.org](https://www.youtube.com/watch?v=Ns4TPTC8whw) 237 | 238 | Happy learning! 239 | -------------------------------------------------------------------------------- /1.4 Data Sturctures.md: -------------------------------------------------------------------------------- 1 | # Data Structures in C++ 2 | 3 | ## 1. **Arrays** 4 | - **Properties**: 5 | - Fixed size. 6 | - Stores elements of the same type. 7 | - Contiguous memory block. 8 | - **Common Functions**: 9 | - Access elements by index: `arr[i]` 10 | - Initialization: 11 | - **Explicit Initialization**: `int arr[5] = {1, 2, 3, 4, 5};` 12 | - **Partial Initialization (Remaining Elements Default to 0)**: `int arr[5] = {1, 2}; // {1, 2, 0, 0, 0}` 13 | - **Default Initialization (All Elements Set to 0)**: `int arr[5] = {}; // {0, 0, 0, 0, 0}` 14 | - **Without Specifying Size (Size Deduced Automatically)**: `int arr[] = {1, 2, 3, 4, 5};` 15 | - **Using Loops (Runtime Initialization)**: 16 | ```cpp 17 | int arr[5]; 18 | for (int i = 0; i < 5; i++) { 19 | arr[i] = i + 1; 20 | } 21 | ``` 22 | - **Dynamic Memory Allocation (Heap Allocation)**: 23 | ```cpp 24 | int* arr = new int[5]{1, 2, 3, 4, 5}; // C++ 25 | delete[] arr; // Free memory 26 | ``` 27 | - **Using `memset` for Initialization to Zero**: 28 | ```cpp 29 | int arr[5]; 30 | memset(arr, 0, sizeof(arr)); // All elements set to 0 31 | ``` 32 | - **Common Uses**: 33 | - Storing and manipulating a fixed-size collection of elements. 34 | - Used in algorithms requiring constant-time access (e.g., sorting). 35 | 36 | 37 | --- 38 | 39 | ## 2. **Vectors (STL)** 40 | 41 | - **Properties**: 42 | - Dynamic size (automatically resizable). 43 | - Stores elements of the same type. 44 | - Contiguous memory block (like arrays). 45 | - Supports various member functions for easy manipulation. 46 | 47 | - **Common Functions**: 48 | - **Initialization**: 49 | - **Default Initialization (Empty Vector)**: 50 | ```cpp 51 | vector vec; 52 | ``` 53 | - **Explicit Initialization with Size**: 54 | ```cpp 55 | vector vec(5); // Creates a vector of size 5 with default values (0 for int). 56 | ``` 57 | - **Initialization with a Specific Value**: 58 | ```cpp 59 | vector vec(5, 10); // {10, 10, 10, 10, 10} 60 | ``` 61 | - **Initialization from an Array**: 62 | ```cpp 63 | int arr[] = {1, 2, 3, 4, 5}; 64 | vector vec(arr, arr + 5); 65 | ``` 66 | - **Using an Existing Vector (Copy Constructor)**: 67 | ```cpp 68 | vector vec1 = {1, 2, 3}; 69 | vector vec2(vec1); // Copy vec1 into vec2 70 | ``` 71 | - **Using Iterators for Range Initialization**: 72 | ```cpp 73 | vector vec1 = {1, 2, 3, 4, 5}; 74 | vector vec2(vec1.begin(), vec1.begin() + 3); // {1, 2, 3} 75 | ``` 76 | 77 | - **Standard STL Functions**: 78 | - **Accessing Elements**: 79 | ```cpp 80 | vec[i]; // Direct access 81 | vec.at(i); // Bounds-checked access 82 | vec.front(); // First element 83 | vec.back(); // Last element 84 | ``` 85 | - **Modification**: 86 | ```cpp 87 | vec.push_back(6); // Add element to the end 88 | vec.pop_back(); // Remove last element 89 | vec.insert(vec.begin() + 2, 99); // Insert 99 at index 2 90 | vec.erase(vec.begin() + 1); // Erase element at index 1 91 | vec.clear(); // Remove all elements 92 | vec.resize(10); // Resize to 10 elements 93 | ``` 94 | - **Searching & Sorting**: 95 | ```cpp 96 | sort(vec.begin(), vec.end()); // Sort in ascending order 97 | reverse(vec.begin(), vec.end()); // Reverse the vector 98 | find(vec.begin(), vec.end(), 5); // Find element 5 99 | ``` 100 | - **Other Useful Functions**: 101 | ```cpp 102 | vec.size(); // Returns current size 103 | vec.capacity(); // Returns current capacity 104 | vec.empty(); // Checks if vector is empty 105 | vec.shrink_to_fit(); // Reduces capacity to size 106 | ``` 107 | 108 | - **Common Uses**: 109 | - Dynamic arrays for flexible storage. 110 | - Used in algorithms requiring efficient insertions and deletions. 111 | - Preferred over arrays when size is not fixed. 112 | 113 | 114 | 115 | --- 116 | 117 | ## 3. **Stack (STL)** 118 | - **Properties**: 119 | - Follows **LIFO (Last In, First Out)** principle. 120 | - Elements are inserted and removed from the **top**. 121 | - No direct access to elements (only the top element is accessible). 122 | - Implemented using `std::stack` from the STL. 123 | 124 | - **Common Functions**: 125 | - **Initialization**: 126 | ```cpp 127 | stack st; // Creates an empty stack 128 | ``` 129 | - **Pushing Elements (Insert at Top)**: 130 | ```cpp 131 | st.push(10); // Stack: {10} 132 | st.push(20); // Stack: {10, 20} 133 | ``` 134 | - **Popping Elements (Remove from Top)**: 135 | ```cpp 136 | st.pop(); // Removes 20, Stack: {10} 137 | ``` 138 | - **Accessing Elements**: 139 | ```cpp 140 | st.top(); // Returns the top element (10) 141 | ``` 142 | - **Checking Size & Empty**: 143 | ```cpp 144 | st.size(); // Returns number of elements 145 | st.empty(); // Returns true if stack is empty 146 | ``` 147 | 148 | - **Implementation Using Different Containers**: 149 | ```cpp 150 | stack> st1; // Stack using vector (default) 151 | stack> st2; // Stack using deque 152 | stack> st3; // Stack using linked list 153 | 154 | - **Common Uses of Stack** 155 | - Expression Evaluation (Postfix, Prefix) 156 | - Undo/Redo Functionality in Text Editors 157 | - Recursive Function Calls (Implicit Stack) 158 | - Backtracking Algorithms (e.g., DFS) 159 | 160 | 161 | --- 162 | 163 | ## 4. **Queue (STL)** 164 | - **Properties**: 165 | - Follows **FIFO (First In, First Out)** principle. 166 | - Elements are inserted from the **back (rear)** and removed from the **front**. 167 | - Allows access only to the **front** element. 168 | - Implemented using `std::queue` from the STL. 169 | 170 | - **Common Functions**: 171 | - **Initialization**: 172 | ```cpp 173 | queue q; // Creates an empty queue 174 | ``` 175 | - **Pushing Elements (Insert at Rear)**: 176 | ```cpp 177 | q.push(10); // Queue: {10} 178 | q.push(20); // Queue: {10, 20} 179 | ``` 180 | - **Popping Elements (Remove from Front)**: 181 | ```cpp 182 | q.pop(); // Removes 10, Queue: {20} 183 | ``` 184 | - **Accessing Elements**: 185 | ```cpp 186 | q.front(); // Returns the front element (20) 187 | q.back(); // Returns the last element (20) 188 | ``` 189 | - **Checking Size & Empty**: 190 | ```cpp 191 | q.size(); // Returns number of elements 192 | q.empty(); // Returns true if queue is empty 193 | ``` 194 | 195 | - **Implementation Using Different Containers**: 196 | ```cpp 197 | queue> q1; // Queue using deque (default) 198 | queue> q2; // Queue using linked list 199 | 200 | - **Common Uses**: 201 | - CPU Scheduling & Task Scheduling 202 | - Breadth-First Search (BFS) in Graphs & Trees 203 | - Handling Requests in Web Servers 204 | - Print Job Management in OS 205 | 206 | 207 | --- 208 | 209 | ## 5. **Priority Queue (STL)** 210 | - **Properties**: 211 | - A special type of queue where elements are **processed based on priority**. 212 | - By default, it is a **max-heap** (largest element has the highest priority). 213 | - Can be customized to work as a **min-heap**. 214 | - Implemented using `std::priority_queue` from the STL. 215 | 216 | - **Common Functions**: 217 | - **Initialization**: 218 | ```cpp 219 | priority_queue pq; // Max-heap (default) 220 | priority_queue, greater> minPq; // Min-heap 221 | ``` 222 | - **Pushing Elements (Insert into Heap)**: 223 | ```cpp 224 | pq.push(30); // {30} 225 | pq.push(10); // {30, 10} 226 | pq.push(50); // {50, 30, 10} 227 | ``` 228 | - **Popping Elements (Remove Highest Priority)**: 229 | ```cpp 230 | pq.pop(); // Removes 50, pq: {30, 10} 231 | ``` 232 | - **Accessing Elements**: 233 | ```cpp 234 | pq.top(); // Returns highest priority element (30) 235 | ``` 236 | - **Checking Size & Empty**: 237 | ```cpp 238 | pq.size(); // Returns number of elements 239 | pq.empty(); // Returns true if queue is empty 240 | ``` 241 | 242 | - **Implementation Using Different Orders**: 243 | ```cpp 244 | priority_queue maxPq; // Max-heap (default) 245 | priority_queue, greater> minPq; // Min-heap 246 | 247 | - **Common Uses**: 248 | - Dijkstra's Algorithm (Shortest Path) 249 | - Job Scheduling with Higher-Priority Tasks First 250 | - Huffman Coding (Data Compression) 251 | - A* Search Algorithm (Pathfinding) 252 | - Process Scheduling in Operating Systems 253 | 254 | 255 | --- 256 | 257 | 258 | ## 6. **Heap (STL)** 259 | - **Properties**: 260 | - A **complete binary tree** used for implementing **priority queues**. 261 | - Supports two types: 262 | - **Max-Heap**: The largest element is at the root. 263 | - **Min-Heap**: The smallest element is at the root. 264 | - Implemented using **`std::priority_queue`** or **`make_heap`** functions in STL. 265 | 266 | - **Common Functions**: 267 | - **Creating a Heap from an Array**: 268 | ```cpp 269 | vector v = {10, 20, 5, 30}; 270 | make_heap(v.begin(), v.end()); // Converts into max-heap 271 | ``` 272 | - **Pushing Elements (Insert into Heap)**: 273 | ```cpp 274 | v.push_back(50); 275 | push_heap(v.begin(), v.end()); // Reorders to maintain heap 276 | ``` 277 | - **Popping Elements (Remove Highest Priority)**: 278 | ```cpp 279 | pop_heap(v.begin(), v.end()); 280 | v.pop_back(); // Removes the top element 281 | ``` 282 | - **Sorting a Heap**: 283 | ```cpp 284 | sort_heap(v.begin(), v.end()); // Converts heap into sorted array 285 | ``` 286 | - **Using Priority Queue (Alternative)**: 287 | ```cpp 288 | priority_queue maxHeap; // Max-heap (default) 289 | priority_queue, greater> minHeap; // Min-heap 290 | ``` 291 | 292 | - **Implementing Heap**: 293 | - ```cpp 294 | #include 295 | #include 296 | using namespace std; 297 | 298 | class MinHeap { 299 | vector heap; 300 | 301 | void heapifyUp(int index) { 302 | int parent = (index - 1) / 2; 303 | while (index > 0 && heap[index] < heap[parent]) { 304 | swap(heap[index], heap[parent]); 305 | index = parent; 306 | parent = (index - 1) / 2; 307 | } 308 | } 309 | 310 | void heapifyDown(int index) { 311 | int left = 2 * index + 1; 312 | int right = 2 * index + 2; 313 | int smallest = index; 314 | 315 | if (left < heap.size() && heap[left] < heap[smallest]) 316 | smallest = left; 317 | if (right < heap.size() && heap[right] < heap[smallest]) 318 | smallest = right; 319 | 320 | if (smallest != index) { 321 | swap(heap[index], heap[smallest]); 322 | heapifyDown(smallest); 323 | } 324 | } 325 | 326 | public: 327 | void insert(int val) { 328 | heap.push_back(val); 329 | heapifyUp(heap.size() - 1); 330 | } 331 | 332 | void removeMin() { 333 | if (heap.empty()) return; 334 | heap[0] = heap.back(); 335 | heap.pop_back(); 336 | heapifyDown(0); 337 | } 338 | 339 | int getMin() { 340 | return heap.empty() ? -1 : heap[0]; 341 | } 342 | 343 | void printHeap() { 344 | for (int num : heap) cout << num << " "; 345 | cout << endl; 346 | } 347 | }; 348 | 349 | int main() { 350 | MinHeap h; 351 | h.insert(10); 352 | h.insert(20); 353 | h.insert(30); 354 | h.insert(40); 355 | h.insert(50); 356 | h.insert(5); 357 | 358 | h.printHeap(); // Output: 5 20 10 40 50 30 359 | 360 | h.removeMin(); 361 | h.printHeap(); // Output: 10 20 30 40 50 362 | 363 | cout << "Min: " << h.getMin() << endl; // Output: Min: 10 364 | } 365 | 366 | ``` 367 | 368 | - **Common Uses**: 369 | - **Heap Sort Algorithm** 370 | - **Dijkstra's Algorithm (Shortest Path)** 371 | - **Priority Scheduling in Operating Systems** 372 | - **Merging K Sorted Arrays** 373 | - **Finding K Largest or Smallest Elements** 374 | 375 | --- 376 | 377 | ## 7. **Deque (STL)** 378 | - **Properties**: 379 | - Short for **Double-Ended Queue**. 380 | - Allows insertion and deletion from **both ends** in **O(1) time**. 381 | - Dynamically resizable (unlike `vector`, it doesn't require contiguous memory). 382 | - Implemented using `std::deque` in C++. 383 | 384 | - **Common Functions**: 385 | - **Initialization**: 386 | ```cpp 387 | deque dq; // Empty deque 388 | deque dq2(5, 10); // {10, 10, 10, 10, 10} 389 | ``` 390 | - **Pushing & Popping Elements**: 391 | ```cpp 392 | dq.push_back(1); // {1} 393 | dq.push_front(2); // {2, 1} 394 | 395 | dq.pop_back(); // {2} 396 | dq.pop_front(); // {} (empty) 397 | ``` 398 | - **Accessing Elements**: 399 | ```cpp 400 | int first = dq.front(); // First element 401 | int last = dq.back(); // Last element 402 | int value = dq[1]; // Access by index 403 | ``` 404 | - **Inserting & Erasing**: 405 | ```cpp 406 | dq.insert(dq.begin() + 1, 5); // Insert 5 at index 1 407 | dq.erase(dq.begin()); // Erase first element 408 | ``` 409 | - **Checking Size & Empty**: 410 | ```cpp 411 | int size = dq.size(); // Returns number of elements 412 | bool isEmpty = dq.empty(); // Returns true if empty 413 | ``` 414 | - **Clearing Deque**: 415 | ```cpp 416 | dq.clear(); // Removes all elements 417 | ``` 418 | 419 | - **Common Uses**: 420 | - **Sliding Window Maximum (Deque Optimization)** 421 | - **Implementing Stack & Queue Efficiently** 422 | - **Handling Large Sequences of Input Efficiently** 423 | - **Cache Implementation (Least Recently Used - LRU)** 424 | - **Storing Browser History for Quick Back/Forward Navigation** 425 | 426 | --- 427 | 428 | ## **8. String (STL)** 429 | - **Properties**: 430 | - A sequence of characters stored in contiguous memory. 431 | - Mutable and dynamically resizable. 432 | - Supports various operations like concatenation, comparison, and searching. 433 | - Implemented using `std::string` in C++. 434 | 435 | - **Common Functions**: 436 | - **Initialization**: 437 | ```cpp 438 | string s1 = "Hello"; // Direct assignment 439 | string s2("World"); // Constructor initialization 440 | string s3(5, 'A'); // Creates "AAAAA" 441 | ``` 442 | - **Concatenation**: 443 | ```cpp 444 | string s1 = "Hello"; 445 | string s2 = " World"; 446 | string s3 = s1 + s2; // "Hello World" 447 | ``` 448 | - **Accessing Characters**: 449 | ```cpp 450 | char ch = s1[0]; // 'H' 451 | char ch2 = s1.at(1); // 'e' 452 | ``` 453 | - **Appending & Inserting**: 454 | ```cpp 455 | s1.append(" Everyone"); // "Hello Everyone" 456 | s1.insert(5, " Beautiful"); // "Hello Beautiful Everyone" 457 | ``` 458 | - **Erasing & Clearing**: 459 | ```cpp 460 | s1.erase(5, 10); // Removes 10 characters from index 5 461 | s1.clear(); // Removes all characters 462 | ``` 463 | - **Finding Substrings**: 464 | ```cpp 465 | size_t pos = s1.find("World"); // Returns index of substring 466 | string sub = s1.substr(0, 5); // Extracts first 5 characters 467 | ``` 468 | - **Comparison**: 469 | ```cpp 470 | if (s1 == s2) { ... } // Checks equality 471 | if (s1 < s2) { ... } // Lexicographical comparison 472 | ``` 473 | - **Converting String to Number**: 474 | ```cpp 475 | int num = stoi("123"); // Converts to integer 476 | float fnum = stof("3.14"); // Converts to float 477 | ``` 478 | - **Converting Number to String**: 479 | ```cpp 480 | string numStr = to_string(42); // "42" 481 | ``` 482 | - **Reversing a String**: 483 | ```cpp 484 | reverse(s1.begin(), s1.end()); // Reverses the string 485 | ``` 486 | 487 | - **Common Uses**: 488 | - **Text Processing and Manipulation** 489 | - **Parsing Input and Tokenization** 490 | - **String Matching Algorithms (KMP, Rabin-Karp)** 491 | - **Generating and Storing Usernames or Passwords** 492 | - **Manipulating File Paths and URLs** 493 | 494 | --- 495 | 496 | ## 9. **Maps (`std::map`)** 497 | 498 | - **Properties**: 499 | - A container that stores **key-value pairs** where **keys are unique and sorted**. 500 | - Implemented using a **self-balancing binary search tree (Red-Black Tree)**. 501 | - Provides **logarithmic time complexity** for insertions, deletions, and lookups. 502 | 503 | - **Common Functions**: 504 | - **Insertion**: 505 | ```cpp 506 | map m; 507 | m.insert({1, "Alice"}); // Inserts key-value pair {1, "Alice"} 508 | m[2] = "Bob"; // Another way to insert {2, "Bob"} 509 | ``` 510 | - **Erasing Elements**: 511 | ```cpp 512 | m.erase(1); // Removes key 1 and its associated value 513 | ``` 514 | - **Finding Elements**: 515 | ```cpp 516 | auto it = m.find(2); // Returns iterator to key 2, or m.end() if not found 517 | ``` 518 | - **Accessing Elements**: 519 | ```cpp 520 | cout << m[2]; // Prints "Bob" 521 | ``` 522 | - **Checking Membership**: 523 | ```cpp 524 | if (m.count(2)) { // Returns 1 if key exists, 0 otherwise 525 | cout << "Found"; 526 | } 527 | ``` 528 | - **Size and Emptiness**: 529 | ```cpp 530 | m.size(); // Returns number of elements 531 | m.empty(); // Returns true if map is empty 532 | ``` 533 | - **Traversing a Map**: 534 | ```cpp 535 | for (const auto &pair : m) { 536 | cout << pair.first << ": " << pair.second << "\n"; 537 | } 538 | ``` 539 | 540 | - **Common Uses**: 541 | - **Storing Key-Value Pairs** 542 | - **Implementing Associative Arrays** 543 | - **Counting Occurrences of Items** 544 | - **Efficient Lookups with Ordered Keys** 545 | 546 | --- 547 | 548 | ## **10. Unordered Maps (`std::unordered_map`)** 549 | 550 | ### **Properties:** 551 | - A key-value data structure implemented using **hash tables**. 552 | - Provides **average O(1) time complexity** for insertions, deletions, and lookups. 553 | - Keys are **unique**, and duplicate keys are not allowed. 554 | - The **order of elements is not maintained** (unlike `std::map`, which sorts elements by key). 555 | - Uses **hashing** to store and retrieve elements efficiently. 556 | 557 | ### **Common Functions:** 558 | 559 | #### **Initialization:** 560 | ```cpp 561 | #include 562 | #include 563 | using namespace std; 564 | 565 | unordered_map umap; // Empty unordered_map 566 | unordered_map umap = {{1, "One"}, {2, "Two"}, {3, "Three"}}; 567 | ``` 568 | 569 | #### **Inserting Elements:** 570 | ```cpp 571 | umap.insert({4, "Four"}); // Inserts key-value pair 572 | umap[5] = "Five"; // Direct assignment (creates if not present) 573 | ``` 574 | 575 | #### **Accessing Elements:** 576 | ```cpp 577 | cout << umap[2]; // Access value for key 2 578 | cout << umap.at(3); // Access value for key 3 (throws exception if key not found) 579 | ``` 580 | 581 | #### **Checking for a Key:** 582 | ```cpp 583 | if (umap.find(1) != umap.end()) { 584 | cout << "Key 1 found!"; 585 | } 586 | ``` 587 | 588 | #### **Erasing Elements:** 589 | ```cpp 590 | umap.erase(2); // Removes key-value pair with key 2 591 | ``` 592 | 593 | #### **Iterating Over Elements:** 594 | ```cpp 595 | for (auto& pair : umap) { 596 | cout << pair.first << " -> " << pair.second << endl; 597 | } 598 | ``` 599 | 600 | #### **Finding Size:** 601 | ```cpp 602 | cout << umap.size(); // Returns number of key-value pairs 603 | ``` 604 | 605 | #### **Clearing All Elements:** 606 | ```cpp 607 | umap.clear(); // Removes all elements 608 | ``` 609 | 610 | #### **Checking If Empty:** 611 | ```cpp 612 | if (umap.empty()) { 613 | cout << "Unordered map is empty"; 614 | } 615 | ``` 616 | 617 | ### **Common Uses:** 618 | - **Fast Lookup and Storage of Key-Value Pairs** 619 | - Example: **Caching**, **counting word occurrences**, **storing configurations**. 620 | - **Implementing Hash-Based Data Structures** 621 | - Example: **Graph adjacency list**, **frequency counting**. 622 | - **When Ordering of Elements is Not Required** 623 | - If ordering matters, `std::map` should be used instead. 624 | 625 | --- 626 | 627 | ## 11. **Sets (`std::set`)** 628 | 629 | - **Properties**: 630 | - A container that stores unique elements in **sorted order**. 631 | - Implemented using a **self-balancing binary search tree (Red-Black Tree)**. 632 | - Provides **logarithmic time complexity** for insertions, deletions, and lookups. 633 | 634 | - **Common Functions**: 635 | - **Insertion**: 636 | ```cpp 637 | set s; 638 | s.insert(10); // Inserts 10 639 | s.insert(20); // Inserts 20 640 | s.insert(10); // No effect (10 is already present) 641 | ``` 642 | - **Erasing Elements**: 643 | ```cpp 644 | s.erase(10); // Removes element 10 645 | ``` 646 | - **Finding Elements**: 647 | ```cpp 648 | auto it = s.find(20); // Returns iterator to 20, or s.end() if not found 649 | ``` 650 | - **Checking Membership**: 651 | ```cpp 652 | if (s.count(10)) { // Returns 1 if found, 0 otherwise 653 | cout << "Found"; 654 | } 655 | ``` 656 | - **Size and Emptiness**: 657 | ```cpp 658 | s.size(); // Returns number of elements 659 | s.empty(); // Returns true if set is empty 660 | ``` 661 | - **Traversing a Set**: 662 | ```cpp 663 | for (int x : s) { 664 | cout << x << " "; 665 | } 666 | ``` 667 | 668 | - **Common Uses**: 669 | - **Storing Unique Elements in Sorted Order** 670 | - **Efficient Membership Testing** 671 | - **Removing Duplicates from Data** 672 | - **Implementing Ordered Collections** 673 | 674 | --- 675 | 676 | ## **12. Unordered Set (`std::unordered_set`)** 677 | 678 | ### **Properties:** 679 | - A container that stores **unique elements** with no specific order. 680 | - Implemented using **hash tables**, providing **average O(1) time complexity** for insertions, deletions, and lookups. 681 | - **No duplicate values** are allowed. 682 | - Elements are not stored in any particular order. 683 | 684 | ### **Common Functions:** 685 | 686 | #### **Initialization:** 687 | ```cpp 688 | #include 689 | #include 690 | using namespace std; 691 | 692 | unordered_set uset; // Empty unordered_set 693 | unordered_set uset = {1, 2, 3, 4, 5}; 694 | ``` 695 | 696 | #### **Inserting Elements:** 697 | ```cpp 698 | uset.insert(6); // Inserts an element 699 | ``` 700 | 701 | #### **Checking for an Element:** 702 | ```cpp 703 | if (uset.find(3) != uset.end()) { 704 | cout << "Element 3 found!"; 705 | } 706 | ``` 707 | 708 | #### **Erasing Elements:** 709 | ```cpp 710 | uset.erase(2); // Removes element 2 711 | ``` 712 | 713 | #### **Counting Elements:** 714 | ```cpp 715 | cout << uset.count(4); // Returns 1 if element exists, otherwise 0 716 | ``` 717 | 718 | #### **Iterating Over Elements:** 719 | ```cpp 720 | for (int val : uset) { 721 | cout << val << " "; 722 | } 723 | ``` 724 | 725 | #### **Finding Size:** 726 | ```cpp 727 | cout << uset.size(); // Returns number of elements 728 | ``` 729 | 730 | #### **Clearing All Elements:** 731 | ```cpp 732 | uset.clear(); // Removes all elements 733 | ``` 734 | 735 | #### **Checking If Empty:** 736 | ```cpp 737 | if (uset.empty()) { 738 | cout << "Unordered set is empty"; 739 | } 740 | ``` 741 | 742 | ### **Common Uses:** 743 | - **Fast Membership Testing** 744 | - Example: **Checking if an element exists in a dataset**. 745 | - **Eliminating Duplicates** 746 | - Example: **Removing duplicate values from an array**. 747 | - **Efficient Storage When Order is Irrelevant** 748 | - Example: **Tracking unique values in a collection**. 749 | 750 | --- 751 | This markdown document includes a brief description, common functions, and uses for each of the 12 data structures in C++. Feel free to customize it further as per your requirements. 752 | -------------------------------------------------------------------------------- /2.1 HTML.md: -------------------------------------------------------------------------------- 1 | # Complete HTML Learning Guide 2 | 3 | Welcome to the Complete HTML Learning Guide! Whether you're just starting your journey in web development or looking to enhance your skills in HTML, this comprehensive guide is designed to help you master HTML from beginner to advanced levels. 4 | 5 | ## Introduction 6 | 7 | HTML (HyperText Markup Language) is the standard markup language for creating web pages and web applications. It provides the structure and content of a webpage by using a system of tags and attributes. Understanding HTML is essential for anyone looking to build websites or work with web technologies. 8 | 9 | This guide is structured to cater to learners at different levels of proficiency. It covers a wide range of topics, starting from the basics of HTML for beginners, moving on to intermediate concepts, and delving into advanced techniques for seasoned developers. Each section provides a brief overview of the topic, along with links to free resources for further learning. 10 | 11 | ## Table of Contents 12 | 13 | 1. [Beginner](#beginner) 14 | - [Introduction to HTML](#introduction-to-html) 15 | - [HTML Document Structure](#html-document-structure) 16 | - [HTML Elements and Tags](#html-elements-and-tags) 17 | - [Text Formatting](#text-formatting) 18 | - [Links and Anchor Tags](#links-and-anchor-tags) 19 | - [Images and Image Tags](#images-and-image-tags) 20 | - [Lists](#lists) 21 | - [Tables](#tables) 22 | - [Forms](#forms) 23 | - [Semantic HTML](#semantic-html) 24 | 25 | 2. [Intermediate](#intermediate) 26 | - [HTML5 Features](#html5-features) 27 | - [Media Elements](#media-elements) 28 | - [HTML Forms - Advanced](#html-forms---advanced) 29 | - [Accessibility in HTML](#accessibility-in-html) 30 | - [HTML Metadata](#html-metadata) 31 | - [Inline vs Block Elements](#inline-vs-block-elements) 32 | - [HTML Layouts](#html-layouts) 33 | - [Responsive Web Design with HTML](#responsive-web-design-with-html) 34 | 35 | 3. [Advanced](#advanced) 36 | - [HTML5 APIs](#html5-apis) 37 | - [Web Components](#web-components) 38 | - [Microdata and Semantic Web](#microdata-and-semantic-web) 39 | - [HTML Preprocessors](#html-preprocessors) 40 | - [HTML Templating](#html-templating) 41 | - [Progressive Web Apps (PWAs)](#progressive-web-apps-pwas) 42 | - [SEO Optimization with HTML](#seo-optimization-with-html) 43 | - [HTML Email Markup](#html-email-markup) 44 | - [Browser Compatibility](#browser-compatibility) 45 | - [Web Performance Optimization](#web-performance-optimization) 46 | 47 | ## Beginner 48 | 49 | ### Introduction to HTML 50 | HTML (HyperText Markup Language) is the standard markup language for creating web pages and web applications. It provides the structure and content of a webpage by using a system of tags and attributes. 51 | 52 | - **Free Resource:** 53 | - [W3Schools HTML Tutorial](https://www.w3schools.com/html/) 54 | - [MDN Web Docs: HTML Basics](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics) 55 | 56 | ### HTML Document Structure 57 | Every HTML document follows a basic structure, including elements such as ``, ``, and ``. Understanding the document structure is crucial for building web pages. 58 | 59 | - **Free Resource:** 60 | - [HTML Document Structure - W3Schools](https://www.w3schools.com/html/html_basic.asp) 61 | - [MDN Web Docs: Introduction to HTML](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML) 62 | 63 | ### HTML Elements and Tags 64 | HTML elements are the building blocks of web pages, represented by tags. Tags define the structure and content of the document. 65 | 66 | - **Free Resource:** 67 | - [HTML Elements - W3Schools](https://www.w3schools.com/html/html_elements.asp) 68 | - [MDN Web Docs: HTML Elements Reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Element) 69 | 70 | ### Text Formatting 71 | HTML provides various tags for formatting text, including headings, paragraphs, bold, italic, and more. 72 | 73 | - **Free Resource:** 74 | - [Text Formatting in HTML - Tutorialspoint](https://www.tutorialspoint.com/html/html_text_formatting.htm) 75 | - [MDN Web Docs: HTML Text Fundamentals](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals) 76 | 77 | ### Links and Anchor Tags 78 | Links are used to navigate between web pages. HTML provides the `` (anchor) tag for creating links. 79 | 80 | - **Free Resource:** 81 | - [HTML Links - W3Schools](https://www.w3schools.com/html/html_links.asp) 82 | - [MDN Web Docs: HTML Links](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a) 83 | 84 | ### Images and Image Tags 85 | Images are essential for enhancing the visual appeal of web pages. HTML uses the `` tag to embed images. 86 | 87 | - **Free Resource:** 88 | - [HTML Images - W3Schools](https://www.w3schools.com/html/html_images.asp) 89 | - [MDN Web Docs: HTML Images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML) 90 | 91 | ### Lists 92 | HTML offers various types of lists, including ordered lists (`
    `), unordered lists (`
      `), and definition lists (`
      `). 93 | 94 | - **Free Resource:** 95 | - [HTML Lists - W3Schools](https://www.w3schools.com/html/html_lists.asp) 96 | - [MDN Web Docs: HTML Lists](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul) 97 | 98 | ### Tables 99 | Tables are used to display data in rows and columns. HTML provides the `` tag for creating tables. 100 | 101 | - **Free Resource:** 102 | - [HTML Tables - W3Schools](https://www.w3schools.com/html/html_tables.asp) 103 | - [MDN Web Docs: HTML Tables](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table) 104 | 105 | ### Forms 106 | HTML forms are used to collect user input. Forms consist of input elements such as text fields, checkboxes, radio buttons, and buttons. 107 | 108 | - **Free Resource:** 109 | - [HTML Forms - W3Schools](https://www.w3schools.com/html/html_forms.asp) 110 | - [MDN Web Docs: HTML Forms](https://developer.mozilla.org/en-US/docs/Learn/Forms/HTML5_forms) 111 | 112 | ### Semantic HTML 113 | Semantic HTML refers to using HTML tags that convey meaning to both the browser and the developer. It improves accessibility and SEO. 114 | 115 | - **Free Resource:** 116 | - [Semantic HTML - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Glossary/Semantics#semantic_html) 117 | - [MDN Web Docs: HTML Semantic Elements](https://developer.mozilla.org/en-US/docs/Glossary/Semantics#semantic_html) 118 | 119 | ## Intermediate 120 | 121 | ### HTML5 Features 122 | HTML5 introduced several new features and APIs, including semantic elements, canvas, audio/video, geolocation, local storage, and more. 123 | 124 | - **Free Resource:** 125 | - [HTML5 Introduction - W3Schools](https://www.w3schools.com/html/html5_intro.asp) 126 | - [MDN Web Docs: HTML5](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5) 127 | 128 | ### Media Elements 129 | HTML provides tags for embedding media elements such as audio and video into web pages. 130 | 131 | - **Free Resource:** 132 | - [HTML Multimedia - W3Schools](https://www.w3schools.com/html/html_media.asp) 133 | - [MDN Web Docs: HTML Audio/Video](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video) 134 | 135 | ### HTML Forms - Advanced 136 | Advanced form techniques in HTML include form validation, custom input types, and using JavaScript for form manipulation. 137 | 138 | - **Free Resource:** 139 | - [HTML Form Validation - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation) 140 | - [Advanced Forms - W3Schools](https://www.w3schools.com/html/html_forms_advanced.asp) 141 | 142 | ### Accessibility in HTML 143 | Creating accessible web content using semantic HTML, ARIA roles, and attributes to ensure compatibility with assistive technologies. 144 | 145 | - **Free Resource:** 146 | - [Web Accessibility Basics - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Learn/Accessibility) 147 | - [WebAIM: Introduction to Web Accessibility](https://webaim.org/intro/) 148 | 149 | ### HTML Metadata 150 | Understanding and utilizing HTML metadata elements such as ``, ``, and `` for enhancing webpage functionality. 151 | 152 | - **Free Resource:** 153 | - [HTML Metadata - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta) 154 | - [HTML Meta Tags - W3Schools](https://www.w3schools.com/html/html_head.asp) 155 | 156 | ### Inline vs Block Elements 157 | Distinguishing between inline and block-level elements in HTML and their respective rendering behaviors. 158 | 159 | - **Free Resource:** 160 | - [Inline vs Block Elements - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements) 161 | - [Inline vs Block Elements - W3Schools](https://www.w3schools.com/html/html_blocks.asp) 162 | 163 | ### HTML Layouts 164 | Creating responsive and flexible webpage layouts using HTML elements and CSS techniques like Flexbox and Grid. 165 | 166 | - **Free Resource:** 167 | - [HTML Layouts - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout) 168 | - [CSS Layout - W3Schools](https://www.w3schools.com/css/css_layout.asp) 169 | 170 | ### Responsive Web Design with HTML 171 | Implementing responsive design principles using HTML techniques like media queries, viewport meta tag, and flexible images. 172 | 173 | - **Free Resource:** 174 | - [Responsive Web Design Basics - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design) 175 | - [Responsive Web Design - W3Schools](https://www.w3schools.com/css/css_rwd_intro.asp) 176 | 177 | ## Advanced 178 | 179 | ### HTML5 APIs 180 | Exploring advanced HTML5 APIs such as Web Workers, Web Storage, WebRTC, Web Sockets, and more for building interactive web applications. 181 | 182 | - **Free Resource:** 183 | - [HTML5 APIs - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Guide/API) 184 | 185 | ### Web Components 186 | Understanding the concept of Web Components and utilizing technologies like Custom Elements, Shadow DOM, and HTML Templates. 187 | 188 | - **Free Resource:** 189 | - [Web Components - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Web_Components) 190 | 191 | ### Microdata and Semantic Web 192 | Implementing microdata markup in HTML to provide context and meaning to web content for search engines and other applications. 193 | 194 | - **Free Resource:** 195 | - [Microdata - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/HTML/Microdata) 196 | - [Schema.org - Getting Started](https://schema.org/docs/gs.html) 197 | 198 | ### HTML Preprocessors 199 | Using HTML preprocessors like Pug (formerly Jade) or Haml to write HTML in a more concise and maintainable way. 200 | 201 | - **Free Resource:** 202 | - [Pug - Template Engine](https://pugjs.org/api/getting-started.html) 203 | - [Haml - HTML Abstraction Markup Language](http://haml.info/) 204 | 205 | ### HTML Templating 206 | Leveraging HTML templating engines like Mustache, Handlebars, or Nunjucks for dynamic content generation. 207 | 208 | - **Free Resource:** 209 | - [Mustache - Logic-less Templates](https://mustache.github.io/) 210 | - [Handlebars - Minimal Templating on Steroids](https://handlebarsjs.com/) 211 | - [Nunjucks - A Rich and Powerful Templating Engine](https://mozilla.github.io/nunjucks/templating.html) 212 | 213 | ### Progressive Web Apps (PWAs) 214 | Building Progressive Web Apps (PWAs) using HTML, CSS, and JavaScript to deliver native app-like experiences on the web. 215 | 216 | - **Free Resource:** 217 | - [Progressive Web Apps - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) 218 | 219 | ### SEO Optimization with HTML 220 | Optimizing HTML markup for search engines by implementing SEO best practices like meta tags, structured data, and semantic HTML. 221 | 222 | - **Free Resource:** 223 | - [SEO Starter Guide - Google](https://support.google.com/webmasters/answer/7451184) 224 | - [SEO for HTML - Moz](https://moz.com/learn/seo/on-page-factors) 225 | 226 | ### HTML Email Markup 227 | Creating HTML emails that render consistently across email clients, utilizing tables, inline styles, and email-specific HTML attributes. 228 | 229 | - **Free Resource:** 230 | - [HTML Email Basics - Mailchimp](https://mailchimp.com/resources/html-email-basics/) 231 | - [HTML Email Templates - SendGrid](https://sendgrid.com/docs/ui/sending-email/getting-started-html-emails/) 232 | 233 | ### Browser Compatibility 234 | Dealing with cross-browser compatibility issues in HTML by using polyfills, feature detection, and progressive enhancement strategies. 235 | 236 | - **Free Resource:** 237 | - [Can I Use - Browser Compatibility Tables](https://caniuse.com/) 238 | - [Cross-Browser Testing Tools - LambdaTest](https://www.lambdatest.com/) 239 | 240 | ### Web Performance Optimization 241 | Optimizing HTML, CSS, and JavaScript for faster loading times, reduced page weight, and improved user experience. 242 | 243 | - **Free Resource:** 244 | - [Web Performance Optimization - Google Developers](https://developers.google.com/web/fundamentals/performance) 245 | - [Web Page Test - Website Performance and Optimization Test](https://www.webpagetest.org/) 246 | 247 | -------------------------------------------------------------------------------- /2.1.1 seo-optimised.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <!-- Insert your title here --> 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 55 | 56 | 57 |
      58 |

      59 |
      60 |
      61 |
      62 |

      About Me

      63 |

      64 |
      65 |
      66 |

      Projects

      67 |
      68 |

      69 |

      70 |
      71 |
      72 |

      73 |

      74 |
      75 |
      76 |
      77 |

      Contact

      78 |

      79 |
      80 |
      81 |
      82 |

      © . All rights reserved.

      83 |
      84 | 85 | 86 | -------------------------------------------------------------------------------- /2.2 CSS.md: -------------------------------------------------------------------------------- 1 | # Complete CSS Learning Guide 2 | 3 | Welcome to the Complete CSS Learning Guide! Whether you're a beginner getting started with styling web pages or an experienced developer looking to master advanced CSS techniques, this comprehensive guide is designed to help you navigate the world of Cascading Style Sheets (CSS) from beginner to advanced levels. 4 | 5 | ## Introduction 6 | 7 | CSS (Cascading Style Sheets) is a style sheet language used for describing the presentation of a document written in HTML. It defines how HTML elements are to be displayed on the screen, in print, or spoken by an assistive technology. Understanding CSS is essential for creating visually appealing and responsive web pages. 8 | 9 | This guide is structured to cater to learners at different levels of proficiency. It covers a wide range of topics, starting from the basics of CSS for beginners, moving on to intermediate concepts, and delving into advanced techniques for seasoned developers. Each section provides a brief overview of the topic, along with links to free resources for further learning. 10 | 11 | ## Table of Contents 12 | 13 | 1. [Beginner](#beginner) 14 | - [Introduction to CSS](#introduction-to-css) 15 | - [CSS Syntax and Selectors](#css-syntax-and-selectors) 16 | - [CSS Box Model](#css-box-model) 17 | - [CSS Colors and Backgrounds](#css-colors-and-backgrounds) 18 | - [CSS Typography](#css-typography) 19 | - [CSS Layout Basics](#css-layout-basics) 20 | - [CSS Flexbox](#css-flexbox) 21 | - [CSS Grid](#css-grid) 22 | - [Responsive Design with CSS](#responsive-design-with-css) 23 | 24 | 2. [Intermediate](#intermediate) 25 | - [Advanced Selectors](#advanced-selectors) 26 | - [CSS Specificity](#css-specificity) 27 | - [CSS Transitions](#css-transitions) 28 | - [CSS Animations](#css-animations) 29 | - [CSS Transformations](#css-transformations) 30 | - [CSS Positioning](#css-positioning) 31 | - [CSS Variables](#css-variables) 32 | - [CSS Preprocessors](#css-preprocessors) 33 | 34 | 3. [Advanced](#advanced) 35 | - [CSS Architecture](#css-architecture) 36 | - [CSS Methodologies](#css-methodologies) 37 | - [CSS-in-JS](#css-in-js) 38 | - [Responsive Design Patterns](#responsive-design-patterns) 39 | - [Modern CSS Layout Techniques](#modern-css-layout-techniques) 40 | - [CSS Custom Properties (CSS Variables)](#css-custom-properties-css-variables) 41 | - [CSS Grid Frameworks](#css-grid-frameworks) 42 | - [CSS Animation Libraries](#css-animation-libraries) 43 | - [CSS Performance Optimization](#css-performance-optimization) 44 | - [CSS Tooling and Build Processes](#css-tooling-and-build-processes) 45 | 46 | ## Beginner 47 | 48 | ### Introduction to CSS 49 | CSS (Cascading Style Sheets) is a style sheet language used for describing the presentation of a document written in HTML. It defines how HTML elements are to be displayed on the screen, in print, or spoken by an assistive technology. 50 | 51 | - **Free Resource:** 52 | - [MDN Web Docs: CSS Basics](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics) 53 | - [CSS Introduction - W3Schools](https://www.w3schools.com/css/css_intro.asp) 54 | 55 | ### CSS Syntax and Selectors 56 | Understanding CSS syntax and various selectors to target HTML elements for styling. 57 | 58 | - **Free Resource:** 59 | - [MDN Web Docs: CSS Syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/Syntax) 60 | - [CSS Selectors - CSS-Tricks](https://css-tricks.com/how-css-selectors-work/) 61 | 62 | ### CSS Box Model 63 | Understanding the CSS box model, including margin, border, padding, and content. 64 | 65 | - **Free Resource:** 66 | - [MDN Web Docs: The box model](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model) 67 | - [CSS Box Model - W3Schools](https://www.w3schools.com/css/css_boxmodel.asp) 68 | 69 | ### CSS Colors and Backgrounds 70 | Exploring different ways to specify colors and backgrounds in CSS. 71 | 72 | - **Free Resource:** 73 | - [MDN Web Docs: Using color](https://developer.mozilla.org/en-US/docs/Web/CSS/color) 74 | - [CSS Colors - CSS-Tricks](https://css-tricks.com/almanac/properties/c/color/) 75 | 76 | ### CSS Typography 77 | Styling text content using CSS properties such as font-family, font-size, font-weight, and text-align. 78 | 79 | - **Free Resource:** 80 | - [MDN Web Docs: Typography](https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_text/Typography) 81 | - [CSS Typography - CSS-Tricks](https://css-tricks.com/almanac/properties/f/font/) 82 | 83 | ### CSS Layout Basics 84 | Introduction to basic CSS layout techniques using display, position, and float properties. 85 | 86 | - **Free Resource:** 87 | - [MDN Web Docs: Introduction to CSS layout](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Introduction) 88 | - [CSS Layout - W3Schools](https://www.w3schools.com/css/css_layout.asp) 89 | 90 | ### CSS Flexbox 91 | Understanding CSS Flexbox for building flexible layouts with ease. 92 | 93 | - **Free Resource:** 94 | - [MDN Web Docs: Flexbox](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) 95 | - [CSS Flexbox - CSS-Tricks](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) 96 | 97 | ### CSS Grid 98 | Introduction to CSS Grid layout for creating grid-based layouts. 99 | 100 | - **Free Resource:** 101 | - [MDN Web Docs: CSS Grid Layout](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids) 102 | - [CSS Grid - CSS-Tricks](https://css-tricks.com/snippets/css/complete-guide-grid/) 103 | 104 | ## Intermediate 105 | 106 | ### Advanced Selectors 107 | Exploring advanced CSS selectors like attribute selectors, pseudo-classes, and pseudo-elements. 108 | 109 | - **Free Resource:** 110 | - [MDN Web Docs: Advanced Selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) 111 | - [CSS Selectors Level 4 - W3C](https://www.w3.org/TR/selectors-4/) 112 | 113 | ### CSS Specificity 114 | Understanding CSS specificity and how it determines which styles apply to an element. 115 | 116 | - **Free Resource:** 117 | - [MDN Web Docs: Specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) 118 | - [Understanding CSS Specificity - CSS-Tricks](https://css-tricks.com/specifics-on-css-specificity/) 119 | 120 | ### CSS Transitions 121 | Using CSS transitions to add smooth animations to elements when changing property values. 122 | 123 | - **Free Resource:** 124 | - [MDN Web Docs: CSS Transitions](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions) 125 | - [CSS Transition - CSS-Tricks](https://css-tricks.com/almanac/properties/t/transition/) 126 | 127 | ### CSS Animations 128 | Creating complex animations using CSS keyframes and animation properties. 129 | 130 | - **Free Resource:** 131 | - [MDN Web Docs: CSS Animations](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations) 132 | - [CSS Animations - CSS-Tricks](https://css-tricks.com/almanac/properties/a/animation/) 133 | 134 | ### CSS Transformations 135 | Using CSS transformations to rotate, scale, skew, and translate elements in 2D and 3D space. 136 | 137 | - **Free Resource:** 138 | - [MDN Web Docs: CSS Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transforms) 139 | - [CSS Transform - CSS-Tricks](https://css-tricks.com/almanac/properties/t/transform/) 140 | 141 | ### CSS Positioning 142 | Mastering CSS positioning techniques, including relative, absolute, fixed, and sticky positioning. 143 | 144 | - **Free Resource:** 145 | - [MDN Web Docs: CSS Positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/position) 146 | - [CSS Positioning - CSS-Tricks](https://css-tricks.com/almanac/properties/p/position/) 147 | 148 | ### CSS Variables 149 | Using CSS custom properties (variables) for more dynamic and maintainable stylesheets. 150 | 151 | - **Free Resource:** 152 | - [MDN Web Docs: CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) 153 | - [CSS Variables - CSS-Tricks](https://css-tricks.com/difference-between-types-of-css-variables/) 154 | 155 | ### CSS Preprocessors 156 | Exploring CSS preprocessors like Sass, Less, and Stylus for enhancing CSS authoring capabilities. 157 | 158 | - **Free Resource:** 159 | - [Sass: Syntactically Awesome Style Sheets](https://sass-lang.com/) 160 | - [Less: Leaner Style Sheets](http://lesscss.org/) 161 | - [Stylus: Expressive, robust, feature-rich CSS language](http://stylus-lang.com/) 162 | 163 | ## Advanced 164 | 165 | ### CSS Architecture 166 | Developing scalable and maintainable CSS architectures using methodologies like BEM, SMACSS, and Atomic CSS. 167 | 168 | - **Free Resource:** 169 | - [BEM Methodology](https://en.bem.info/methodology/) 170 | - [SMACSS - Scalable and Modular Architecture for CSS](https://smacss.com/) 171 | - [Atomic CSS - What, How, and Why](https://atomicdesign.bradfrost.com/chapter-3/) 172 | 173 | ### CSS Methodologies 174 | Understanding various CSS methodologies for writing clean, efficient, and modular stylesheets. 175 | 176 | - **Free Resource:** 177 | - [CSS Guidelines](https://cssguidelin.es/) 178 | - [Idiomatic CSS](https://github.com/necolas/idiomatic-css) 179 | 180 | ### CSS-in-JS 181 | Exploring CSS-in-JS solutions like styled-components, Emotion, and CSS Modules for encapsulating CSS within JavaScript. 182 | 183 | - **Free Resource:** 184 | - [Styled Components](https://styled-components.com/) 185 | - [Emotion](https://emotion.sh/) 186 | - [CSS Modules](https://github.com/css-modules/css-modules) 187 | 188 | ### Responsive Design Patterns 189 | Implementing advanced responsive design patterns using media queries, viewport units, and device-specific styles. 190 | 191 | - **Free Resource:** 192 | - [Responsive Web Design Patterns](https://responsivedesign.is/patterns/) 193 | - [Responsive Patterns - CodePen](https://codepen.io/patterns/) 194 | 195 | ### Modern CSS Layout Techniques 196 | Exploring modern CSS layout techniques like CSS Grid, Flexbox, and Multi-column Layout for complex webpage layouts. 197 | 198 | - **Free Resource:** 199 | - [CSS Grid Garden](https://cssgridgarden.com/) 200 | - [A Complete Guide to Grid - CSS-Tricks](https://css-tricks.com/snippets/css/complete-guide-grid/) 201 | 202 | ### CSS Custom Properties (CSS Variables) 203 | Leveraging CSS custom properties (variables) for more dynamic and maintainable stylesheets. 204 | 205 | - **Free Resource:** 206 | - [CSS Variables - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) 207 | - [CSS Custom Properties - CSS-Tricks](https://css-tricks.com/difference-between-types-of-css-variables/) 208 | 209 | ### CSS Grid Frameworks 210 | Exploring CSS grid frameworks like Bootstrap, Foundation, and Bulma for rapid prototyping and layout consistency. 211 | 212 | - **Free Resource:** 213 | - [Bootstrap](https://getbootstrap.com/) 214 | - [Foundation](https://get.foundation/) 215 | - [Bulma](https://bulma.io/) 216 | 217 | ### CSS Animation Libraries 218 | Using CSS animation libraries like Animate.css and Hover.css for pre-built animation effects. 219 | 220 | - **Free Resource:** 221 | - [Animate.css](https://animate.style/) 222 | - [Hover.css](https://ianlunn.github.io/Hover/) 223 | 224 | ### CSS Performance Optimization 225 | Optimizing CSS for performance by reducing file size, minimizing rendering time, and improving page load speed. 226 | 227 | - **Free Resource:** 228 | - [Optimizing CSS Performance - Google Developers](https://developers.google.com/web/fundamentals/performance/rendering/optimize-css-loading) 229 | - [CSS Optimization Tips - CSS-Tricks](https://css-tricks.com/efficiently-rendering-css/) 230 | 231 | ### CSS Tooling and Build Processes 232 | Using CSS preprocessors, post-processors, and build tools like Sass, Less, Autoprefixer, and PostCSS for optimizing CSS workflows. 233 | 234 | - **Free Resource:** 235 | - [Sass](https://sass-lang.com/) 236 | - [Less](http://lesscss.org/) 237 | - [Autoprefixer](https://github.com/postcss/autoprefixer) 238 | - [PostCSS](https://postcss.org/) 239 | -------------------------------------------------------------------------------- /2.3 JavaScript.md: -------------------------------------------------------------------------------- 1 | # Complete JavaScript Learning Guide 2 | 3 | Welcome to the Complete JavaScript Learning Guide! Whether you're just starting your journey in programming or looking to enhance your skills in JavaScript, this comprehensive guide is designed to help you master JavaScript from beginner to advanced levels. 4 | 5 | ## Introduction 6 | 7 | JavaScript is a versatile programming language commonly used for web development. It is essential for creating dynamic and interactive web pages, building web applications, and even server-side development with platforms like Node.js. 8 | 9 | This guide is structured to cater to learners at different levels of proficiency. It covers a wide range of topics, starting from the basics of JavaScript for beginners, moving on to intermediate concepts, and delving into advanced techniques for seasoned developers. Each section provides a brief overview of the topic, along with links to free resources for further learning. 10 | 11 | ## Table of Contents 12 | 13 | 1. [Beginner](#beginner) 14 | - [Introduction to JavaScript](#introduction-to-javascript) 15 | - [Variables and Data Types](#variables-and-data-types) 16 | - [Operators](#operators) 17 | - [Control Flow](#control-flow) 18 | - [Functions](#functions) 19 | - [Arrays](#arrays) 20 | - [Objects](#objects) 21 | - [DOM Manipulation](#dom-manipulation) 22 | - [Events](#events) 23 | - [Introduction to ES6](#introduction-to-es6) 24 | 25 | 2. [Intermediate](#intermediate) 26 | - [Scope and Closures](#scope-and-closures) 27 | - [Prototypes and Inheritance](#prototypes-and-inheritance) 28 | - [Asynchronous JavaScript](#asynchronous-javascript) 29 | - [Promises](#promises) 30 | - [Async/Await](#asyncawait) 31 | - [Modules in JavaScript](#modules-in-javascript) 32 | - [Error Handling](#error-handling) 33 | - [Regular Expressions](#regular-expressions) 34 | - [Functional Programming](#functional-programming) 35 | 36 | 3. [Advanced](#advanced) 37 | - [Advanced DOM Manipulation](#advanced-dom-manipulation) 38 | - [Browser APIs](#browser-apis) 39 | - [Web Storage](#web-storage) 40 | - [HTTP Requests](#http-requests) 41 | - [Authentication and Authorization](#authentication-and-authorization) 42 | - [Testing in JavaScript](#testing-in-javascript) 43 | - [Performance Optimization](#performance-optimization) 44 | - [Design Patterns](#design-patterns) 45 | - [TypeScript](#typescript) 46 | - [JavaScript Frameworks](#javascript-frameworks) 47 | - [Server-Side JavaScript](#server-side-javascript) 48 | 49 | ## Beginner 50 | 51 | ### Introduction to JavaScript 52 | JavaScript is a programming language used to create interactive effects within web browsers. It enables dynamic content and functionality on web pages. 53 | 54 | - **Free Resource:** 55 | - [MDN Web Docs: JavaScript Basics](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics) 56 | - [JavaScript Tutorial - W3Schools](https://www.w3schools.com/js/DEFAULT.asp) 57 | 58 | ### Variables and Data Types 59 | Understanding variables, data types (such as numbers, strings, and booleans), and variable declaration in JavaScript. 60 | 61 | - **Free Resource:** 62 | - [MDN Web Docs: JavaScript Data Structures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures) 63 | - [Variables in JavaScript - JavaScript.info](https://javascript.info/variables) 64 | 65 | ### Operators 66 | Exploring arithmetic, assignment, comparison, logical, and other operators used in JavaScript. 67 | 68 | - **Free Resource:** 69 | - [MDN Web Docs: Expressions and Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators) 70 | - [Operators - JavaScript.info](https://javascript.info/operators) 71 | 72 | ### Control Flow 73 | Using conditional statements (if, else if, else) and loops (for, while) to control the flow of execution in JavaScript. 74 | 75 | - **Free Resource:** 76 | - [MDN Web Docs: Control Flow](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling) 77 | - [Conditional Statements - JavaScript.info](https://javascript.info/ifelse) 78 | 79 | ### Functions 80 | Defining and invoking functions, function parameters, return statements, and function expressions in JavaScript. 81 | 82 | - **Free Resource:** 83 | - [MDN Web Docs: Functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions) 84 | - [Functions - JavaScript.info](https://javascript.info/function-basics) 85 | 86 | ### Arrays 87 | Working with arrays, array methods (e.g., push, pop, shift, unshift), and array iteration methods (e.g., forEach, map, filter) in JavaScript. 88 | 89 | - **Free Resource:** 90 | - [MDN Web Docs: Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) 91 | - [Arrays - JavaScript.info](https://javascript.info/array) 92 | 93 | ### Objects 94 | Understanding objects, object properties, methods, object literals, and object-oriented programming concepts in JavaScript. 95 | 96 | - **Free Resource:** 97 | - [MDN Web Docs: Objects and Object-oriented programming](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects) 98 | - [Objects - JavaScript.info](https://javascript.info/object) 99 | 100 | ### DOM Manipulation 101 | Manipulating the Document Object Model (DOM) to interact with HTML elements and dynamically update web pages using JavaScript. 102 | 103 | - **Free Resource:** 104 | - [MDN Web Docs: Introduction to the DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction) 105 | - [Manipulating Documents - JavaScript.info](https://javascript.info/modifying-document) 106 | 107 | ### Events 108 | Handling user interactions and browser events (e.g., click, submit, keypress) using event listeners in JavaScript. 109 | 110 | - **Free Resource:** 111 | - [MDN Web Docs: Introduction to events](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events) 112 | - [Events - JavaScript.info](https://javascript.info/events) 113 | 114 | ### Introduction to ES6 115 | Introduction to ES6 (ECMAScript 2015) features such as let and const, arrow functions, template literals, and spread/rest operators. 116 | 117 | - **Free Resource:** 118 | - [ES6 Features - W3Schools](https://www.w3schools.com/js/js_es6.asp) 119 | - [Introduction to ES6 - JavaScript.info](https://javascript.info/es6) 120 | 121 | ## Intermediate 122 | 123 | ### Scope and Closures 124 | Understanding scope, lexical scope, closures, and how they affect variable access in JavaScript. 125 | 126 | - **Free Resource:** 127 | - [MDN Web Docs: Closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) 128 | - [Scope and Closures - JavaScript.info](https://javascript.info/closure) 129 | 130 | ### Prototypes and Inheritance 131 | Exploring prototypes, prototype chains, inheritance, and object-oriented programming concepts in JavaScript. 132 | 133 | - **Free Resource:** 134 | - [MDN Web Docs: Inheritance and the prototype chain](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) 135 | - [Prototypes - JavaScript.info](https://javascript.info/prototype-inheritance) 136 | 137 | ### Asynchronous JavaScript 138 | Understanding the asynchronous nature of JavaScript, event loop, and non-blocking I/O operations. 139 | 140 | - **Free Resource:** 141 | - [MDN Web Docs: Concurrency model and Event Loop](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop) 142 | - [Asynchronous JavaScript - JavaScript.info](https://javascript.info/async) 143 | 144 | ### Promises 145 | Using promises for asynchronous programming, handling asynchronous operations, and chaining promises. 146 | 147 | - **Free Resource:** 148 | - [MDN Web Docs: Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) 149 | - [Promises - JavaScript.info](https://javascript.info/promise-basics) 150 | 151 | ### Async/Await 152 | Simplifying asynchronous code with async functions and await keyword for handling promises. 153 | 154 | - **Free Resource:** 155 | - [MDN Web Docs: async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) 156 | - [Async/Await - JavaScript.info](https://javascript.info/async-await) 157 | 158 | ### Modules in JavaScript 159 | Understanding JavaScript modules, import/export syntax, and module bundlers like Webpack. 160 | 161 | - **Free Resource:** 162 | - [MDN Web Docs: JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) 163 | - [Modules - JavaScript.info](https://javascript.info/modules-intro) 164 | 165 | ### Error Handling 166 | Handling errors and exceptions in JavaScript using try...catch statements and error objects. 167 | 168 | - **Free Resource:** 169 | - [MDN Web Docs: Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) 170 | - [Error handling - JavaScript.info](https://javascript.info/try-catch) 171 | 172 | ### Regular Expressions 173 | Working with regular expressions (regex) for pattern matching and text manipulation in JavaScript. 174 | 175 | - **Free Resource:** 176 | - [MDN Web Docs: Regular Expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) 177 | - [Regular Expressions - JavaScript.info](https://javascript.info/regexp) 178 | 179 | ### Functional Programming 180 | Exploring functional programming concepts in JavaScript, including higher-order functions, map, filter, and reduce. 181 | 182 | - **Free Resource:** 183 | - [Functional Programming - W3Schools](https://www.w3schools.com/js/js_functional.asp) 184 | - [Functional Programming - JavaScript.info](https://javascript.info/function-basics) 185 | 186 | ## Advanced 187 | 188 | ### Advanced DOM Manipulation 189 | Advanced techniques for manipulating the DOM, optimizing performance, and working with complex UI interactions. 190 | 191 | - **Free Resource:** 192 | - [Advanced DOM Manipulation Techniques - SitePoint](https://www.sitepoint.com/dom-manipulation-vanilla-javascript-no-jquery/) 193 | - [DOM Manipulation Beyond jQuery - CSS-Tricks](https://css-tricks.com/dom/) 194 | 195 | ### Browser APIs 196 | Exploring various browser APIs like Web Storage, Geolocation, Notifications, and WebRTC for building powerful web applications. 197 | 198 | - **Free Resource:** 199 | - [MDN Web Docs: Web APIs](https://developer.mozilla.org/en-US/docs/Web/API) 200 | - [HTML5 APIs - W3Schools](https://www.w3schools.com/html/html5_webstorage.asp) 201 | 202 | ### Web Storage 203 | Using Web Storage APIs (localStorage and sessionStorage) to store data locally in the browser. 204 | 205 | - **Free Resource:** 206 | - [MDN Web Docs: Web Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API) 207 | - [Using the Web Storage API - JavaScript.info](https://javascript.info/localstorage) 208 | 209 | ### HTTP Requests 210 | Making HTTP requests using the Fetch API or XMLHttpRequest to communicate with servers and retrieve data. 211 | 212 | - **Free Resource:** 213 | - [MDN Web Docs: Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) 214 | - [Making HTTP Requests - JavaScript.info](https://javascript.info/fetch) 215 | 216 | ### Authentication and Authorization 217 | Implementing authentication and authorization mechanisms in JavaScript applications, including JWT (JSON Web Tokens) and OAuth. 218 | 219 | - **Free Resource:** 220 | - [JWT.io](https://jwt.io/) 221 | - [OAuth.net](https://oauth.net/) 222 | 223 | ### Testing in JavaScript 224 | Testing JavaScript code using frameworks like Jest, Mocha, and Jasmine, and understanding testing methodologies. 225 | 226 | - **Free Resource:** 227 | - [Jest - JavaScript Testing Framework](https://jestjs.io/) 228 | - [Mocha - JavaScript Test Framework](https://mochajs.org/) 229 | - [Jasmine - Behavior-Driven JavaScript](https://jasmine.github.io/) 230 | 231 | ### Performance Optimization 232 | Optimizing JavaScript code for performance, including techniques for minimizing render-blocking resources, lazy loading, and code splitting. 233 | 234 | - **Free Resource:** 235 | - [Optimizing JavaScript Performance - Google Developers](https://developers.google.com/web/fundamentals/performance/rendering) 236 | - [JavaScript Performance Optimization - Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Learn/Performance/Optimization) 237 | 238 | ### Design Patterns 239 | Understanding and implementing design patterns like MVC, MVP, MVVM, and others in JavaScript applications. 240 | 241 | - **Free Resource:** 242 | - [JavaScript Design Patterns - Addy Osmani](https://addyosmani.com/resources/essentialjsdesignpatterns/book/) 243 | - [Design Patterns in JavaScript - SitePoint](https://www.sitepoint.com/javascript-design-patterns/) 244 | 245 | ### TypeScript 246 | Learning TypeScript, a statically typed superset of JavaScript, for building large-scale applications. 247 | 248 | - **Free Resource:** 249 | - [TypeScript Documentation](https://www.typescriptlang.org/docs/) 250 | - [TypeScript for JavaScript Programmers - TypeScriptlang.org](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) 251 | 252 | ### JavaScript Frameworks 253 | Exploring advanced concepts in popular JavaScript frameworks like React, Angular, Vue.js, and others. 254 | 255 | - **Free Resource:** 256 | - [React Documentation](https://reactjs.org/docs/getting-started.html) 257 | - [Angular Documentation](https://angular.io/docs) 258 | - [Vue.js Documentation](https://vuejs.org/v2/guide/) 259 | 260 | ### Server-Side JavaScript 261 | Using Node.js and other server-side JavaScript frameworks like Express.js for building scalable and efficient server-side applications. 262 | 263 | - **Free Resource:** 264 | - [Node.js Documentation](https://nodejs.org/en/docs/) 265 | - [Express.js Documentation](https://expressjs.com/) 266 | -------------------------------------------------------------------------------- /2.4 React.md: -------------------------------------------------------------------------------- 1 | # Complete React.js Learning Guide 2 | 3 | Welcome to the Complete React.js Learning Guide! Whether you're a beginner looking to get started with React.js or an experienced developer aiming to delve deeper into advanced topics and best practices, this comprehensive guide is designed to help you navigate the world of React.js development. 4 | 5 | ## Introduction 6 | 7 | React.js has emerged as one of the most popular JavaScript libraries for building user interfaces, offering a declarative and component-based approach to front-end development. With its efficient rendering, reusable components, and robust ecosystem, React.js empowers developers to create interactive and scalable web applications with ease. 8 | 9 | This guide is structured to cater to learners at all levels, from beginners taking their first steps in React.js to seasoned developers seeking to master advanced concepts and techniques. Each section provides an overview of a key topic in React.js development, accompanied by explanations, code examples, and links to further resources for in-depth learning. 10 | 11 | ## Table of Contents 12 | 13 | 1. [JSX (JavaScript XML)](#jsx-javascript-xml) 14 | 2. [Components](#components) 15 | 3. [Props (Properties)](#props-properties) 16 | 4. [State](#state) 17 | 5. [Events and Event Handling](#events-and-event-handling) 18 | 6. [Conditional Rendering](#conditional-rendering) 19 | 7. [Lists and Keys](#lists-and-keys) 20 | 8. [Forms and Controlled Components](#forms-and-controlled-components) 21 | 9. [Basic Styling](#basic-styling) 22 | 10. [Intermediate Topics](#intermediate) 23 | - [Component Lifecycle Methods](#component-lifecycle-methods) 24 | - [Hooks](#hooks) 25 | - [Context API](#context-api) 26 | - [React Router](#react-router) 27 | - [Higher-Order Components (HOCs)](#higher-order-components-hocs) 28 | - [Render Props](#render-props) 29 | - [Portals](#portals) 30 | - [Error Boundaries](#error-boundaries) 31 | - [Refs and the DOM](#refs-and-the-dom) 32 | - [PropTypes for Type Checking](#proptypes-for-type-checking) 33 | - [Fragments](#fragments) 34 | 11. [Advanced Topics](#advanced) 35 | - [Code Splitting and Lazy Loading](#code-splitting-and-lazy-loading) 36 | - [Server-Side Rendering (SSR)](#server-side-rendering-ssr) 37 | - [Static Site Generation (SSG)](#static-site-generation-ssg) 38 | - [Next.js Framework](#nextjs-framework) 39 | - [Gatsby Framework](#gatsby-framework) 40 | - [State Management Libraries](#state-management-libraries) 41 | - [Performance Optimization](#performance-optimization) 42 | - [Custom Hooks](#custom-hooks) 43 | - [Concurrent Mode (Experimental)](#concurrent-mode-experimental) 44 | - [React Suspense](#react-suspense) 45 | - [React Profiler](#react-profiler) 46 | - [React Testing](#react-testing) 47 | - [GraphQL with React](#graphql-with-react) 48 | - [TypeScript with React](#typescript-with-react) 49 | - [Internationalization (i18n)](#internationalization-i18n) 50 | - [Accessibility (a11y)](#accessibility-a11y) 51 | - [Static Type Checking with TypeScript](#static-type-checking-with-typescript) 52 | - [Animation Libraries](#animation-libraries) 53 | - [Advanced Patterns](#advanced-patterns) 54 | - [Integrating with Other Libraries](#integrating-with-other-libraries) 55 | - [Deployment](#deployment) 56 | 12. [Tools and Ecosystem](#tools-and-ecosystem) 57 | - [Create React App (CRA)](#create-react-app-cra) 58 | - [React Developer Tools](#react-developer-tools) 59 | - [Storybook for UI Component Development](#storybook-for-ui-component-development) 60 | - [ESLint and Prettier for Code Quality](#eslint-and-prettier-for-code-quality) 61 | - [Webpack and Babel](#webpack-and-babel) 62 | 63 | # React.js Learning Guide 64 | 65 | ## Beginner 66 | 67 | ### JSX (JavaScript XML) 68 | JSX is a syntax extension for JavaScript that looks similar to XML or HTML. 69 | - [Official Documentation](https://react.dev/learn/writing-markup-with-jsx) 70 | 71 | ### Components 72 | Reusable pieces of code that define how a part of the UI should look and behave. 73 | - **Functional Components**: Components defined as functions. 74 | - [Functional Components](https://react.dev/learn/your-first-component) 75 | - **Class Components**: Components defined as ES6 classes. 76 | - [Class Components](https://react.dev/reference/react/Component) 77 | 78 | ### Props (Properties) 79 | Read-only attributes passed from parent to child components. 80 | - [Props](https://react.dev/learn/passing-props-to-a-component) 81 | 82 | ### State 83 | Built-in object that stores data that changes over the lifetime of the component. 84 | - **useState Hook**: Allows adding state to functional components. 85 | - [useState Hook](https://react.dev/reference/react/useState) 86 | 87 | ### Events and Event Handling 88 | Handling events such as clicks, form submissions, etc. 89 | - [Handling Events](https://react.dev/learn/responding-to-events) 90 | 91 | ### Conditional Rendering 92 | Rendering different components or elements based on conditions. 93 | - [Conditional Rendering](https://react.dev/learn/conditional-rendering) 94 | 95 | ### Lists and Keys 96 | Rendering lists of data and using keys for efficient updates. 97 | - [Lists and Keys](https://react.dev/learn/rendering-lists) 98 | 99 | ### Forms and Controlled Components 100 | Handling form inputs and managing form state. 101 | - [Forms](https://react.dev/learn/updating-objects-in-state) 102 | 103 | ### Basic Styling 104 | Applying styles to components. 105 | - **Inline Styles** 106 | - [Inline Styles](https://react.dev/reference/react-dom/components/common#style) 107 | - **CSS Modules** 108 | - [CSS Modules](https://create-react-app.dev/docs/adding-a-css-modules-stylesheet/) 109 | 110 | ## Intermediate 111 | 112 | ### Component Lifecycle Methods 113 | Special methods in class components for running code at specific points in a component’s lifecycle. 114 | - [Lifecycle Methods](https://react.dev/reference/react/Component#the-component-lifecycle) 115 | 116 | ### Hooks 117 | Functions that let you use state and other React features in functional components. 118 | - **useEffect** 119 | - [useEffect](https://react.dev/reference/react/useEffect) 120 | - **useContext** 121 | - [useContext](https://react.dev/reference/react/useContext) 122 | - **useReducer** 123 | - [useReducer](https://react.dev/reference/react/useReducer) 124 | - **useRef** 125 | - [useRef](https://react.dev/reference/react/useRef) 126 | - **useMemo** 127 | - [useMemo](https://react.dev/reference/react/useMemo) 128 | - **useCallback** 129 | - [useCallback](https://react.dev/reference/react/useCallback) 130 | 131 | ### Context API 132 | Allows sharing data across multiple components without passing props manually. 133 | - [Context API](https://react.dev/reference/react/createContext) 134 | 135 | ### React Router 136 | Library for routing in React applications. 137 | - [React Router](https://reactrouter.com/) 138 | 139 | ### Higher-Order Components (HOCs) 140 | Functions that take a component and return a new component. 141 | - [HOCs](https://react.dev/learn/reusing-logic-with-higher-order-components) 142 | 143 | ### Render Props 144 | Technique for sharing code between components using a prop whose value is a function. 145 | - [Render Props](https://react.dev/learn/render-props) 146 | 147 | ### Portals 148 | Rendering children into a DOM node outside the parent component. 149 | - [Portals](https://react.dev/reference/react-dom/createPortal) 150 | 151 | ### Error Boundaries 152 | Components that catch JavaScript errors anywhere in their child component tree. 153 | - [Error Boundaries](https://react.dev/learn/error-boundaries) 154 | 155 | ### Refs and the DOM 156 | Accessing DOM nodes or React elements created in the render method. 157 | - [Refs and the DOM](https://react.dev/reference/react/useRef#refs-and-the-dom) 158 | 159 | ### PropTypes for Type Checking 160 | Typechecking for props in components. 161 | - [PropTypes](https://react.dev/reference/react/PropTypes) 162 | 163 | ### Fragments 164 | Allows grouping of a list of children without adding extra nodes to the DOM. 165 | - [Fragments](https://react.dev/reference/react/Fragment) 166 | 167 | ## Advanced 168 | 169 | ### Code Splitting and Lazy Loading 170 | Splitting code into smaller bundles and loading them on demand. 171 | - [Code Splitting](https://react.dev/learn/code-splitting) 172 | 173 | ### Server-Side Rendering (SSR) 174 | Rendering React components on the server. 175 | - [SSR](https://react.dev/reference/react-dom/server) 176 | 177 | ### Static Site Generation (SSG) 178 | Generating static HTML files during build time. 179 | - [SSG](https://nextjs.org/docs/basic-features/pages#static-generation) 180 | 181 | ### Next.js Framework 182 | Framework for server-side rendering and generating static websites. 183 | - [Next.js](https://nextjs.org/) 184 | 185 | ### Gatsby Framework 186 | Static site generator for React. 187 | - [Gatsby](https://www.gatsbyjs.com/) 188 | 189 | ### State Management Libraries 190 | Managing state in larger applications. 191 | - **Redux** 192 | - [Redux](https://redux.js.org/) 193 | - **MobX** 194 | - [MobX](https://mobx.js.org/) 195 | - **Zustand** 196 | - [Zustand](https://zustand.surge.sh/) 197 | 198 | ### Performance Optimization 199 | Improving performance of React applications. 200 | - **Memoization** 201 | - [Memoization](https://react.dev/reference/react/useMemo) 202 | - **React.memo** 203 | - [React.memo](https://react.dev/reference/react/memo) 204 | - **useMemo** 205 | - [useMemo](https://react.dev/reference/react/useMemo) 206 | - **useCallback** 207 | - [useCallback](https://react.dev/reference/react/useCallback) 208 | 209 | ### Custom Hooks 210 | Creating custom hooks to reuse stateful logic. 211 | - [Custom Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) 212 | 213 | ### Concurrent Mode (Experimental) 214 | Improving user experience by rendering updates in a non-blocking way. 215 | - [Concurrent Mode](https://react.dev/learn/concurrent-ui-patterns) 216 | 217 | ### React Suspense 218 | For loading components asynchronously. 219 | - [Suspense](https://react.dev/reference/react/Suspense) 220 | 221 | ### React Profiler 222 | Tool for measuring performance of React applications. 223 | - [Profiler](https://react.dev/reference/react/Profiler) 224 | 225 | ### React Testing 226 | Testing React components. 227 | - **Jest** 228 | - [Jest](https://jestjs.io/) 229 | - **React Testing Library** 230 | - [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) 231 | 232 | ### GraphQL with React 233 | Using GraphQL for data fetching in React. 234 | - **Apollo Client** 235 | - [Apollo Client](https://www.apollographql.com/docs/react/) 236 | 237 | ### TypeScript with React 238 | Using TypeScript for type safety in React applications. 239 | - [TypeScript with React](https://react.dev/learn/typescript-integration) 240 | 241 | ### Internationalization (i18n) 242 | Adding internationalization support to React applications. 243 | - [React Intl](https://formatjs.io/docs/react-intl/) 244 | 245 | ### Accessibility (a11y) 246 | Ensuring React applications are accessible. 247 | - [Accessibility](https://react.dev/learn/accessibility) 248 | 249 | ### Static Type Checking with TypeScript 250 | Using TypeScript for static type checking in React. 251 | - [TypeScript](https://www.typescriptlang.org/) 252 | 253 | ### Animation Libraries 254 | Adding animations to React applications. 255 | - **Framer Motion** 256 | - [Framer Motion](https://www.framer.com/motion/) 257 | - **React Spring** 258 | - [React Spring](https://www.react-spring.io/) 259 | 260 | ### Advanced Patterns 261 | Using advanced patterns in React development. 262 | - **Compound Components** 263 | - [Compound Components](https://kentcdodds.com/blog/compound-components-with-react-hooks) 264 | - **Render Props** 265 | - [Render Props](https://react.dev/learn/render-props) 266 | - **Controlled vs Uncontrolled Components** 267 | - [Controlled vs Uncontrolled Components](https://react.dev/learn/uncontrolled-and-controlled-components) 268 | 269 | ### Integrating with Other Libraries 270 | Using other libraries in React applications. 271 | - **D3.js for Data Visualization** 272 | - [D3.js](https://d3js.org/) 273 | - **Three.js for 3D Graphics** 274 | - [Three.js](https://threejs.org/) 275 | 276 | ### Deployment 277 | Deploying React applications. 278 | - **Vercel** 279 | - [Vercel](https://vercel.com/) 280 | - **Netlify** 281 | - [Netlify](https://www.netlify.com/) 282 | - **AWS Amplify** 283 | - [AWS Amplify](https://aws.amazon.com/amplify/) 284 | 285 | ## Tools and Ecosystem 286 | 287 | ### Create React App (CRA) 288 | CLI tool to set up a new React project with a standard configuration. 289 | - [Create React App](https://react.dev/reference/react/create-a-new-react-app) 290 | 291 | ### React Developer Tools 292 | Browser extension for inspecting React components. 293 | - [React Developer Tools](https://react.dev/learn/react-developer-tools) 294 | 295 | ### Storybook for UI Component Development 296 | Tool for developing and testing UI components in isolation. 297 | - [Storybook](https://storybook.js.org/) 298 | 299 | ### ESLint and Prettier for Code Quality 300 | Tools for maintaining code quality and formatting. 301 | - **ESLint** 302 | - [ESLint](https://eslint.org/) 303 | - **Prettier** 304 | - [Prettier](https://prettier.io/) 305 | 306 | ### Webpack and Babel 307 | Tools for module bundling and JavaScript transpiling. 308 | - **Webpack** 309 | - [Webpack](https://webpack.js.org/) 310 | - **Babel** 311 | - [Babel](https://babeljs.io/) 312 | -------------------------------------------------------------------------------- /2.5 NodeJs.md: -------------------------------------------------------------------------------- 1 | 2 | # Complete Node.js Learning Guide 3 | 4 | Welcome to the Complete Node.js Learning Guide! Whether you're a beginner looking to get started with Node.js or an experienced developer aiming to delve deeper into advanced topics and best practices, this comprehensive guide is designed to help you navigate the world of Node.js development. 5 | 6 | ## Introduction 7 | 8 | Node.js has revolutionized server-side development with its event-driven, non-blocking I/O model, enabling the creation of scalable and high-performance applications. Leveraging JavaScript, it offers developers the ability to write server-side code using the same language as client-side development, streamlining the development process. 9 | 10 | This guide is structured to cater to learners at all levels, from beginners taking their first steps in Node.js to seasoned developers seeking to master advanced concepts and techniques. Each section provides an overview of a key topic in Node.js development, accompanied by explanations, code examples, and links to further resources for in-depth learning. 11 | 12 | ## Table of Contents 13 | 14 | 1. [Introduction to Node.js](#introduction-to-nodejs) 15 | 2. [Setting Up Node.js](#setting-up-nodejs) 16 | 3. [Basic Concepts](#basic-concepts) 17 | - [Modules](#modules) 18 | - [File System](#file-system) 19 | - [HTTP Module](#http-module) 20 | - [NPM (Node Package Manager)](#npm-node-package-manager) 21 | 4. [Intermediate Topics](#intermediate-topics) 22 | - [Express.js](#expressjs) 23 | - [Middleware](#middleware) 24 | - [RESTful APIs](#restful-apis) 25 | - [Templating Engines](#templating-engines) 26 | - [Databases](#databases) 27 | - [MongoDB](#mongodb) 28 | - [SQL](#sql) 29 | 5. [Advanced Topics](#advanced-topics) 30 | - [Asynchronous Programming](#asynchronous-programming) 31 | - [Security](#security) 32 | - [Testing](#testing) 33 | - [Error Handling](#error-handling) 34 | - [Performance Optimization](#performance-optimization) 35 | - [Scalability](#scalability) 36 | 6. [Tools and Ecosystem](#tools-and-ecosystem) 37 | - [PM2](#pm2) 38 | - [WebSockets](#websockets) 39 | - [GraphQL](#graphql) 40 | - [Microservices](#microservices) 41 | - [Serverless](#serverless) 42 | - [DevOps and Deployment](#devops-and-deployment) 43 | 44 | # Node.js Learning Guide 45 | 46 | ## Beginner 47 | 48 | ### Introduction to Node.js 49 | Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. 50 | - [Official Documentation](https://nodejs.org/en/docs/) 51 | 52 | ### Setting Up Node.js 53 | Installing Node.js and setting up the development environment. 54 | - [Download Node.js](https://nodejs.org/en/download/) 55 | - [Node Version Manager (NVM)](https://github.com/nvm-sh/nvm) 56 | 57 | ### Basic Concepts 58 | 59 | #### Modules 60 | Understanding and using Node.js modules. 61 | - **Built-in Modules**: Core modules provided by Node.js. 62 | - [Built-in Modules](https://nodejs.org/dist/latest-v16.x/docs/api/) 63 | - [YouTube Video: "Node.js Crash Course"](https://www.youtube.com/watch?v=fBNz5xF-Kx4) 64 | - **Creating Modules**: How to create and export your own modules. 65 | - [Creating Modules](https://nodejs.dev/en/learn/making-your-own-modules/) 66 | - [YouTube Video: "Creating Node.js Modules"](https://www.youtube.com/watch?v=xHLd36QoS4k) 67 | - **CommonJS vs ES Modules**: Difference between CommonJS and ES6 modules. 68 | - [CommonJS Modules](https://nodejs.org/docs/latest-v14.x/api/modules.html) 69 | - [ES Modules](https://nodejs.org/api/esm.html) 70 | - [YouTube Video: "CommonJS vs ES Modules"](https://www.youtube.com/watch?v=J4i0xJnQUzU) 71 | 72 | #### File System 73 | Interacting with the file system using Node.js. 74 | - **Reading Files**: Reading files using `fs.readFile` and `fs.readFileSync`. 75 | - [Reading Files](https://nodejs.dev/en/learn/reading-files-with-nodejs/) 76 | - [YouTube Video: "Node.js File System Module"](https://www.youtube.com/watch?v=U57kU311-nE) 77 | - **Writing Files**: Writing files using `fs.writeFile` and `fs.writeFileSync`. 78 | - [Writing Files](https://nodejs.dev/en/learn/writing-files-with-nodejs/) 79 | - [YouTube Video: "Node.js Write to File"](https://www.youtube.com/watch?v=bsKJb3zGYoE) 80 | - **Working with Directories**: Creating and reading directories. 81 | - [Working with Directories](https://nodejs.dev/en/learn/working-with-folders-in-nodejs/) 82 | - [YouTube Video: "Node.js Create Directory"](https://www.youtube.com/watch?v=yP5DKzriqXA) 83 | - **File Streams**: Using streams for efficient file processing. 84 | - [File Streams](https://nodejs.dev/en/learn/nodejs-streams/) 85 | - [YouTube Video: "Node.js Streams"](https://www.youtube.com/watch?v=FxIGcYI2bAk) 86 | 87 | #### HTTP Module 88 | Creating a basic web server with the HTTP module. 89 | - **Creating a Server**: Setting up a basic HTTP server. 90 | - [Creating a Server](https://nodejs.dev/en/learn/the-nodejs-http-module/) 91 | - [YouTube Video: "Creating a Node.js Server"](https://www.youtube.com/watch?v=BLl32FvcdVM) 92 | - **Handling Requests and Responses**: Processing incoming requests and sending responses. 93 | - [Handling Requests](https://nodejs.dev/en/learn/the-nodejs-http-module/#handling-requests-and-responses) 94 | - [YouTube Video: "Handling HTTP Requests in Node.js"](https://www.youtube.com/watch?v=pKYl43f3_1E) 95 | - **Routing**: Basic routing with the HTTP module. 96 | - [Routing](https://nodejs.dev/en/learn/the-nodejs-http-module/#basic-routing) 97 | - [YouTube Video: "Node.js Routing"](https://www.youtube.com/watch?v=xHLd36QoS4k) 98 | 99 | #### NPM (Node Package Manager) 100 | Managing packages with NPM. 101 | - **Installing Packages**: Installing and managing packages. 102 | - [NPM Install](https://docs.npmjs.com/cli/v7/commands/npm-install) 103 | - [YouTube Video: "NPM Crash Course"](https://www.youtube.com/watch?v=jHDhaSSKmB0) 104 | - **Package.json**: Understanding and using `package.json`. 105 | - [Package.json](https://docs.npmjs.com/cli/v7/configuring-npm/package-json) 106 | - [YouTube Video: "Understanding package.json"](https://www.youtube.com/watch?v=XB8cCA9Xggg) 107 | - **Publishing Packages**: Creating and publishing your own packages. 108 | - [Publishing Packages](https://docs.npmjs.com/cli/v7/commands/npm-publish) 109 | - [YouTube Video: "Publishing Node.js Packages"](https://www.youtube.com/watch?v=JdGnYNtuEtE) 110 | 111 | ## Intermediate 112 | 113 | ### Express.js 114 | A web application framework for Node.js. 115 | - **Getting Started**: Setting up an Express.js application. 116 | - [Express.js Getting Started](https://expressjs.com/en/starter/installing.html) 117 | - [YouTube Video: "Express.js Crash Course"](https://www.youtube.com/watch?v=L72fhGm1tfE) 118 | - **Routing**: Defining routes in an Express.js application. 119 | - [Express.js Routing](https://expressjs.com/en/starter/basic-routing.html) 120 | - [YouTube Video: "Express.js Routing"](https://www.youtube.com/watch?v=4teS-_9F7A8) 121 | - **Middleware**: Using middleware in Express.js. 122 | - [Express.js Middleware](https://expressjs.com/en/guide/using-middleware.html) 123 | - [YouTube Video: "Express.js Middleware"](https://www.youtube.com/watch?v=lY6icfhap2o) 124 | 125 | ### Middleware 126 | Using and creating middleware in Express.js. 127 | - **Built-in Middleware**: Using built-in middleware functions. 128 | - [Built-in Middleware](https://expressjs.com/en/resources/middleware.html) 129 | - [YouTube Video: "Built-in Middleware in Express.js"](https://www.youtube.com/watch?v=H91aqUHn8sE) 130 | - **Third-Party Middleware**: Using popular third-party middleware. 131 | - [Third-Party Middleware](https://expressjs.com/en/resources/middleware.html) 132 | - [YouTube Video: "Third-Party Middleware in Express.js"](https://www.youtube.com/watch?v=wi2JBJ1uUVw) 133 | - **Custom Middleware**: Creating your own middleware. 134 | - [Custom Middleware](https://expressjs.com/en/guide/writing-middleware.html) 135 | - [YouTube Video: "Creating Custom Middleware in Express.js"](https://www.youtube.com/watch?v=kX5d4gVSTew) 136 | 137 | ### RESTful APIs 138 | Building RESTful APIs with Express.js. 139 | 140 | - **REST API Principles**: Understanding RESTful principles. 141 | - [REST API Principles](https://restfulapi.net/) 142 | - [YouTube Video: "REST API Concepts and Examples"](https://www.youtube.com/watch?v=7YcW25PHnAA) 143 | 144 | - **CRUD Operations**: Implementing Create, Read, Update, and Delete operations. 145 | - [CRUD Operations]( 146 | 147 | https://restfulapi.net/http-methods/) 148 | - [YouTube Video: "Building a RESTful API with Node.js and Express"](https://www.youtube.com/watch?v=pKd0Rpw7O48) 149 | 150 | - **Request Validation**: Validating incoming requests. 151 | - [Request Validation](https://express-validator.github.io/docs/) 152 | - [YouTube Video: "Express.js Validation with express-validator"](https://www.youtube.com/watch?v=5yTazHkDR4o) 153 | 154 | ### Templating Engines 155 | Using templating engines like Pug or EJS. 156 | 157 | - **Pug**: Getting started with Pug. 158 | - [Pug](https://pugjs.org/api/getting-started.html) 159 | - [YouTube Video: "Express Tutorial - Pug Templating Engine"](https://www.youtube.com/watch?v=6oBu7dRLu6E) 160 | 161 | - **EJS**: Getting started with EJS. 162 | - [EJS](https://ejs.co/) 163 | - [YouTube Video: "Express Tutorial - EJS Templating Engine"](https://www.youtube.com/watch?v=pgoWDZUpH-g) 164 | 165 | - **Using Templating Engines**: Integrating templating engines with Express.js. 166 | - [Templating Engines](https://expressjs.com/en/guide/using-template-engines.html) 167 | - [YouTube Video: "Templating Engines in Express.js"](https://www.youtube.com/watch?v=UVz6kZmg4Gk) 168 | 169 | ### Databases 170 | 171 | #### MongoDB 172 | Using MongoDB with Node.js. 173 | 174 | - **MongoDB Basics**: Introduction to MongoDB. 175 | - [MongoDB](https://www.mongodb.com/nosql-explained) 176 | - [YouTube Video: "MongoDB Tutorial for Beginners"](https://www.youtube.com/watch?v=ktAzB8Gv-g8) 177 | 178 | - **Mongoose**: Using Mongoose for data modeling. 179 | - [Mongoose](https://mongoosejs.com/) 180 | - [YouTube Video: "Mongoose Tutorial"](https://www.youtube.com/watch?v=WDrU305J1yw) 181 | 182 | - **CRUD Operations**: Implementing CRUD operations with MongoDB. 183 | - [MongoDB CRUD Operations](https://docs.mongodb.com/manual/crud/) 184 | - [YouTube Video: "MongoDB CRUD Operations"](https://www.youtube.com/watch?v=O3kaRGkG6Kk) 185 | 186 | #### SQL 187 | Using SQL databases with Node.js. 188 | 189 | - **PostgreSQL**: Using PostgreSQL with Node.js. 190 | - [Node-Postgres](https://node-postgres.com/) 191 | - [YouTube Video: "Node.js and PostgreSQL Tutorial"](https://www.youtube.com/watch?v=bxsemcrY4gQ) 192 | 193 | - **MySQL**: Using MySQL with Node.js. 194 | - [MySQL](https://www.mysql.com/) 195 | - [YouTube Video: "Node.js and MySQL Tutorial"](https://www.youtube.com/watch?v=EN6Dx22cPRI) 196 | 197 | - **Sequelize**: Using Sequelize for ORM with SQL databases. 198 | - [Sequelize](https://sequelize.org/) 199 | - [YouTube Video: "Sequelize ORM for Node.js"](https://www.youtube.com/watch?v=PX3xqxo4t88) 200 | 201 | ## Advanced 202 | 203 | ### Asynchronous Programming 204 | Understanding callbacks, promises, and async/await. 205 | 206 | - **Callbacks**: Using callbacks for asynchronous programming. 207 | - [Callbacks](https://nodejs.dev/en/learn/understanding-asynchronous-programming-in-nodejs/#callbacks) 208 | - [YouTube Video: "JavaScript Callbacks"](https://www.youtube.com/watch?v=2GAWkF8-mqI) 209 | 210 | - **Promises**: Using promises for cleaner asynchronous code. 211 | - [Promises](https://nodejs.dev/en/learn/understanding-asynchronous-programming-in-nodejs/#promises) 212 | - [YouTube Video: "JavaScript Promises"](https://www.youtube.com/watch?v=DHvZLI7Db8E) 213 | 214 | - **Async/Await**: Using async/await for asynchronous programming. 215 | - [Async/Await](https://nodejs.dev/en/learn/understanding-asynchronous-programming-in-nodejs/#asyncawait) 216 | - [YouTube Video: "JavaScript Async/Await"](https://www.youtube.com/watch?v=vn3tm0quoqE) 217 | 218 | ### Security 219 | Securing your Node.js application. 220 | 221 | - **Authentication**: Implementing authentication in Node.js. 222 | - [Passport.js](http://www.passportjs.org/) 223 | - [YouTube Video: "Node.js Authentication with Passport"](https://www.youtube.com/watch?v=F-sFp_AvHc8) 224 | 225 | - **Data Validation**: Validating data in Node.js. 226 | - [Joi](https://joi.dev/) 227 | - [YouTube Video: "Data Validation with Joi"](https://www.youtube.com/watch?v=lAmeYrjhN1E) 228 | 229 | - **Environment Variables**: Managing environment variables securely. 230 | - [Dotenv](https://www.npmjs.com/package/dotenv) 231 | - [YouTube Video: "Using Environment Variables in Node.js"](https://www.youtube.com/watch?v=17UVejOw3zA) 232 | 233 | ### Testing 234 | Testing Node.js applications. 235 | 236 | - **Jest**: Testing with Jest. 237 | - [Jest](https://jestjs.io/) 238 | - [YouTube Video: "Jest Crash Course"](https://www.youtube.com/watch?v=7r4xVDI2vho) 239 | 240 | - **Mocha**: Testing with Mocha. 241 | - [Mocha](https://mochajs.org/) 242 | - [YouTube Video: "Mocha Testing Tutorial"](https://www.youtube.com/watch?v=MLTRHc5dk6s) 243 | 244 | - **Chai**: Assertion library for testing. 245 | - [Chai](https://www.chaijs.com/) 246 | - [YouTube Video: "Testing with Mocha and Chai"](https://www.youtube.com/watch?v=MLTRHc5dk6s) 247 | 248 | ### Error Handling 249 | Proper error handling in Node.js. 250 | 251 | - **Error Handling Basics**: Handling errors in Node.js. 252 | - [Error Handling](https://nodejs.dev/en/learn/error-handling-in-nodejs/) 253 | - [YouTube Video: "Node.js Error Handling"](https://www.youtube.com/watch?v=6cOsxaNC06c) 254 | 255 | - **Express.js Error Handling**: Error handling in Express.js. 256 | - [Express.js Error Handling](https://expressjs.com/en/guide/error-handling.html) 257 | - [YouTube Video: "Error Handling in Express.js"](https://www.youtube.com/watch?v=w1V2SdzdQBs) 258 | 259 | ### Performance Optimization 260 | Optimizing the performance of your Node.js application. 261 | 262 | - **Performance Best Practices**: Best practices for performance optimization. 263 | - [Performance Best Practices](https://nodejs.org/en/docs/guides/production-best-practices/) 264 | - [YouTube Video: "Node.js Performance Tips"](https://www.youtube.com/watch?v=_0ywP8K7Y2U) 265 | 266 | - **Profiling**: Profiling and debugging performance issues. 267 | - [Node.js Profiling](https://nodejs.org/en/docs/guides/simple-profiling/) 268 | - [YouTube Video: "Profiling Node.js Applications"](https://www.youtube.com/watch?v=Bmvv4wJ9piA) 269 | 270 | ### Scalability 271 | Scaling Node.js applications. 272 | 273 | - **Clustering**: Using the cluster module for scaling. 274 | - [Clustering](https://nodejs.dev/en/learn/how-to-scale-nodejs-applications/) 275 | - [YouTube Video: "Node.js Clustering"](https://www.youtube.com/watch?v=UY2i7h-xNTo) 276 | 277 | - **Load Balancing**: Implementing load balancing for scalability. 278 | - [Load Balancing](https://www.nginx.com/resources/glossary/load-balancing/) 279 | - [YouTube Video: "Load Balancing Node.js Applications"](https://www.youtube.com/watch?v=h8nTC3ZXzx0) 280 | 281 | ## Tools and Ecosystem 282 | 283 | ### PM2 284 | Advanced process manager for production Node.js applications. 285 | - [PM2](https://pm2.keymetrics.io/) 286 | - [YouTube Video: "PM2 Crash Course"](https://www.youtube.com/watch?v=U7R1PPC3WqY) 287 | 288 | ### WebSockets 289 | Real-time communication using WebSockets. 290 | 291 | - **Socket.io**: Using Socket.io for WebSocket communication. 292 | - [Socket.io](https://socket.io/) 293 | - [YouTube Video: "Socket.io Tutorial"](https://www.youtube.com/watch?v=1BfCnjr_Vjg) 294 | 295 | - **WebSocket API**: Using the WebSocket API. 296 | - [WebSocket API](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) 297 | - [YouTube Video: "WebSocket API Tutorial"](https://www.youtube.com/watch?v=8KlTV1xOnDU) 298 | 299 | ### GraphQL 300 | Using GraphQL for data fetching in Node.js applications. 301 | 302 | - **Apollo Server**: Setting up Apollo Server. 303 | - [Apollo Server](https://www.apollographql.com/docs/apollo-server) 304 | - [YouTube Video: "GraphQL with Node.js and Apollo"](https://www.youtube.com/watch?v=0XJwo7I4T3k) 305 | 306 | ### Microservices 307 | Architecting and developing microservices with Node.js. 308 | 309 | - **Microservices Architecture**: Understanding microservices. 310 | - [Microservices Architecture](https://microservices.io/patterns/microservices.html) 311 | - [YouTube Video: "Microservices Explained"](https://www.youtube.com/watch?v=y8IQb4ofbR8) 312 | 313 | - ** 314 | 315 | Building Microservices**: Building microservices with Node.js. 316 | - [Building Microservices](https://nodejs.dev/en/learn/nodejs-design-patterns/#microservices) 317 | - [YouTube Video: "Building Microservices with Node.js"](https://www.youtube.com/watch?v=y8IQb4ofbR8) 318 | 319 | ### Serverless 320 | Deploying Node.js applications using serverless architecture. 321 | 322 | - **Serverless Framework**: Getting started with Serverless Framework. 323 | - [Serverless Framework](https://www.serverless.com/) 324 | - [YouTube Video: "Serverless Framework Tutorial"](https://www.youtube.com/watch?v=71cd5XerKss) 325 | 326 | - **AWS Lambda**: Using AWS Lambda for serverless functions. 327 | - [AWS Lambda](https://aws.amazon.com/lambda/) 328 | - [YouTube Video: "AWS Lambda Tutorial"](https://www.youtube.com/watch?v=eOBq__h4OJ4) 329 | 330 | ### DevOps and Deployment 331 | Deploying and managing Node.js applications. 332 | 333 | - **Docker**: Using Docker for containerization. 334 | - [Docker](https://www.docker.com/) 335 | - [YouTube Video: "Docker Tutorial for Node.js"](https://www.youtube.com/watch?v=3c-iBn73dDE) 336 | 337 | - **Kubernetes**: Using Kubernetes for container orchestration. 338 | - [Kubernetes](https://kubernetes.io/) 339 | - [YouTube Video: "Kubernetes Tutorial for Node.js"](https://www.youtube.com/watch?v=PH-2FfFD2PU) 340 | 341 | - **CI/CD**: Implementing Continuous Integration and Continuous Deployment. 342 | - [CI/CD](https://www.redhat.com/en/topics/devops/what-is-ci-cd) 343 | - [YouTube Video: "CI/CD Pipeline for Node.js"](https://www.youtube.com/watch?v=Scqze3EnQFU) 344 | ``` 345 | 346 | Feel free to adjust the content and links to suit your specific learning needs and preferences. 347 | -------------------------------------------------------------------------------- /3 Machine-Learning.md: -------------------------------------------------------------------------------- 1 | # Complete Machine Learning Learning Guide 2 | 3 | Welcome to the Complete Machine Learning Learning Guide! Whether you're a beginner looking to get started with machine learning or an experienced practitioner aiming to delve deeper into advanced topics and best practices, this comprehensive guide is designed to help you navigate the world of machine learning development. 4 | 5 | ![Machine Learning Roadmap](https://github.com/mridul0703/Learning-Guide/blob/main/Images/roadmapforml.jpg) 6 | 7 | ## Introduction 8 | 9 | Machine learning (ML) has become a cornerstone of modern technology, powering applications from recommendation systems and image recognition to natural language processing and autonomous vehicles. With its ability to learn from data and make predictions or decisions without being explicitly programmed, machine learning offers immense potential for innovation across various industries. 10 | 11 | This guide is structured to cater to learners at all levels, from beginners taking their first steps in machine learning to seasoned practitioners seeking to master advanced concepts and techniques. Each section provides an overview of a key topic in machine learning, accompanied by explanations, code examples, and links to further resources for in-depth learning. 12 | 13 | ## Table of Contents 14 | 15 | 1. [Introduction to Machine Learning](#introduction-to-machine-learning) 16 | 2. [Supervised Learning](#supervised-learning) 17 | - [Linear Regression](#linear-regression) 18 | - [Logistic Regression](#logistic-regression) 19 | - [Decision Trees](#decision-trees) 20 | - [Support Vector Machines (SVM)](#support-vector-machines-svm) 21 | - [K-Nearest Neighbors (KNN)](#k-nearest-neighbors-knn) 22 | - [Naive Bayes](#naive-bayes) 23 | - [Neural Networks](#neural-networks) 24 | 3. [Unsupervised Learning](#unsupervised-learning) 25 | - [K-Means Clustering](#k-means-clustering) 26 | - [Hierarchical Clustering](#hierarchical-clustering) 27 | - [Principal Component Analysis (PCA)](#principal-component-analysis-pca) 28 | - [Independent Component Analysis (ICA)](#independent-component-analysis-ica) 29 | - [Anomaly Detection](#anomaly-detection) 30 | 4. [Reinforcement Learning](#reinforcement-learning) 31 | - [Markov Decision Processes (MDP)](#markov-decision-processes-mdp) 32 | - [Q-Learning](#q-learning) 33 | - [Deep Q-Networks (DQN)](#deep-q-networks-dqn) 34 | 5. [Model Evaluation and Validation](#model-evaluation-and-validation) 35 | - [Train/Test Split](#traintest-split) 36 | - [Cross-Validation](#cross-validation) 37 | - [Metrics: Accuracy, Precision, Recall, F1-Score](#metrics-accuracy-precision-recall-f1-score) 38 | 6. [Feature Engineering](#feature-engineering) 39 | - [Feature Scaling](#feature-scaling) 40 | - [Feature Selection](#feature-selection) 41 | - [Feature Extraction](#feature-extraction) 42 | 7. [Advanced Topics](#advanced-topics) 43 | - [Ensemble Methods](#ensemble-methods) 44 | - [Gradient Boosting Machines (GBM)](#gradient-boosting-machines-gbm) 45 | - [XGBoost](#xgboost) 46 | - [LightGBM](#lightgbm) 47 | - [CatBoost](#catboost) 48 | - [Deep Learning](#deep-learning) 49 | - [Convolutional Neural Networks (CNN)](#convolutional-neural-networks-cnn) 50 | - [Recurrent Neural Networks (RNN)](#recurrent-neural-networks-rnn) 51 | - [Generative Adversarial Networks (GAN)](#generative-adversarial-networks-gan) 52 | 8. [Natural Language Processing (NLP)](#natural-language-processing-nlp) 53 | - [Text Preprocessing](#text-preprocessing) 54 | - [Bag of Words (BoW)](#bag-of-words-bow) 55 | - [TF-IDF](#tf-idf) 56 | - [Word Embeddings](#word-embeddings) 57 | - [Sequence Models](#sequence-models) 58 | - [Transformers](#transformers) 59 | 9. [Tools and Frameworks](#tools-and-frameworks) 60 | - [Scikit-Learn](#scikit-learn) 61 | - [TensorFlow](#tensorflow) 62 | - [Keras](#keras) 63 | - [PyTorch](#pytorch) 64 | - [Jupyter Notebooks](#jupyter-notebooks) 65 | 10. [Project Workflow](#project-workflow) 66 | - [Data Collection](#data-collection) 67 | - [Data Cleaning](#data-cleaning) 68 | - [Exploratory Data Analysis (EDA)](#exploratory-data-analysis-eda) 69 | - [Model Training](#model-training) 70 | - [Model Evaluation](#model-evaluation) 71 | - [Model Deployment](#model-deployment) 72 | - [Dimensionality Reduction](#dimensionality-reduction) 73 | - [Clustering](#clustering) 74 | - [Anomaly Detection](#anomaly-detection) 75 | - [Time Series Analysis](#time-series-analysis) 76 | - [Hyperparameter Tuning](#hyperparameter-tuning) 77 | - [Ethical Considerations](#ethical-considerations) 78 | 79 | # Machine Learning Learning Guide 80 | 81 | ## Introduction to Machine Learning 82 | Machine learning is a subset of artificial intelligence (AI) that focuses on building systems that learn from data and improve their performance over time. Key resources include: 83 | - [Introduction to Machine Learning](https://www.coursera.org/learn/machine-learning) 84 | - [Machine Learning Crash Course](https://developers.google.com/machine-learning/crash-course) 85 | 86 | ## Supervised Learning 87 | 88 | ### Linear Regression 89 | Linear regression is used for predicting a continuous target variable based on one or more input features. 90 | - [Linear Regression](https://scikit-learn.org/stable/modules/linear_model.html#linear-regression) 91 | - [Linear Regression with Python](https://realpython.com/linear-regression-in-python/) 92 | 93 | ### Logistic Regression 94 | Logistic regression is used for binary classification problems. 95 | - [Logistic Regression](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression) 96 | - [Logistic Regression Explained](https://towardsdatascience.com/logistic-regression-explained-9b02c2aec102) 97 | 98 | ### Decision Trees 99 | Decision trees are used for both classification and regression tasks. 100 | - [Decision Trees](https://scikit-learn.org/stable/modules/tree.html) 101 | - [Understanding Decision Trees](https://towardsdatascience.com/understanding-decision-trees-6f4345d9be9c) 102 | 103 | ### Support Vector Machines (SVM) 104 | Support vector machines are used for classification tasks and can handle linear and non-linear data. 105 | - [Support Vector Machines](https://scikit-learn.org/stable/modules/svm.html) 106 | - [SVM Tutorial](https://www.datacamp.com/community/tutorials/svm-classification-scikit-learn-python) 107 | 108 | ### K-Nearest Neighbors (KNN) 109 | KNN is a simple, non-parametric algorithm used for classification and regression. 110 | - [K-Nearest Neighbors](https://scikit-learn.org/stable/modules/neighbors.html) 111 | - [KNN Algorithm](https://www.analyticsvidhya.com/blog/2018/03/introduction-k-neighbours-algorithm-clustering/) 112 | 113 | ### Naive Bayes 114 | Naive Bayes is a probabilistic classifier based on Bayes' theorem. 115 | - [Naive Bayes](https://scikit-learn.org/stable/modules/naive_bayes.html) 116 | - [Understanding Naive Bayes](https://towardsdatascience.com/understanding-naive-bayes-classifier-9d12f9723cba) 117 | 118 | ### Neural Networks 119 | Neural networks are a class of models inspired by the human brain, used for a variety of tasks including classification and regression. 120 | - [Neural Networks](https://www.tensorflow.org/guide/keras/sequential_model) 121 | - [Neural Networks Explained](https://www.deeplearningbook.org/) 122 | 123 | ## Unsupervised Learning 124 | 125 | ### K-Means Clustering 126 | K-means is a popular clustering algorithm for partitioning data into K distinct clusters. 127 | - [K-Means Clustering](https://scikit-learn.org/stable/modules/clustering.html#k-means) 128 | - [K-Means Clustering Explained](https://towardsdatascience.com/k-means-clustering-algorithm-applications-evaluation-methods-and-drawbacks-aa03e644b48a) 129 | 130 | ### Hierarchical Clustering 131 | Hierarchical clustering builds a tree of clusters. 132 | - [Hierarchical Clustering](https://scikit-learn.org/stable/modules/clustering.html#hierarchical-clustering) 133 | - [Understanding Hierarchical Clustering](https://www.analyticsvidhya.com/blog/2019/05/beginners-guide-hierarchical-clustering/) 134 | 135 | ### Principal Component Analysis (PCA) 136 | PCA is a dimensionality reduction technique used to emphasize variation and bring out strong patterns in a dataset. 137 | - [Principal Component Analysis](https://scikit-learn.org/stable/modules/decomposition.html#pca) 138 | - [PCA Explained](https://towardsdatascience.com/principal-component-analysis-pca-72d4a18c618f) 139 | 140 | ### Independent Component Analysis (ICA) 141 | ICA is a computational method for separating a multivariate signal into additive, independent components. 142 | - [Independent Component Analysis](https://scikit-learn.org/stable/modules/decomposition.html#ica) 143 | - [ICA Tutorial](https://towardsdatascience.com/independent-component-analysis-ica-a-practical-guide-and-tutorial-afa5779f4ed7) 144 | 145 | ### Anomaly Detection 146 | Anomaly detection is the identification of rare items, events, or observations which raise suspicions by differing significantly from the majority of the data. 147 | - [Anomaly Detection](https://scikit-learn.org/stable/modules/outlier_detection.html) 148 | - [Anomaly Detection Explained](https://towardsdatascience.com/anomaly-detection-techniques-in-machine-learning-4b657a870ab8) 149 | 150 | ## Reinforcement Learning 151 | 152 | ### Markov Decision Processes (MDP) 153 | MDPs provide a mathematical framework for modeling decision making where outcomes are partly random and partly under the control of a decision-maker. 154 | - [Markov Decision Processes](https://towardsdatascience.com/introduction-to-markov-decision-processes-50eb5d92a11c) 155 | - [MDP Tutorial](https://www.analyticsvidhya.com/blog/2018/09/reinforcement-learning-guide-mdp/) 156 | 157 | ### Q-Learning 158 | Q-Learning is a model-free reinforcement learning algorithm to learn the value of an action in a particular state. 159 | - [Q-Learning](https://towardsdatascience.com/reinforcement-learning-implement-tictactoe-189582bea542) 160 | - [Q-Learning Explained](https://www.geeksforgeeks.org/q-learning-in-python/) 161 | 162 | ### Deep Q-Networks (DQN) 163 | DQN combines Q-Learning with deep neural networks to handle high-dimensional sensory inputs. 164 | - [Deep Q-Networks](https://www.tensorflow.org/agents/tutorials/1_dqn_tutorial) 165 | - [DQN Tutorial](https://towardsdatascience.com/deep-q-learning-tutorial-mindqn-2a4c855abffc) 166 | 167 | ## Model Evaluation and Validation 168 | 169 | ### Train/Test Split 170 | Splitting data into train and test sets to evaluate model performance. 171 | - [Train/Test Split](https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation) 172 | - [Train/Test Split Explained](https://www.dataquest.io/blog/train-test-split/) 173 | 174 | ### Cross-Validation 175 | Cross-validation is a technique for assessing how the results of a statistical analysis will generalize to an independent data set. 176 | - [Cross-Validation](https://scikit-learn.org/stable/modules/cross_validation.html) 177 | - [Cross-Validation Explained](https://towardsdatascience.com/cross-validation-explained-evaluating-estimator-performance-e51e5430ff85) 178 | 179 | ### Metrics: Accuracy, Precision, Recall, F1-Score 180 | Metrics for evaluating the performance of classification models. 181 | - [Model Evaluation Metrics](https://scikit-learn.org/stable/modules/model_evaluation.html) 182 | - [Understanding Metrics](https://towardsdatascience.com/metrics-to-evaluate-your-machine-learning-algorithm-f10ba6e38234) 183 | 184 | ## Feature Engineering 185 | 186 | ### Feature Scaling 187 | Feature scaling is a method used to standardize the range of independent variables or features of data. 188 | - [Feature Scaling](https://scikit-learn.org/stable/modules/preprocessing.html#scaling-features) 189 | - [Feature Scaling Techniques](https://towardsdatascience.com/all-about-feature-scaling-bcc0ad75cb35) 190 | 191 | ### Feature Selection 192 | Feature selection is the process of selecting a subset of relevant features for use in model construction. 193 | - [Feature Selection](https://scikit-learn.org/stable/modules/feature_selection.html) 194 | - [Feature Selection Methods](https://towardsdatascience.com/feature-selection-techniques-in-machine-learning-with-python-f24e7da3f36e) 195 | 196 | ### Feature Extraction 197 | Feature extraction involves transforming raw data into a set of features. 198 | - [Feature Extraction](https://scikit-learn.org/stable/modules/feature_extraction.html) 199 | - [Feature Extraction Techniques](https://towardsdatascience.com/a-guide-to-feature-engineering-in-machine-learning-3a78d4cb4e9e) 200 | 201 | ## Advanced Topics 202 | 203 | ### Ensemble Methods 204 | Ensemble methods combine multiple learning algorithms to obtain better predictive performance. 205 | - [Ensemble Methods](https://scikit-learn.org/stable/modules/ensemble.html) 206 | - [Introduction to Ensemble Learning](https://towardsdatascience.com/ensemble-learning-techniques-9d307a325b99) 207 | 208 | ### Gradient Boosting Machines (GBM) 209 | GBM is a machine learning technique for regression and classification problems. 210 | - [Gradient Boosting](https://scikit-learn.org/stable/modules/ensemble.html#gradient-tree-boosting) 211 | - [GBM Tutorial](https://towardsdatascience.com/understanding-gradient-boosting-machines-9be756fe76ab) 212 | 213 | ### XGBoost 214 | XGBoost is an optimized distributed gradient boosting library designed to be highly efficient, flexible, and portable. 215 | - [XGBoost](https://xgboost.readthedocs.io/en/latest/) 216 | - [XGBoost Explained](https://towardsdatascience.com/why-is-xgboost-so-effective-7b28faf5de45) 217 | 218 | ### LightGBM 219 | LightGBM is a gradient boosting framework that uses tree-based learning algorithms. 220 | - [LightGBM](https://lightgbm.readthedocs.io/en/latest/) 221 | - [LightGBM Tutorial](https://towardsdatascience.com/why-you-should-use-lightgbm-over-xgboost-f843e249eb5) 222 | 223 | ### CatBoost 224 | CatBoost is a high-performance open-source library for gradient boosting on decision trees. 225 | - [CatBoost](https://catboost.ai/) 226 | - [CatBoost Explained](https://towardsdatascience.com/catboost-6e7d89aab32d) 227 | 228 | ### Deep Learning 229 | Deep learning is a subset of machine learning concerned with algorithms inspired by the structure and function of the brain called artificial neural networks. 230 | - [Deep Learning](https://www.deeplearningbook.org/) 231 | - [Deep Learning Tutorial](https://www.tensorflow.org/tutorials) 232 | 233 | ### Convolutional Neural Networks (CNN) 234 | CNNs are a class of deep neural networks, most commonly applied to analyzing visual imagery. 235 | - [Convolutional Neural Networks](https://www.tensorflow.org/tutorials/images/cnn) 236 | - [CNN Explained](https://towardsdatascience.com/a-comprehensive-introduction-to-different-types-of-convolutions-in-deep-learning-669281e58215) 237 | 238 | ### Recurrent Neural Networks (RNN) 239 | RNNs are a class of neural networks that is powerful for modeling sequence data such as time series or natural language. 240 | - [Recurrent Neural Networks](https://www.tensorflow.org/guide/keras/rnn) 241 | - [RNN Tutorial](https://towardsdatascience.com/understanding-rnn-and-lstm-f7cdf6dfc14e) 242 | 243 | ### Generative Adversarial Networks (GAN) 244 | GANs are a class of machine learning frameworks designed by a system of two neural networks, competing with each other to generate new, synthetic instances of data. 245 | - [Generative Adversarial Networks](https://www.tensorflow.org/tutorials/generative/gan) 246 | - [GAN Tutorial](https://towardsdatascience.com/generative-adversarial-networks-gans-a-comprehensive-review-2a8a5b9c0016) 247 | 248 | ## Natural Language Processing (NLP) 249 | 250 | ### Text Preprocessing 251 | Text preprocessing is the practice of cleaning and preparing text data for analysis. 252 | - [Text Preprocessing](https://www.kdnuggets.com/2019/04/text-preprocessing-machine-learning-nlp.html) 253 | - [Text Preprocessing Techniques](https://towardsdatascience.com/basic-text-processing-in-r-c7a78da9017c) 254 | 255 | ### Bag of Words (BoW) 256 | BoW is a representation of text that describes the occurrence of words within a document. 257 | - [Bag of Words](https://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction) 258 | - [BoW Explained](https://towardsdatascience.com/implementing-your-own-bag-of-words-model-in-python-2bde6e91d0ec) 259 | 260 | ### TF-IDF 261 | TF-IDF is a numerical statistic that reflects the importance of a word in a document relative to a corpus. 262 | - [TF-IDF](https://scikit-learn.org/stable/modules/feature_extraction.html#tfidf-term-weighting) 263 | - [TF-IDF Explained](https://towardsdatascience.com/understanding-tf-idf-49428a5cf81d) 264 | 265 | ### Word Embeddings 266 | Word embeddings are a type of word representation that allows words to be represented as vectors in a continuous vector space. 267 | - [Word Embeddings](https://www.tensorflow.org/tutorials/text/word_embeddings) 268 | - [Understanding Word Embeddings](https://towardsdatascience.com/understanding-word-embeddings-the-easy-way-4322991e5e53) 269 | 270 | ### Sequence Models 271 | Sequence models are types of neural networks designed to handle sequential data. 272 | - [Sequence Models](https://www.tensorflow.org/guide/keras/rnn) 273 | - [Sequence Models Explained](https://towardsdatascience.com/introduction-to-sequence-to-sequence-learning-20dec6f0175a) 274 | 275 | ### Transformers 276 | Transformers are a type of model that uses attention mechanisms and is particularly effective for NLP tasks. 277 | - [Transformers](https://huggingface.co/transformers/) 278 | - [Transformers Tutorial](https://towardsdatascience.com/a-detailed-introduction-to-transformers-the-model-that-revolutionized-nlp-5fdb2273e1e3) 279 | 280 | ## Tools and Frameworks 281 | 282 | ### Scikit-Learn 283 | Scikit-Learn is a free software machine learning library for the Python programming language. 284 | - [Scikit-Learn](https://scikit-learn.org/) 285 | - [Scikit-Learn Tutorial](https://www.datacamp.com/community/tutorials/machine-learning-python) 286 | 287 | ### TensorFlow 288 | TensorFlow is a free and open-source software library for dataflow and differentiable programming across a range of tasks. 289 | - [TensorFlow](https://www.tensorflow.org/) 290 | - [TensorFlow Guide](https://www.tensorflow.org/guide) 291 | 292 | ### Keras 293 | Keras is an open-source software library that provides a Python interface for artificial neural networks. 294 | - [Keras](https://keras.io/) 295 | - [Keras Tutorial](https://www.datacamp.com/community/tutorials/deep-learning-python) 296 | 297 | ### PyTorch 298 | PyTorch is an open-source machine learning library based on the Torch library. 299 | - [PyTorch](https://pytorch.org/) 300 | - [PyTorch Tutorial](https://pytorch.org/tutorials/) 301 | 302 | ### Jupyter Notebooks 303 | Jupyter Notebooks are an open-source web application that allows you to create and share documents that contain live code, equations, visualizations, and narrative text. 304 | - [Jupyter Notebooks](https://jupyter.org/) 305 | - [Jupyter Notebooks Tutorial](https://realpython.com/jupyter-notebook-introduction/) 306 | 307 | ## Project Workflow 308 | 309 | ### Data Collection 310 | Data collection is the process of gathering and measuring information. 311 | - [Data Collection](https://towardsdatascience.com/data-collection-strategies-for-machine-learning-using-apis-web-scraping-and-database-queries-dc5d4c19e6cb) 312 | - [Data Collection Techniques](https://www.analyticsvidhya.com/blog/2020/02/20-best-apis-data-scientists/) 313 | 314 | ### Data Cleaning 315 | Data cleaning involves preparing data for analysis by removing or modifying data that is incorrect, incomplete, irrelevant, duplicated, or improperly formatted. 316 | - [Data Cleaning](https://towardsdatascience.com/the-ultimate-guide-to-data-cleaning-3969843991d4) 317 | - [Data Cleaning Techniques](https://www.kdnuggets.com/2019/06/must-know-techniques-data-cleaning-data-scientists.html) 318 | 319 | ### Exploratory Data Analysis (EDA) 320 | EDA is an approach to analyzing data sets to summarize their main characteristics, often with visual methods. 321 | - [Exploratory Data Analysis](https://towardsdatascience.com/exploratory-data-analysis-8fc1cb20fd15) 322 | - [EDA Techniques](https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/) 323 | 324 | ### Model Training 325 | Model training involves feeding a machine learning algorithm with data to learn from. 326 | - [Model Training](https://www.tensorflow.org/guide/keras/train_and_evaluate) 327 | - [Model Training Guide](https://towardsdatascience.com/training-your-first-machine-learning-model-using-tensorflow-2-0-21aaf8bc5b57) 328 | 329 | ### Model Evaluation 330 | Model evaluation is the process of using different metrics to understand the performance of a model. 331 | - [Model Evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html) 332 | - [Model Evaluation Techniques](https://towardsdatascience.com/a-beginners-guide-to-model-evaluation-metrics-in-machine-learning-68f0141f9d9b) 333 | 334 | ### Model Deployment 335 | Model deployment is the process of making a machine learning model available for use in a production environment. 336 | - [Model Deployment](https://www.tensorflow.org/tfx/guide/serving) 337 | - [Model Deployment Explained](https://towardsdatascience.com/a-friendly-guide-to-deploying-machine-learning-models-6a1c54e83a29) 338 | 339 | ### Dimensionality Reduction 340 | Dimensionality reduction involves reducing the number of random variables under consideration by obtaining a set of principal variables. 341 | - [Dimensionality Reduction](https://scikit-learn.org/stable/modules/unsupervised_reduction.html) 342 | - [PCA Explained](https://towardsdatascience.com/a-quick-guide-to-pca-principal-component-analysis-2d1c6e3fc5a1) 343 | 344 | ### Clustering 345 | Clustering is a method of unsupervised learning where the task is to group a set of objects in such a way that objects in the same group are more similar to each other than to those in other groups. 346 | - [Clustering](https://scikit-learn.org/stable/modules/clustering.html) 347 | - [Clustering Explained](https://towardsdatascience.com/clustering-algorithms-k-means-and-k-means-556e2dd8a71d) 348 | 349 | ### Anomaly Detection 350 | Anomaly detection is the identification of rare items, events, or observations which raise suspicions by differing significantly from the majority of the data. 351 | - [Anomaly Detection](https://scikit-learn.org/stable/modules/outlier_detection.html) 352 | - [Anomaly Detection Techniques](https://towardsdatascience.com/anomaly-detection-techniques-in-machine-learning-9c0a9bcdcd2b) 353 | 354 | ### Time Series Analysis 355 | Time series analysis involves analyzing time series data to extract meaningful statistics and other characteristics of the data. 356 | - [Time Series Analysis](https://towardsdatascience.com/an-intuitive-guide-to-time-series-forecasting-using-arima-and-sarima-37c90fd7f9b2) 357 | - [Time Series with Python](https://www.machinelearningplus.com/time-series/time-series-analysis-python/) 358 | 359 | ### Hyperparameter Tuning 360 | Hyperparameter tuning involves finding the optimal set of hyperparameters for a learning algorithm. 361 | - [Hyperparameter Tuning](https://scikit-learn.org/stable/modules/grid_search.html) 362 | - [Hyperparameter Tuning Guide](https://towardsdatascience.com/hyperparameter-tuning-c5619e7e6624) 363 | 364 | ### Ethical Considerations 365 | Ethical considerations in machine learning involve addressing fairness, accountability, transparency, and ethics in AI systems. 366 | - [Ethics in AI](https://www.brookings.edu/research/ai-ethics/) 367 | - [Ethical Machine Learning](https://towardsdatascience.com/ethics-in-machine-learning-3d5e6c29e33b) 368 | -------------------------------------------------------------------------------- /Images/roadmapforml.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mridul0703/Learning-Guide/84bb62800107e94cce4590a8bcf54e5457f14f49/Images/roadmapforml.jpg -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Mridul M Kumar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to Learning Guide 2 | 3 |
      4 | Demo 5 |
      6 | 7 | ## Introduction 8 | 9 | This repository serves as a comprehensive guide and resource hub for learning various programming languages and technologies. Whether you're a beginner looking to get started with web development or an experienced developer seeking to enhance your skills, you'll find valuable resources and information here. 10 | 11 | ## Languages Covered 12 | 13 | [Here, you can list the languages covered in the repository. Below is an example:] 14 | 15 | - Data Structures and Algorithm 16 | - [C](https://github.com/mridul0703/Learning-Guide/blob/main/1.1%20C.md) 17 | - [C++](https://github.com/mridul0703/Learning-Guide/blob/main/1.2%20C%2B%2B.md) 18 | - [Data Sturctures and Algorithm](https://github.com/mridul0703/Learning-Guide/blob/main/1.3%20Data-structures-and-algorithm.md) 19 | - [Data Structures](https://github.com/mridul0703/Learning-Guide/blob/main/1.4%20Data%20Sturctures.md) 20 | 21 | - Web - Development 22 | - [HTML](https://github.com/mridul0703/Learning-Guide/blob/main/2.1%20HTML.md) 23 | - [SEO Optimized](https://github.com/mridul0703/Learning-Guide/blob/main/2.1.1%20seo-optimised.html) 24 | - [CSS](https://github.com/mridul0703/Learning-Guide/blob/main/2.2%20CSS.md) 25 | - [JavaScript](https://github.com/mridul0703/Learning-Guide/blob/main/2.3%20JavaScript.md) 26 | - [React Js](https://github.com/mridul0703/Learning-Guide/blob/main/2.4%20React.md) 27 | - [Node Js](https://github.com/mridul0703/Learning-Guide/blob/main/2.5%20NodeJs.md) 28 | 29 | - [Machine Learning](https://github.com/mridul0703/Learning-Guide/blob/main/3%20Machine-Learning.md) 30 | 31 | ## Contributing 32 | 33 | We welcome contributions to enhance the features and usability of our machine learning project. To contribute, please follow the guidelines mentioned in the repository. 34 | 35 | ## License 36 | 37 | This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. 38 | 39 | ## Contact 40 | 41 | Feel free to reach out to me at [email@example.com](mailto:mridulmkumar07@gmail.com) or visit my website mridul.app for more information. 42 | 43 | ## Show your support 44 | 45 | Give a ⭐ if you like this website! 46 | 47 | --------------------------------------------------------------------------------