SICP - Lecture Notes Summary


01A - Introduction to LISP

  • Lecture Info

  • What is Computer Science?

    • Two different form of knowledge

    • What's a Process?

    • Computer Science is not Real

  • Dealing with Complexity

    • Black-Box Abstraction

    • Conventional Interfaces

    • Metalinguistic Abstractions

  • Basics of LISP

    • Primitive data

    • Means of combinations

    • Means of abstraction

    • Case analysis

  • Approximating \(\sqrt{x}\)

    • Basic Implementation

    • Example

    • Block Structure

01B - The Substitution Model

  • Lecture Info

  • The Substitution Model

    • Example

    • Evaluating Conditionals

    • Shapes of Processes

      • (Linear) Iteration

      • (Linear) Recursion

      • Iteration vs Recursion

  • Examples

    • Fibonacci

    • Towers of Hanoi

02A - Higher Order Procedures

  • Lecture Info

  • Abstracting Sums

  • Fixed-Point Method

  • Netwon's Method

  • First-Class Citizens in Programming

02B - Data Abstraction

  • Lecture Info

  • Abstraction Barriers for Data

  • Rational Arithmetic

    • Constructor and Selectors

    • Basic Operations

    • List structure in LISP

    • Usage

    • Data Abstraction

  • Geometric Entities

  • Closure

  • Abstract Data

    • Pairs in terms of Procedures

03A - Henderson Language

  • Lecture Info

  • Lists in LISP

    • Map

    • For-Each

  • Henderson Language

    • High-Level Description

    • Implementation

      • Rectangles

      • Pictures

      • Means of Combinations

      • Means of Abstractions

03B - Symbolic Differentiation

  • Lecture Info

  • Robust Systems

  • Differentiation

  • The Quotation Operator

  • Representing Algebraic Expressions

    • Constants and Variables

    • Sums

    • Products

    • Simplifying

04B - Generic Operators

  • Lecture Info

  • Vertical Abtraction Barriers

  • Arithmetic on complex numbers

    • Operations

    • Representation

      • With cartesian coordinates

      • With polar coordinates

      • Which is better?

    • Typed Data

  • How to Implement Generic Operators

    • Dispatch on Type

    • Data Directed Programming

  • Generic Arithmetic System

    • Rational Numbers

    • Complex numbers

    • Ordinary Numbers

    • Example

    • Polynomials

05A - Assignment

  • Lecture Info

  • Functional Programs

  • The Assignment Operator

  • The Failure of the Substitution Model

  • The Environment Model

    • Definitions

      • Bound Variables

      • Quantifier

      • Free Variables

      • Scope

    • Environment

    • Procedure

    • The Environment Model Rules

    • Example

  • Computational Objects

    • When are two Objects Different?

    • Actions and Identity

    • Object-Oriented Programming

  • Cesaro's Method for Estimating \(\pi\)

    • With Assignments

    • Without Assignments