# Computer Science Core Concepts
# Computer Science Core Concepts
2. Linked Lists
- Non-contiguous memory allocation
- O(n) access time
- Dynamic size
- Each node contains data and reference to next node
3. Trees
- Hierarchical structure
- Root node with child nodes
- Binary trees: max 2 children per node
- Used in search algorithms and databases
1. Encapsulation
- Bundling data and methods that operate on that data
- Information hiding
- Public vs private access modifiers
2. Inheritance
- Creating new classes based on existing ones
- Parent/child relationship
- Code reuse and hierarchy
3. Polymorphism
- Multiple forms of a single interface
- Method overriding
- Method overloading
4. Abstraction
- Hiding complex implementation details
- Showing only necessary features
- Interface-based programming
1. Key Concepts
- Tables (Relations)
- Primary and Foreign Keys
- Normalization
- ACID properties
2. SQL Operations
- SELECT, INSERT, UPDATE, DELETE
- JOIN operations
- Aggregation functions
- Indexing
3. Normalization Forms
- 1NF: Atomic values
- 2NF: Full functional dependency
- 3NF: No transitive dependencies
- BCNF: Every determinant is a candidate key
1. Types
- Document stores (MongoDB)
- Key-value stores (Redis)
- Column-family stores (Cassandra)
- Graph databases (Neo4j)
2. CAP Theorem
- Consistency
- Availability
- Partition tolerance
1. Process States
- New
- Ready
- Running
- Waiting
- Terminated
2. Scheduling Algorithms
- First-Come, First-Served (FCFS)
- Shortest Job First (SJF)
- Round Robin (RR)
- Priority Scheduling
1. Virtual Memory
- Page tables
- Page faults
- Memory mapping
2. Memory Allocation
- Segmentation
- Paging
- Fragmentation
### Concurrency
1. Thread vs Process
- Shared resources
- Context switching
- Communication methods
2. Synchronization
- Mutexes
- Semaphores
- Deadlock prevention