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
|
|
|
|
|
|