Skip to content

sicp-study/sicp-2019

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SICP Study, a collaborative classroom style learning

This project is for peer reviewing the Structure and Interpretation of Computer Programs (SICP) assigments using this workflow:

  • Watch the lecture and read the book,
  • Submit assignments before Friday, and
  • Review others assignments on Friday.

Bookmarks:

Do not edit this document directly, instead modify the README.org file and re-export the markdown and ics file.

Submit Assignment

To submit an assignment, first create a folder with your name in the assignments directory and add your answers in text file(s). Any file format or directory structure will do. For example:

  • assignments/my-name/solution-1.txt
  • assignments/my-name/week1/1.2.scm

Note that if the file name matches an exercise number, then an evaluation script will be used to validate the code (wip). Org-mode tangle are also supported, feel free to use the template.

Then submit a Pull request with the assignment name in the commit message.

Review Assignment

Go to the pull request list and pick another student assignment. Click the Files Changed button and check the answers. Feel free to add comment or ask for clarification by clicking the blue + sign. If the answers look correct to you, click the Review changes button and Approve the change.

When one or more other studends already approved a change, then add a mergeit label to close the pull request.

2019 Schedule

This is a weekly schedule adapted from this meetup:

Chapter 1

DONE 1.1 (The Elements of Programming)

DEADLINE: <2019-01-11 Fri>

lecture

  • For exercice 1.3, name the function square-sum-larger.
  • For exercise 1.7, name the function sqrt
  • For exercise 1.8, name the function cube-root

DONE 1.2 (Procedures and the Processes They Generate)

DEADLINE: <2019-01-18 Fri>

lecture

  • For exercise 1.11, name the procedure f-recursive and f-iterative
  • For exercise 1.12, name the procedure (pascal row col), with row and col starting at 1. The procedure should return -1 for invalid operands.
  • For exercise 1.16, name the procedure (fast-expt-iterative b n)
  • For exercise 1.17, name the procedure (fast-mult a b)
  • For exercise 1.18, name the procedure (fast-mult-iterative a b)

DONE 1.3 (Formulating Abstractions with Higher-Order Procedures)

DEADLINE: <2019-01-25 Fri>

lecture

  • For exercise 1.29, name the procedure simpson-integral
  • For exercise 1.31, name the recursive product: product-recursive, the iterative produce: product, the factorial: (factorial n), and (john-wallis-pi n) the pi approximationg using n terms (the example is n=6).
  • For exercise 1.32, name the recursive accumulate: accumulate-recursive, the iterative accumulate: accumulate.
  • For exercise 1.33, name the procedures (sum-square-prime a b) and (sum-coprime n).
  • For exercise 1.37, name the procedures count-fract-recursive and count-fract.
  • For exercise 1.38, name the D procedures (euler-sequence k) and the number (euler-number k).
  • For exercise 1.44, name the procedure (nfold-smooth f n)
  • For exercise 1.45, name the procedure (nroot n x)

Chapter 2

DONE 2.1.1 & 2.1.2 & 2.1.3 (Introduction to Data Abstraction)

DEADLINE: <2019-02-01 Fri>

lecture-2b

  • For exercise 2.3, name the procedures (make-rectangle point1 point2), perimeter-rectangle and area-rectangle.

DONE 2.1.4 (Interval Arithmetic)

DEADLINE: <2019-02-08 Fri>

DONE 2.2.1 & 2.2.2 (Hierarchical Data and the Closure Property)

DEADLINE: <2019-02-15 Fri>

lecture 3a (first half)

  • For exercise 2.29, assume a list based implementation of mobile and branch
  • For exercise 2.30, name the functions square-tree and square-tree-with-map

DONE 2.2.3 (Sequences as Conventional Interfaces)

DEADLINE: <2019-02-22 Fri>

  • For exercise 2.41, name the procedure (ord-triples-sum n s)

DONE 2.2.4 (A Picture Language)

DEADLINE: <2019-03-01 Fri>

lecture 3a (second half)

To use the picture language, you can use DrRacket and load this library.

DONE 2.3.1 & 2.3.2 (Symbolic Differentiation)

DEADLINE: <2019-03-08 Fri>

lecture 3b lecture 4a

DONE 2.3.3 (Representing Sets)

DEADLINE: <2019-03-15 Fri>

  • For exercise 2.65, name the procedure union-set-tree and intersection-set-tree

DONE 2.3.4 (Huffman Encoding)

DEADLINE: <2019-03-22 Fri>

DONE 2.4 (Data Representations)

DEADLINE: <2019-03-29 Fri>

lecture 4b (first half)

DONE 2.5.1 & 2.5.2 (Generic Operations)

DEADLINE: <2019-04-05 Fri>

lecture 4b (second half)

To run the code, use this put/get implementation:

(define *op-table* (make-hash-table))

(define (put op type proc)
  (hash-table/put! *op-table* (list op type) proc))

(define (get op type)
  (hash-table/get *op-table* (list op type) '()))

(define (put-coercion source-type target-type proc)
  (put 'coercion (list source-type target-type) proc))

(define (get-coercion source-type target-type)
  (get 'coercion (list source-type target-type)))

DONE 2.5.3 (Symbolic Algebra)

DEADLINE: <2019-04-12 Fri>

Chapter 3

3.1 (Local State)

DEADLINE: <2019-04-19 Fri>

lecture

3.2 (The Environmental Model)

DEADLINE: <2019-04-26 Fri>

3.3.1 & 3.3.2 (Mutable Lists and Queues)

DEADLINE: <2019-05-03 Fri>

lecture

3.3.3 & 3.3.4 (Mutable Tables and Circuit Simulation)

DEADLINE: <2019-05-10 Fri>

3.3.5 (Propagation of Constraints)

DEADLINE: <2019-05-17 Fri>

3.4 (Concurrency)

DEADLINE: <2019-05-24 Fri>

lecture

3.5.1 & 3.5.2 (Infinite Streams)

DEADLINE: <2019-05-31 Fri>

lecture

3.5.3 (Exploiting the Stream Paradigm)

DEADLINE: <2019-06-07 Fri>

3.5.4 & 3.5.5 (Streams and Delayed Evaluation)

DEADLINE: <2019-06-14 Fri>

Chapter 4

4.1.1 & 4.1.2 (Metacircular Doohickeys)

DEADLINE: <2019-06-21 Fri>

lecture

4.1.3 & 4.1.4 & 4.1.5 & 4.1.6 & 4.1.7 (Evaluators are Programs Too)

DEADLINE: <2019-06-28 Fri>

4.1.3 & 4.1.4 & 4.1.5 & 4.1.6 & 4.1.7 (Evaluators are Programs Too)

DEADLINE: <2019-07-05 Fri>

4.2.1 & 4.2.2 (Lazy Evaluators Need Motivation)

DEADLINE: <2019-07-12 Fri>

lecture

4.2.3 (Lazy Streams Wend Cross Dales)

DEADLINE: <2019-07-19 Fri>

4.3.1, first half of 4.3.2 (Non-deterministic Computing Exclamation Point)

DEADLINE: <2019-07-26 Fri>

remainder of 4.3 (Implementing Amb)

DEADLINE: <2019-08-02 Fri>

4.4.1 (Deductive Information Retrieval)

DEADLINE: <2019-08-09 Fri>

lecture

4.4.2, 4.4.3

DEADLINE: <2019-08-16 Fri>

4.4.2, 4.4.3

DEADLINE: <2019-08-23 Fri>

Week off!

4.4.4.1&2

DEADLINE: <2019-09-06 Fri>

lecture

4.4.4.3&4

DEADLINE: <2019-09-13 Fri>

Chapter 5

5.1

DEADLINE: <2019-09-20 Fri>

lecture

5.1.1-5.1.2

DEADLINE: <2019-09-27 Fri>

5.1.3-5.1.5

DEADLINE: <2019-10-04 Fri>

5.2.1

DEADLINE: <2019-10-11 Fri>

lecture

5.2.2

DEADLINE: <2019-10-18 Fri>

5.2.3-5.2.4

DEADLINE: <2019-10-25 Fri>

5.3

DEADLINE: <2019-11-01 Fri>

lecture

5.4.1 & 5.4.2

DEADLINE: <2019-11-08 Fri>

lecture

5.4.3 & 5.4.4

DEADLINE: <2019-11-15 Fri>

5.5.1 & 5.5.2

DEADLINE: <2019-11-22 Fri>

5.5.3 & 5.5.4

DEADLINE: <2019-11-29 Fri>

5.5.5 & 5.5.6

DEADLINE: <2019-12-06 Fri>

Ending

SICP The Final Chapter! (SICP The End)

SCHEDULED: <2019-12-13 Fri>

SICP REVIEW PARTY!!! (SICP Review Party!)

SCHEDULED: <2019-12-20 Fri>

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages