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:
- iCalendar schedule.
- MIT courses, videos archive.
- The SICP book, epub version.
- ensure-mit-scheme Ansible installer.
Do not edit this document directly, instead modify the README.org file and re-export the markdown and ics file.
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.
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.
This is a weekly schedule adapted from this meetup:
DEADLINE: <2019-01-11 Fri>
- 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
DEADLINE: <2019-01-18 Fri>
- 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)
DEADLINE: <2019-01-25 Fri>
- 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)
DEADLINE: <2019-02-01 Fri>
- For exercise 2.3, name the procedures (make-rectangle point1 point2), perimeter-rectangle and area-rectangle.
DEADLINE: <2019-02-08 Fri>
DEADLINE: <2019-02-15 Fri>
- 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
DEADLINE: <2019-02-22 Fri>
- For exercise 2.41, name the procedure (ord-triples-sum n s)
DEADLINE: <2019-03-01 Fri>
To use the picture language, you can use DrRacket and load this library.
DEADLINE: <2019-03-08 Fri>
DEADLINE: <2019-03-15 Fri>
- For exercise 2.65, name the procedure union-set-tree and intersection-set-tree
DEADLINE: <2019-03-22 Fri>
DEADLINE: <2019-03-29 Fri>
DEADLINE: <2019-04-05 Fri>
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)))
DEADLINE: <2019-04-12 Fri>
DEADLINE: <2019-04-19 Fri>
DEADLINE: <2019-04-26 Fri>
DEADLINE: <2019-05-03 Fri>
DEADLINE: <2019-05-10 Fri>
DEADLINE: <2019-05-17 Fri>
DEADLINE: <2019-05-24 Fri>
DEADLINE: <2019-05-31 Fri>
DEADLINE: <2019-06-07 Fri>
DEADLINE: <2019-06-14 Fri>
DEADLINE: <2019-06-21 Fri>
DEADLINE: <2019-06-28 Fri>
DEADLINE: <2019-07-05 Fri>
DEADLINE: <2019-07-12 Fri>
DEADLINE: <2019-07-19 Fri>
DEADLINE: <2019-07-26 Fri>
DEADLINE: <2019-08-02 Fri>
DEADLINE: <2019-08-09 Fri>
DEADLINE: <2019-08-16 Fri>
DEADLINE: <2019-08-23 Fri>
DEADLINE: <2019-09-06 Fri>
DEADLINE: <2019-09-13 Fri>
DEADLINE: <2019-09-20 Fri>
DEADLINE: <2019-09-27 Fri>
DEADLINE: <2019-10-04 Fri>
DEADLINE: <2019-10-11 Fri>
DEADLINE: <2019-10-18 Fri>
DEADLINE: <2019-10-25 Fri>
DEADLINE: <2019-11-01 Fri>
DEADLINE: <2019-11-08 Fri>
DEADLINE: <2019-11-15 Fri>
DEADLINE: <2019-11-22 Fri>
DEADLINE: <2019-11-29 Fri>
DEADLINE: <2019-12-06 Fri>
SCHEDULED: <2019-12-13 Fri>
SCHEDULED: <2019-12-20 Fri>