CrackedRuby logo

CrackedRuby

Computer Science 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

Operating Systems and Systems Programming

Computer Networks

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 Infrastructure as Code 6.4.11 Configuration Management 6.4.12 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

Web Development

Cloud and DevOps

Data Processing

Programming Paradigms