You are not allowed to print this document.
Shortcut
to seniority
Badea Robert
X
Receive updates when new content is added!
Confirm subscription
Shortcut to seniority
List of topics
Chapter
Content
Extra chapters
Index
Intro
Outro
Section level : Junior
A journey into the programming realm
1.1 Hardware basics
What is a computer?
Computer hardware
Electric wires
Logical gates
Circuits
1.2 Memory basics
Numbering system
Bit shifting and masking
Signed and unsigned types
Memory address
Endianness
Data representation
Data types
1.3 Software basics
Interaction between hardware and software
Programming languages
Compilation
Libraries
Running the software on the CPU
1.4 Language essentials
Hello world
Variables
Operators
Functions
Decision statements
Flow control: Loops
Jump statements
1.5 Further practice
Quiz
2.1 Data structures
Basic structures
Stack and queues
Hash tables
Graphs
Trees
Heap / Binary heaps
Trie
2.2 Algorithm concepts
Big O notation
Sorting
Recursion
Hashing
2.3 Algorithm techniques
Greedy
Divide et impera
Dynamic programming
Backtracking
2.4 Tree traversals
Inorder
Preorder
Postorder
Level order
2.5 Graph algorithm
Graph traversal
Cycle detection - Union Find
2.6 Searching and sorting
Binary search
Quick sort
Merge sort
2.7 Greedy algorithms
MST - Kruskall
MST - Prim
Shortest path - Dijkstra
Fractional Knapsack
2.8 Dynamic programming
0-1 Knapsack
Shortest path - Bellman-Ford
Travelling salesman Problem
Longest common subsequence
Floyd Warshall Algorithm
2.9 Backtracking
Sudoku
N Queen
Rat in a maze
2.10 Recursion
Towers of Hanoi
2.11 Further practice
Questions
Puzzles
Algorithmic problems
Exercises
3.1 Synchronization topics
Critical Section
Race condition / Data race
Synchronization mechanisms
Atomics
Deadlocks / Livelocks
Inter-process communication (IPC)
Synchronization examples
3.2 OOP concepts
What's a class?
Encapsulation
Abstraction
Inheritance
Polymorphism
3.3 Diagrams
Class diagrams
Component diagrams
State diagrams
Sequence diagrams
3.4 Definitions
Copy on write
Serialization and deserialization
Floating points
API and ABI
3.5 Debugging and bug fixing
Specific terms
Defect severity and priority
Debugging techniques
Section level: Intermediate
The point of no return
4.1 Programming principles and concepts
SOLID principles
General principles
4.2 Architectural patterns
Layered pattern
Model-View-Controller (MVC)
Event driven
Microkernel
Microservices
4.3 Concurrency patterns
Thread pool
Reactor
Proactor
4.4 Integration patterns
Message Channel
Message Translator
Publish-Subscribe
4.5 Design patterns
Observer
Template method
State
Adapter
4.6 Anti patterns
Big ball of mud
God object
Spaghetti code
Copy and paste programming
The golden hammer
Sequential coupling
Lasagna code
Circular dependency
Dependency hell
4.7 Refactoring
Extract method
Introduce explaining variable
Extract class
Replace data value with Object
Replace Magic Number with Symbolic Constant
Decompose conditional
Consolidate Duplicate Conditional Fragments
Rename Method
Parameterize Method
Pull Up Method/Field
Push Down Method/Field
4.8 Code smells
Duplicated code
Long method
Primitive obsession
Switch statements
Comments
4.9 Advices / Final words
Advices / Final words
4.10 Further practice
Further practice
5.1 Software development processes
Software paradigms
Software development life cycle
Software development process models
Software methodologiees / Philosophies
Software practices
5.2 Programming tools
Programming tools
5.3 Effective time management
Effective time management
5.4 The social programmer
Psychology
Identify your weaknesses
Identify your strengths
How to become a great programmer?
5.5 Workstyle collaboration
Workstyle collaboration
5.6 Learning to learn
Learning to learn
5.7 Interviewing process
Interviewing process
5.8 Problem solving
Strategy for solving a programming problem
Tackling the problem: String reverse
Example of dividing the problem into sub-problems
Task: Online Functionality
Task: Upload and security
Practicing the problem solving skill
5.9 Further practice
Further practice
Section level: Senior
Leaping into the unknown
6.1 Game development
Specific terms
Algorithms
Patterns
Challenges
Networking
6.2 Embedded
Specific terms
Microcontrollers
Requirements: Hardware Knowledge
What you have to learn
6.3 Mobile
Specific terms
How mobile development is done
Mobile Essentials
6.4 Web development
Specific terms
Web developer types
How the web works
CSS preprocessors
Rendering
Web service integration - REST vs SOAP
User experience
Web vulnerabilities
Web performance
6.5 Further practice
Questions
Exercises
7.1 Architecture
Specific terms
Quality Attributes
4 + 1 architectural view model
Architecture in detail
7.2 Performance / Optimization
Definitions
Optimization techniques
Code profiling
Summary
7.3 Software quality
Specific terms
Coding standards
Static source code analysis
Software development metrics
Code reviews
7.4 Security
Specific terms and abbreviations
Security errors
Computer hacking
Secure coding practices
7.5 Documentation
Specific terms
Documentation tools
Why should we write documentation?
What to include in the documentation?
7.6 Devops
Pre-Devops era
Devops values
Phases of devops maturity
Tooling and processes
7.7 Testing
Specific terms
Testing types
Artifacts / Definitions
Manual testing
Unit testing
Automated testing
Test doubles
7.8 Databases
Specific terms
Properties of database transaction
Relational vs Non-relational databases
Database Replication
7.9 Software compliance
Software compliance
7.10 System design
Specific terms
Design techniques
Design interview
7.11 Frameworks
Events (Message)
Events Queue (Message Queue)
Services
Service broker (Dispatcher)
Timers
Loggers
7.12 Networking
OSI Architecture Model
Transport layer
SSH vs Telnet
7.13 The Operating System
Specific terms
Process Scheduling
Memory management
7.14 Concepts and trending technologies
Robotic Process Automation (RPA)
Big data
Internet of things (IOT)
Cloud
Augmented Reality and Virtual Reality
Blockchain
Artificial intelligence (AI)
7.15 Further practice
Further practice
Appendix pages
Appendix A: Further reading
Appendix B: Interview Example - Behavioral questions
Appendix C: Interview Example - Candidate questions
Back to index
Read the book