CrackedRuby
✕
CrackedRuby
Launch App
Learn Ruby
Learn CS
Home
→
Computer Science Fundamentals
Computer Science Fundamentals
Jump to section...
Data Structures and Algorithms
Software Design and Architecture
Databases and Data Management
Operating Systems and Systems Programming
Computer Networks
Software Development Practices
Security
Web Development
Cloud and DevOps
Data Processing
Programming Paradigms
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
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
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
Recursion
11.3.7
Map, Filter, and Reduce
11.3.8
Closures
11.3.9
Currying and Partial Application
11.3.10
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
Race Conditions
11.4.5
Thread Safety
11.4.6
Lock-Free Programming
11.4.7
Actor Model
11.4.8
Futures and Promises
11.4.9
Reactive Programming
11.4.10
Event Loop Model