Skip to main content

Introduction

This repository contains my personal collection of notes, primarily focused on Computer Science, Software Engineering, and Backend Development. As I explore various topics in these areas, I document my learnings and publish them on this website.

If you come across any issues or errors in the notes, feel free to open an issue in the GitHub repository.

Content Table

Programming Fundamentals

  1. Programming Languages
    1. Python Stable
      1. Introduction Stable
      2. Python Basics Stable
      3. Variable Scoping Stable
      4. Common Data Structures in Python Stable
      5. Loops, Control Structures, and Functions Stable
      6. *args and **kwargs Stable
      7. Standard Library Stable
      8. Pythonic Code Stable
      9. Object Oriented Programming (OOP) Stable
      10. Exception Handling Stable
      11. Context Manager Stable
      12. File Handling Stable
      13. Iterator and Generator Stable
      14. Multithreading Stable
      15. Multiprocessing, and Asyncio Stable
      16. Asyncio Stable
      17. Metaprogramming Stable
      18. Decorator Stable
      19. Unit Test Stable
      20. Pytest Stable
      21. Execution Flow Stable
      22. Memory Management Stable
      23. Reference Counting Stable
      24. Generational Garbage Collection Stable
      25. Package Managers Stable
    2. JavaScript Stable
      1. Introduction Stable
      2. Variables Stable
      3. Data Types Stable
      4. Mutation Stable
      5. Functions Stable
      6. Conditions and Loops Stable
      7. Asynchronous Programming Stable
      8. Execution Context Stable
      9. Call Stack Stable
      10. Queues Stable
      11. Event Loop Stable
      12. Closures and Lexical Scoping Stable
      13. Callbacks and Higher-Order Functions Stable
      14. Currying and IIFE Stable
      15. Prototypes and Inheritance Stable
      16. Object Oriented Programming Stable
      17. The this Keyword Stable
      18. Type Coercion and Type Conversion Stable
      19. use string Stable
      20. Event Handling Stable
      21. ES6 and Beyond Stable
      22. Concurrency and Parallelism Stable
    3. Go Stable
      1. Introduction Stable
      2. Packages and Modules Stable
      3. Variable and Scope Stable
      4. Mutation Stable
      5. fmt Package Stable
      6. Condition and Loops Stable
      7. Functions Stable
      8. Error Handling Stable
      9. File Handling Stable
      10. Pointers Stable
      11. Structs and Custom Types Stable
      12. Interfaces Stable
      13. Array, Slices, and Maps Stable
      14. Goroutines Stable
        1. Introduction Stable
        2. Wait Groups Stable
        3. Mutex Stable
        4. Channels Stable
        5. Tips & Tricks Stable

Framework and Libraries

  1. Frameworks and Libraries
    1. Backend
      1. Django
        1. Introduction
        2. Django Rest Framework
        3. Project Setup
        4. File Structure
        5. Project Structure
        6. Model and ORM
        7. Serializers
        8. Views
        9. Authentication
        10. Permissions, Access Control, Throttling
        11. Querying and Filtering
        12. Nested Relationships and Hyperlinks
        13. Error Handling
        14. Testing
        15. Documentation
        16. Advanced Topics
        17. Deployment
      2. Flask
        1. Introduction
        2. WSGI
        3. Flask App and app.run
        4. Routes
        5. Templates and Jinja2
        6. Static Files
        7. Middlewares
        8. Request and Response
        9. Blueprints
        10. Error Handling
        11. Database Integration and FlaskSQLAlchemy
        12. Async in Flask
        13. Deployment and Scaling
        14. Thread Safety
      3. FastAPI
        1. Introduction
        2. Routes
        3. Serialization & Validation
        4. Dependency Injection
        5. Authentication & Security
        6. ORMs
        7. Advanced FastAPI Features
        8. Performance & Optimization
        9. Testing & Debugging
        10. Deployment & Production Setup
    2. Frotnend
      1. React
        1. Introduction
        2. JSX
        3. Props
        4. Event-Driven Programming
        5. Components
        6. State Management
        7. React Hooks
        8. Refs
        9. Imperative React
        10. Performance Optimization
        11. Styling
        12. Routing
        13. Server Side Rendering (SSR)
        14. Portals
        15. Error Handling and Error Boundaries
        16. React Under the Hood

Data Structure and Algorithms

  1. Data Structure and Algorithms Stable
    1. Data Structures Stable
      1. Introduction Stable
      2. Arrays Stable
      3. Hash Table Stable
      4. Stack Stable
      5. Queue Stable
      6. Tree Stable
        1. Introduction Stable
        2. Binary Tree Stable
        3. Strict Binary Tree Stable
        4. N-ary Tree Stable
        5. Tree Representation Stable
        6. Full vs Complete Binary Tree Stable
        7. Strict vs Complete Binary Tree Stable
        8. Binary Tree Travarsals Stable
        9. Common Tree Algorithms Stable
        10. Search Tree Stable
          1. Introduction Stable
          2. Binary Search Tree Stable
            1. Introduction Stable
            2. Common BST Algorithms Stable
          3. Self-Balancing Tree Stable
            1. Introduction Stable
            2. AVL Tree Stable
            3. Red-Black Tree Stable
          4. Prefix Search Tree Stable
            1. Introduction Stable
            2. Trie Stable
    2. Algorithms Stable
      1. Introduction Stable
      2. Recursion Stable
      3. Sliding Window Stable
      4. Two Pointers Stable
      5. Sorting Stable
    3. Time and Space Complexity

Operating Systems

  1. Operating Systems

System Design and Databases

  1. Networking

    1. Protocols
      1. Client-Server Architecture Stable
      2. OSI Model Stable
      3. Layer 7: Application Stable
        1. HTTP Stable
        2. DNS Stable
        3. SMTP Stable
        4. SSH Stable
        5. RPC & gRPC Stable
        6. FTP Stable
        7. MQTT Stable
        8. WebRTC Stable
        9. WebSocket Stable
      4. Layer 6: Presentation
        1. TLS
      5. Layer 5: Session
      6. Layer 4: Transport Stable
        1. TCP Stable
        2. UDP Stable
        3. QUIC Stable
      7. Layer 3: Network
        1. Internet Protocol
        2. ICMP
        3. BGP
        4. NAT
      8. Layer 2: Data Link
        1. ARP
      9. Extra
        1. CDN
        2. DHCP
        3. NTP
        4. REST Stable
    2. Communication Design Patterns
      1. Request Response
      2. Pub Sub
      3. Event Streaming
      4. Short Pooling
      5. Long Pooling
      6. SSE
  2. Database

    1. SQL
      1. Introduction
      2. SELECT Queries
      3. Aggregations Queries
      4. GROUP BY Queries
      5. String, Date, and Time Operations
      6. Join Queries
      7. Subqueries and Nested Queries
      8. Common Table Expressions (CTEs)
      9. Window Functions
    2. Database Engineering
      1. Introduction
      2. Connection Pooling
      3. Transactions
      4. ACID
      5. Database Locking
      6. Indexes
      7. Query Optimization
      8. Partitioning
      9. Sharding
      10. Replication
      11. Cursors
    3. Database Systems
      1. Introduction
      2. Relational Algebra
      3. Database Storage
      4. Tuple Oriented Storage
      5. Index Organized Storage
      6. Log-Structured Merge Tree
      7. Hash Tables
      8. Buffer Pool Manager
      9. B-Trees
      10. Bloom Filter
      11. Skip List
      12. Trie and Radix Tree
      13. Inverted Indexes
      14. Vector Index

Sources

The notes are primarily created by me or with the assistance of ChatGPT. Occasionally, they include content adapted from other sources, though I typically rework the material rather than copying it verbatim.