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