| 3.1 Learning to program, how people naturally think about computation | | | | | |
|---|
| 3.2 Understanding algorithms | | | | | |
|---|
| 4.1 Design, designing with diagrams | | | | | |
|---|
| 4.2 Coordinating developers | | | | | |
|---|
| 4.3 Finding experts, maintaining awareness, onboarding | | | | | |
|---|
| 5.1 Finding code to reuse | | | | | |
|---|
| 5.2 Designing & documenting APIs | | | | | |
|---|
| 6.1 Exploring code | | | | | |
|---|
| 6.2 Reverse engineering | | | | | |
|---|
| 6.3 Reading code (program comprehension), mental models of programs, and effects of expertise | | | | | |
|---|
| 7.1 Languages and tools for novice and end-user programmers | | | | | |
|---|
| 7.2 Programming by example | | | | | |
|---|
| 7.3 Visual languages | | | | | |
|---|
| 7.4 Textual languages & editors | | | | | |
|---|
| 7.5.1 Copy & paste | | | | | |
|---|
| 7.5.2 Refactoring | | | | | |
|---|
| 7.5.3 Reviewing changes | | | | | |
|---|
| 7.6 Navigating working sets | | | | | |
|---|
| 8.1 Causes of bugs, preventing bugs | | | | | |
|---|
| 8.2 Reporting and triaging bugs | | | | | |
|---|
| 8.3 Debugging | | | | | |
|---|
| 9. End-User Software Engineering | | | | | |
|---|
| 10.1 Pair programming | | | | | |
|---|
| 10.2 Agile | | | | | |
|---|
| 10.3 Test-driven development | | | | | |
|---|
| 10.4 Code organization techniques | | | | | |
|---|