On this page:
Lectures
8.14.0.4

Lectures🔗

    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