1 Motivation & Overview
1.1 What is it sw? What is sw dev about?
1.2 Pairs and PLs
1.3 Prepares TAHBPL/A
1.4 Administrivia (time permitting)
2 What We Teach
2.1 How the Course Works
2.1.1 Project
2.1.2 TAHBPL
2.1.3 Social Processes
2.2 So What Can You Learn Here, What do We Want You to Learn
2.2.1 Technical: What you’re likely to remember most ...
2.2.2 Sociology of Programming
2.2.3 [5 mins] Psychology of Programming
2.3 We’re Here to Critique You Because We Think All of You Can Improve
3 Component Discovery, Abstractly
3.1 What is a Software System, Introduction
3.2 Running a Software System
3.3 Developing a Complete System
3.4 If you’re Ben:
4 Component Discovery, Illustrated
4.1 The Idea
4.1.1 Spiraling away from the Idea
4.1.2 Drawing the Boundary; Use Cases
4.1.3 Component Identification
4.2 Milestone 1
4.3 TA HB PL B
5 Software Architectures
5.1 Model View Control
5.2 Pipelines
5.3 Client-Server
5.4 Architectures for Bazaar
5.5 Administrivia, Finally
6 Interfaces for Components
6.1 Components
6.2 Interfaces
6.3 Encapsulation
6.4 Types and Interfaces
6.4.1 Null Checking
6.4.2 Types are too Loose
6.4.3 Value-Dependent Promises
6.4.4 Assertions in Open Systems
6.5 Temporal Constraints
6.5.1 Android Media Player
6.6 Resource Constraints
6.7 Sum Total
7 Sprints & Questions
7.1 Sprint Memos
7.1.1 Evaluating Descriptions of Sprints
7.1.2 Memo 1
7.1.3 Memo 2
7.1.4 Memo 3
7.1.5 Memo 4
7.2 Questions
7.3 C
8 Programming Components
8.1 Clarity of Code
8.2 Comments
8.3 The Very Basics
8.3.1 Names
8.3.2 Size of Functions and Methods
9 Design and Reasoning
9.1 Program Design
9.1.1 Data Representations and Functionality
9.1.2 Functionality Extensions
9.1.3 Variant Extensions
9.1.4 Data Representations for Intermediate Data
9.2 Reasoning
9.2.1 Do the ++ functions receive directories?
9.2.2 Why are Files Never Replaced?
10 The Programmer
10.1 The Nature of Programming
10.2 Egoless Programming
10.3 Pair Programming
11 The Team
11.1 Background
11.2 Presenting
11.3 Paneling
11.3.1 How to Ask Questions
11.3.2 The Goal
11.3.3 Questioning What Is Presented
12 Practice Code Walks 1
13 Practice Code Walks 2
14 Beyond Software Development
14.1 Today
14.2 Assertions
14.3 Contracts
14.4 How to do some of this in Java
14.5 Higher-order Contracts
14.6 Stretch Goal: Trace Contracts