CrackedRuby CrackedRuby

CS Fundamentals

Data Structures and Algorithms

Fundamental Data Structures

1.1.1 Arrays and Dynamic Arrays 1.1.2 Linked Lists (Singly, Doubly, Circular) 1.1.3 Stacks and Their Applications 1.1.4 Queues and Dequeues 1.1.5 Priority Queues 1.1.6 Hash Tables and Hash Functions 1.1.7 Sets and Multisets

Trees and Graphs

1.2.1 Binary Trees 1.2.2 Binary Search Trees 1.2.3 AVL Trees 1.2.4 Red-Black Trees 1.2.5 B-Trees and B+ Trees 1.2.6 Heaps and Heap Operations 1.2.7 Tries and Suffix Trees 1.2.8 Graph Representations 1.2.9 Directed and Undirected Graphs 1.2.10 Weighted Graphs 1.2.11 Graph Traversal (BFS, DFS) 1.2.12 Spanning Trees 1.2.13 Disjoint Set Union (Union-Find)

Sorting and Searching

1.3.1 Linear and Binary Search 1.3.2 Bubble Sort and Selection Sort 1.3.3 Insertion Sort 1.3.4 Merge Sort 1.3.5 Quick Sort 1.3.6 Heap Sort 1.3.7 Counting Sort and Radix Sort 1.3.8 Bucket Sort 1.3.9 External Sorting 1.3.10 Search in Rotated Arrays 1.3.11 Interpolation Search

Algorithm Design Techniques

1.4.1 Divide and Conquer 1.4.2 Dynamic Programming 1.4.3 Greedy Algorithms 1.4.4 Backtracking 1.4.5 Branch and Bound 1.4.6 Two Pointers Technique 1.4.7 Sliding Window 1.4.8 Recursion and Tail Recursion 1.4.9 Memoization 1.4.10 Bit Manipulation Algorithms

String Algorithms

1.5.1 String Searching (KMP, Boyer-Moore) 1.5.2 String Matching with Wildcards 1.5.3 Longest Common Substring 1.5.4 Longest Common Subsequence 1.5.5 Edit Distance 1.5.6 String Hashing 1.5.7 Palindrome Algorithms 1.5.8 String Compression

Graph Algorithms

1.6.1 Shortest Path (Dijkstra, Bellman-Ford) 1.6.2 All Pairs Shortest Path (Floyd-Warshall) 1.6.3 Minimum Spanning Tree (Kruskal, Prim) 1.6.4 Topological Sorting 1.6.5 Strongly Connected Components 1.6.6 Cycle Detection 1.6.7 Network Flow 1.6.8 Graph Coloring 1.6.9 Traveling Salesman Problem Approaches

Computational Complexity

1.7.1 Time Complexity Analysis 1.7.2 Space Complexity Analysis 1.7.3 Big O, Omega, and Theta Notation 1.7.4 Amortized Analysis 1.7.5 Best, Average, and Worst Case 1.7.6 Common Complexity Classes

Software Design and Architecture

Design Principles

2.1.1 SOLID Principles 2.1.2 DRY (Don't Repeat Yourself) 2.1.3 KISS (Keep It Simple, Stupid) 2.1.4 YAGNI (You Aren't Gonna Need It) 2.1.5 Separation of Concerns 2.1.6 Law of Demeter 2.1.7 Composition vs Inheritance 2.1.8 Coupling and Cohesion 2.1.9 Information Hiding 2.1.10 Principle of Least Astonishment

Design Patterns - Creational

2.2.1 Creational Patterns Overview 2.2.2 Singleton Pattern 2.2.3 Factory Method Pattern 2.2.4 Abstract Factory Pattern 2.2.5 Builder Pattern 2.2.6 Prototype Pattern

Design Patterns - Structural

2.3.1 Structural Patterns Overview 2.3.2 Adapter Pattern 2.3.3 Bridge Pattern 2.3.4 Composite Pattern 2.3.5 Decorator Pattern 2.3.6 Facade Pattern 2.3.7 Proxy Pattern

Design Patterns - Behavioral

2.4.1 Behavioral Patterns Overview 2.4.2 Observer Pattern 2.4.3 Strategy Pattern 2.4.4 Command Pattern 2.4.5 Iterator Pattern 2.4.6 Template Method Pattern 2.4.7 Chain of Responsibility 2.4.8 State Pattern 2.4.9 Visitor Pattern 2.4.10 Mediator Pattern 2.4.11 Memento Pattern

Architectural Patterns

2.5.1 Layered Architecture 2.5.2 Model-View-Controller (MVC) 2.5.3 Model-View-Presenter (MVP) 2.5.4 Model-View-ViewModel (MVVM) 2.5.5 Microservices Architecture 2.5.6 Service-Oriented Architecture (SOA) 2.5.7 Event-Driven Architecture 2.5.8 Hexagonal Architecture 2.5.9 Clean Architecture 2.5.10 Domain-Driven Design 2.5.11 CQRS Pattern 2.5.12 Event Sourcing 2.5.13 Serverless Architecture 2.5.14 Pipe and Filter Architecture

System Design

2.6.1 Scalability Concepts 2.6.2 Horizontal vs Vertical Scaling 2.6.3 Load Balancing 2.6.4 Caching Strategies 2.6.5 Database Sharding 2.6.6 Replication Strategies 2.6.7 CAP Theorem 2.6.8 Consistency Models 2.6.9 Distributed System Concepts 2.6.10 Message Queues 2.6.11 Publish-Subscribe Pattern 2.6.12 Service Discovery 2.6.13 Circuit Breaker Pattern 2.6.14 Rate Limiting 2.6.15 API Gateway Pattern

API Design

2.7.1 RESTful API Principles 2.7.2 REST Maturity Model 2.7.3 HTTP Methods and Status Codes 2.7.4 API Versioning Strategies 2.7.5 API Documentation 2.7.6 GraphQL Fundamentals 2.7.7 gRPC and Protocol Buffers 2.7.8 WebSocket APIs 2.7.9 API Security Best Practices 2.7.10 API Rate Limiting 2.7.11 Pagination Strategies 2.7.12 HATEOAS

Databases and Data Management

Database Fundamentals

3.1.1 Relational Database Concepts 3.1.2 Database Normalization 3.1.3 Denormalization Strategies 3.1.4 ACID Properties 3.1.5 Transactions and Isolation Levels 3.1.6 Indexes and Their Types 3.1.7 Primary and Foreign Keys 3.1.8 Constraints and Triggers 3.1.9 Views and Materialized Views 3.1.10 Stored Procedures and Functions

SQL and Query Optimization

3.2.1 Basic SQL Operations 3.2.2 Joins and Their Types 3.2.3 Subqueries and CTEs 3.2.4 Window Functions 3.2.5 Query Execution Plans 3.2.6 Query Optimization Techniques 3.2.7 Index Optimization 3.2.8 Database Statistics 3.2.9 Partitioning Strategies 3.2.10 Bulk Operations

NoSQL Databases

3.3.1 Document Databases Concepts 3.3.2 Key-Value Stores 3.3.3 Column-Family Stores 3.3.4 Graph Databases 3.3.5 Time-Series Databases 3.3.6 NoSQL Data Modeling 3.3.7 Eventual Consistency 3.3.8 BASE Properties 3.3.9 NoSQL Use Cases 3.3.10 Polyglot Persistence

Data Modeling

3.4.1 Entity-Relationship Modeling 3.4.2 Conceptual Data Models 3.4.3 Logical Data Models 3.4.4 Physical Data Models 3.4.5 Dimensional Modeling 3.4.6 Star and Snowflake Schemas 3.4.7 Data Vault Modeling 3.4.8 Temporal Data Modeling

Database Administration

3.5.1 Backup and Recovery Strategies 3.5.2 Database Monitoring 3.5.3 Performance Tuning 3.5.4 Database Security 3.5.5 User Management and Permissions 3.5.6 Database Migration Strategies 3.5.7 Connection Pooling 3.5.8 Database Replication 3.5.9 Failover and High Availability

Operating Systems and Systems Programming

Process Management

4.1.1 Process vs Thread 4.1.2 Process Creation and Termination 4.1.3 Process States and Transitions 4.1.4 Context Switching 4.1.5 Inter-Process Communication 4.1.6 Pipes and Named Pipes 4.1.7 Message Passing 4.1.8 Shared Memory 4.1.9 Process Scheduling Algorithms

Thread Management

4.2.1 Thread Creation and Synchronization 4.2.2 Race Conditions 4.2.3 Critical Sections 4.2.4 Mutexes and Locks 4.2.5 Semaphores 4.2.6 Condition Variables 4.2.7 Deadlocks and Prevention 4.2.8 Thread Pools 4.2.9 Thread-Local Storage

Memory Management

4.3.1 Virtual Memory 4.3.2 Paging and Segmentation 4.3.3 Memory Allocation Strategies 4.3.4 Garbage Collection Concepts 4.3.5 Memory Leaks and Detection 4.3.6 Buffer Management 4.3.7 Cache Memory 4.3.8 Memory Mapping 4.3.9 Stack vs Heap

File Systems

4.4.1 File System Architecture 4.4.2 File Organization Methods 4.4.3 Directory Structures 4.4.4 File Permissions 4.4.5 File Locking 4.4.6 Journaling File Systems 4.4.7 File System Performance 4.4.8 Disk Scheduling Algorithms

Input/Output Systems

4.5.1 I/O Models (Blocking, Non-blocking, Async) 4.5.2 Buffering Strategies 4.5.3 Device Drivers Concepts 4.5.4 Direct Memory Access (DMA) 4.5.5 I/O Scheduling

Computer Networks

Network Fundamentals

5.1.1 OSI Model Layers 5.1.2 TCP/IP Protocol Stack 5.1.3 Network Topologies 5.1.4 Network Devices (Router, Switch, Hub) 5.1.5 IP Addressing and Subnetting 5.1.6 IPv4 vs IPv6 5.1.7 MAC Addresses 5.1.8 ARP Protocol 5.1.9 DHCP Protocol 5.1.10 NAT and PAT

Transport Layer

5.2.1 TCP Protocol Deep Dive 5.2.2 UDP Protocol 5.2.3 TCP Three-Way Handshake 5.2.4 TCP Flow Control 5.2.5 TCP Congestion Control 5.2.6 Reliable Data Transfer 5.2.7 Port Numbers 5.2.8 Socket Programming Concepts

Application Layer Protocols

5.3.1 HTTP/HTTPS Protocols 5.3.2 HTTP/2 and HTTP/3 5.3.3 FTP and SFTP 5.3.4 SMTP, POP3, and IMAP 5.3.5 DNS Protocol 5.3.6 WebSocket Protocol 5.3.7 SSH Protocol 5.3.8 TLS/SSL

Network Security

5.4.1 Encryption Basics 5.4.2 Symmetric vs Asymmetric Encryption 5.4.3 Digital Signatures 5.4.4 Certificates and PKI 5.4.5 Network Firewalls 5.4.6 VPN Concepts 5.4.7 Common Network Attacks 5.4.8 Defense Mechanisms 5.4.9 Network Monitoring

Software Development Practices

Version Control

6.1.1 Git Fundamentals 6.1.2 Branching Strategies 6.1.3 Merge vs Rebase 6.1.4 Conflict Resolution 6.1.5 Git Workflows (GitFlow, GitHub Flow) 6.1.6 Pull Requests and Code Reviews 6.1.7 Git Hooks 6.1.8 Semantic Versioning 6.1.9 Tagging and Releases 6.1.10 Monorepo vs Polyrepo

Testing Fundamentals

6.2.1 Unit Testing Principles 6.2.2 Integration Testing 6.2.3 System Testing 6.2.4 Acceptance Testing 6.2.5 Test-Driven Development (TDD) 6.2.6 Behavior-Driven Development (BDD) 6.2.7 Test Doubles (Mocks, Stubs, Spies) 6.2.8 Test Coverage

Testing Strategies

6.3.1 Performance Testing 6.3.2 Load Testing 6.3.3 Security Testing 6.3.4 Regression Testing 6.3.5 Smoke Testing 6.3.6 A/B Testing 6.3.7 Property-Based Testing

CI/CD

6.4.1 CI/CD Pipeline Design 6.4.2 Build Automation 6.4.3 Automated Testing in CI 6.4.4 Artifact Management 6.4.5 Deployment Strategies 6.4.6 Blue-Green Deployment 6.4.7 Canary Releases 6.4.8 Rolling Updates 6.4.9 Feature Flags 6.4.10 Environment Management

Code Quality

6.5.1 Code Review Best Practices 6.5.2 Static Code Analysis 6.5.3 Code Metrics 6.5.4 Code Smells 6.5.5 Refactoring Techniques 6.5.6 Linting and Formatting 6.5.7 Documentation Standards 6.5.8 Code Comments Best Practices 6.5.9 Technical Debt Management

Debugging and Profiling

6.6.1 Debugging Strategies 6.6.2 Breakpoints and Watchpoints 6.6.3 Stack Traces 6.6.4 Memory Debugging 6.6.5 Performance Profiling 6.6.6 CPU Profiling 6.6.7 Memory Profiling 6.6.8 Logging Best Practices 6.6.9 Error Handling Strategies 6.6.10 Crash Dump Analysis

Security

Application Security

7.1.1 Input Validation 7.1.2 Output Encoding 7.1.3 SQL Injection Prevention 7.1.4 Cross-Site Scripting (XSS) Prevention 7.1.5 Cross-Site Request Forgery (CSRF) 7.1.6 Session Management 7.1.7 Authentication vs Authorization 7.1.8 Password Security 7.1.9 Multi-Factor Authentication 7.1.10 OAuth and OpenID Connect 7.1.11 JWT Tokens 7.1.12 API Security 7.1.13 Secure File Upload 7.1.14 Security Headers

Cryptography Basics

7.2.1 Hash Functions 7.2.2 Salt and Pepper 7.2.3 Key Derivation Functions 7.2.4 Digital Certificates 7.2.5 Message Authentication Codes 7.2.6 Secure Random Generation 7.2.7 Cryptographic Best Practices

Security Principles

7.3.1 Principle of Least Privilege 7.3.2 Defense in Depth 7.3.3 Zero Trust Architecture 7.3.4 Security by Design 7.3.5 Threat Modeling 7.3.6 OWASP Top 10 7.3.7 Security Auditing 7.3.8 Penetration Testing Basics 7.3.9 Vulnerability Assessment 7.3.10 Security Incident Response

Web Development

HTTP and Web Protocols

8.1.1 HTTP Request/Response Cycle 8.1.2 HTTP Methods 8.1.3 HTTP Headers 8.1.4 Cookies and Sessions 8.1.5 CORS Policy 8.1.6 Content Negotiation 8.1.7 Caching Headers 8.1.8 Compression 8.1.9 Keep-Alive Connections 8.1.10 Server-Sent Events 8.1.11 Long Polling

Web Architecture

8.2.1 Client-Server Architecture 8.2.2 Three-Tier Architecture 8.2.3 Static vs Dynamic Websites 8.2.4 Single Page Applications 8.2.5 Progressive Web Apps 8.2.6 Server-Side Rendering 8.2.7 Client-Side Rendering 8.2.8 Static Site Generation 8.2.9 CDN Usage 8.2.10 Edge Computing 8.2.11 Web Servers vs Application Servers

Web Performance

8.3.1 Performance Metrics 8.3.2 Critical Rendering Path 8.3.3 Resource Loading Optimization 8.3.4 Code Splitting 8.3.5 Lazy Loading 8.3.6 Image Optimization 8.3.7 Minification 8.3.8 Bundle Optimization 8.3.9 Browser Caching 8.3.10 Service Workers 8.3.11 Performance Monitoring

Web Standards

8.4.1 Semantic HTML 8.4.2 Accessibility Standards 8.4.3 SEO Basics 8.4.4 Open Graph Protocol 8.4.5 Schema.org 8.4.6 Web Components 8.4.7 Progressive Enhancement 8.4.8 Responsive Design Principles 8.4.9 Mobile-First Design

Cloud and DevOps

Cloud Fundamentals

9.1.1 Cloud Service Models (IaaS, PaaS, SaaS) 9.1.2 Cloud Deployment Models 9.1.3 Virtualization Concepts 9.1.4 Containers vs Virtual Machines 9.1.5 Cloud Storage Types 9.1.6 Cloud Networking 9.1.7 Cloud Security Basics 9.1.8 Cost Optimization 9.1.9 Multi-Cloud Strategy 9.1.10 Hybrid Cloud

Containerization

9.2.1 Container Fundamentals 9.2.2 Docker Concepts 9.2.3 Container Images 9.2.4 Container Registries 9.2.5 Container Orchestration 9.2.6 Kubernetes Basics 9.2.7 Container Networking 9.2.8 Container Storage 9.2.9 Container Security 9.2.10 Container Best Practices

Infrastructure Management

9.3.1 Infrastructure as Code Principles 9.3.2 Configuration Management 9.3.3 Service Mesh 9.3.4 Monitoring and Observability 9.3.5 Logging Aggregation 9.3.6 Metrics Collection 9.3.7 Distributed Tracing 9.3.8 Alerting Strategies 9.3.9 Chaos Engineering 9.3.10 Disaster Recovery

DevOps Practices

9.4.1 DevOps Culture 9.4.2 Site Reliability Engineering 9.4.3 Incident Management 9.4.4 Post-Mortem Analysis 9.4.5 Change Management 9.4.6 Capacity Planning 9.4.7 Resource Monitoring 9.4.8 Application Performance Management 9.4.9 DevSecOps 9.4.10 GitOps

Data Processing

Data Processing Fundamentals

10.1.1 Batch Processing 10.1.2 Stream Processing 10.1.3 ETL vs ELT 10.1.4 Data Pipelines 10.1.5 Data Validation 10.1.6 Data Cleansing 10.1.7 Data Transformation 10.1.8 Data Integration 10.1.9 Data Quality Management

Big Data Concepts

10.2.1 Big Data Characteristics 10.2.2 Distributed Computing Basics 10.2.3 MapReduce Paradigm 10.2.4 Data Lakes vs Data Warehouses 10.2.5 Data Partitioning 10.2.6 Data Replication 10.2.7 Consistency in Distributed Systems 10.2.8 Lambda Architecture 10.2.9 Kappa Architecture

Data Storage

10.3.1 File Formats (CSV, JSON, Parquet, Avro) 10.3.2 Columnar vs Row Storage 10.3.3 Data Compression Techniques 10.3.4 Data Archival Strategies 10.3.5 Hot, Warm, and Cold Storage 10.3.6 Object Storage 10.3.7 Block Storage 10.3.8 Time-Series Data Storage

Programming Paradigms

Programming Fundamentals

11.1.1 Variables and Data Types 11.1.2 Control Structures 11.1.3 Functions and Procedures 11.1.4 Scope and Lifetime 11.1.5 Parameter Passing Mechanisms 11.1.6 Error Handling Paradigms 11.1.7 Memory Management Concepts 11.1.8 Compilation vs Interpretation 11.1.9 Static vs Dynamic Typing 11.1.10 Strong vs Weak Typing

Object-Oriented Programming

11.2.1 Classes and Objects 11.2.2 Encapsulation 11.2.3 Inheritance 11.2.4 Polymorphism 11.2.5 Abstraction 11.2.6 Interfaces and Abstract Classes 11.2.7 Method Overloading and Overriding 11.2.8 Constructor and Destructor Concepts 11.2.9 Access Modifiers 11.2.10 Static vs Instance Members

Functional Programming

11.3.1 Pure Functions 11.3.2 Immutability 11.3.3 First-Class Functions 11.3.4 Higher-Order Functions 11.3.5 Function Composition 11.3.6 Map, Filter, and Reduce 11.3.7 Closures 11.3.8 Monads and Functors Basics

Concurrent Programming

11.4.1 Concurrency vs Parallelism 11.4.2 Synchronous vs Asynchronous 11.4.3 Blocking vs Non-Blocking 11.4.4 Lock-Free Programming 11.4.5 Actor Model 11.4.6 Futures and Promises 11.4.7 Reactive Programming 11.4.8 Event Loop Model