Programming Fundamentals
I find useful for any subject to revisit the fundamentals. This often allow us to find simpler and more elegant solutions, by leveraging a smaller set of basic tools in more interesting ways.
Below is a compilation of programming concepts that is useful in day-to-day programming. I hope to write something for each of them.
Data Structures
- Queues
- Stacks
- Priority Queues (Heaps)
- Hash Maps
- Dynamically-sized Arrays
Algorithms
- Depth-First Search (DFS)
- Breadth-First Search (BFS)
- Quick sort
- Binary Search
- String Search (KMP)
Design Patterns
- Observer/Listener/PubSub Pattern
- Command Pattern
- Dependency Injection
Testing
- Unit Testing (with Dependency Injection and Mocking)