Programming Concepts
Fundamental Paradigms
Object-Oriented Programming
- Encapsulation - Bundling data and methods that operate on that data
- Inheritance - Mechanism where a class can inherit properties from another class
- Polymorphism - Ability to present the same interface for different underlying forms
- Abstraction - Hiding complex implementation details behind simple interfaces
Functional Programming
- Pure Functions - Functions without side effects that return values solely based on inputs
- Immutability - Data cannot be changed after creation
- Higher-Order Functions - Functions that take or return other functions
- Recursion - Functions that call themselves to solve problems
Data Structures
- Arrays - Collection of elements identified by index
- Linked Lists - Linear collection of nodes, each pointing to the next
- Hash Tables - Key-value data structure with efficient lookup
- Trees - Hierarchical data structure with parent-child relationships
- Graphs - Collection of nodes (vertices) connected by edges
Algorithms
- Sorting - Arranging data in a specific order (quicksort, mergesort, etc.)
- Searching - Finding elements in a data structure (binary search, etc.)
- Dynamic Programming - Breaking problems into simpler subproblems
- Greedy Algorithms - Making locally optimal choices at each stage
Design Patterns
- Creational Patterns - Factory, Singleton, Builder
- Structural Patterns - Adapter, Decorator, Composite
- Behavioral Patterns - Observer, Strategy, Command
Software Development Principles
- SOLID - Single responsibility, Open-closed, Liskov substitution, Interface segregation, Dependency inversion
- DRY - Don't Repeat Yourself
- KISS - Keep It Simple, Stupid
- YAGNI - You Aren't Gonna Need It
Back to Homepage