mirror of
https://github.com/extreme-tech-seminar/extreme-tech-seminar.github.io.git
synced 2024-11-14 19:19:34 +00:00
[post] SICP Recap
This commit is contained in:
parent
63e61924d2
commit
e1022debba
1 changed files with 86 additions and 0 deletions
86
_posts/2015-05-26-sicp-recap.md
Normal file
86
_posts/2015-05-26-sicp-recap.md
Normal file
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
layout: post
|
||||
title: SICP Recap
|
||||
author: Correl Roush
|
||||
---
|
||||
|
||||
Now that we've completed our study of Abelson and Sussman's Structure
|
||||
and Interpretation of Computer Programs, here's a quick recap of the
|
||||
topics we've covered.
|
||||
|
||||
Notes and exercise work from each meeting can be found on
|
||||
[Github](https://github.com/extreme-tech-seminar/sicp).
|
||||
|
||||
# Chapter 1: Building Abstractions with Procedures
|
||||
|
||||
In the first chapter, we got acquainted with the simple syntax of
|
||||
scheme, and learned how to build up layers of abstraction using
|
||||
functions.
|
||||
|
||||
## Important Concepts
|
||||
|
||||
- Evaluation
|
||||
- The Substitution Model
|
||||
- Compound Procedures
|
||||
- Recursion
|
||||
- Higher-Order Procedures
|
||||
|
||||
# Chapter 2: Building Abstractions with Data
|
||||
|
||||
In the second chapter, we learned how to build more complex data
|
||||
structures, and how to write functions to operate on them at different
|
||||
levels of abstraction.
|
||||
|
||||
## Important Concepts
|
||||
|
||||
- The Closure Property
|
||||
- Sequences
|
||||
- Symbolic Data
|
||||
- Data-Directed Programming
|
||||
- Generic Operations
|
||||
|
||||
# Chapter 3: Modularity, Objects, and State
|
||||
|
||||
With a firm grasp on the core concepts of functional programming, we
|
||||
took a look at assignment with a fresh perspective, and examined the
|
||||
pros and cons of including assignment and state in our programs.
|
||||
|
||||
## Important Concepts
|
||||
|
||||
- The Costs and Benefits of Assignment
|
||||
- The Environment Model of Evaluation
|
||||
- Mutable Data Structures
|
||||
- Concurrency
|
||||
- Streams
|
||||
- Delayed Evaluation
|
||||
|
||||
# Chapter 4: Metalinguistic Abstraction
|
||||
|
||||
We moved up another level of abstraction, and started to look at the
|
||||
scheme language and how to implement it. We learned how delayed
|
||||
evaluation works by implementing it in our own version of scheme, and
|
||||
explored the declarative world of logic programming.
|
||||
|
||||
## Important Concepts
|
||||
|
||||
- Data as Programs
|
||||
- Separating Syntactic Analysis from Execution
|
||||
- Lazy Evaluation
|
||||
- Normal vs. Applicative Order
|
||||
- Non-deterministic Computing
|
||||
- Logic Programming
|
||||
|
||||
# Chapter 5: Computing with Register Machines
|
||||
|
||||
Finally, we moved out of the language a bit and implemented a virtual
|
||||
machine to explore low-level implementations of computer programs and
|
||||
to better understand how the physical limitations of processing speed
|
||||
and memory space affect the programs that we write.
|
||||
|
||||
## Important Concepts
|
||||
|
||||
- Abstraction in Machine Design
|
||||
- Using a Stack to Implement Recursion
|
||||
- Storage Allocation and Garbage Collection
|
||||
- Monitoring Machine Performance
|
||||
- Compilation
|
Loading…
Reference in a new issue