- Communication
- Problem solving/decomposition
- Functional programming (FP)
- pure functions
- side effects (FP doesn't want them!)
- higher order functions
- monads
- category theory
- Imperative, Structural, and Procedural programming
- Object-oriented programming (OOP)
- classes
- methods
- constructor/destructor
- polymorphism
- inheritance
- overriding
- interfaces
- visibility
- Programming language concepts
- Compiled vs interpreted
- Bytecode
- Static/dynamic typing: http://wiki.c2.com/?StaticTyping
- Stong/weak typing
- Data structures
- List
- Tree
- Map
- Set
- Graph
- Version Control
- git
- branches
- git
- Unix/Linux
- processes
- files
- command line
- bash scripting language
- Concepts
- bits & bytes
- scope
- closures
- regex
- hash
- encryption (symmetric vs asymetric)
- caching
- recursion
- parallelism / concurrency
- atomicity
- big-o
- sorting
- searching
- generators
- serialization (JSON, XML, binary formats, ...)
- blocking vs asynchronous operations
- Databases
- Relational databases
- SQL
- Web development
- HTML/CSS/JavaScript
- HTTP
- templating
- Development
- Library vs framework
- Test driven development
- Refactoring
- Cohesion vs coupling
Misc links