Table of Contents
올해 여름(2005년 여름)에 다시 한번 보자.
http://wiki.cs.uiuc.edu/MFA/DOWNLOAD/ArtAnnotation.pdf :) http://wiki.cs.uiuc.edu/MFA/DOWNLOAD/ArtOfTheInterpreter1.lisp
berkeley webcast 2003 spring
http://webcast.berkeley.edu/courses/archive.html?prog=40&group=52 SimplyScheme 저자가 버클리 강의 하는 아저씨 이다. http://inst.eecs.berkeley.edu/~cs61a/misc/reader-sum03-v1.2.pdf lecture note 수업뉴스그룹 CS61a TA CS61a TA [https://www-inst.eecs.berkeley.edu/~instcd/inst-cd/classes/cs61a/ 강의노트와 라이브러리 제공]
[https://www-inst.eecs.berkeley.edu/~instcd/inst-cd/classes/cs61a/lib.zip sicp 코드모음]
cs61a service center 2003summer homework 2000 summer: 61a수업자료가 잘 정리 되어있다. stanford 강의노트 61a summer 수업받는 학생 노트
일정
Structure
- Functional Programming 1 (V)
- Functional Programming 2 (V)
- cond 사용
- member 사용
- 페러다임
functional programming, oop, logical
||application || || high level language|| || low level language|| || machine language || || architecture|| || logic gates|| || transistors|| || solid state physics || || quantum physics ||
- Higher-order Procedures 1 (V) : function as data
- Higher-order Procedures 2 (V) : function as data
- Culture Day: Film on User Interface Design : 앨런케이 강연 비디오 틀어줌 (V)
앗 잠온다. -_-;;
- Culture Day: Film on User Interface Design : 이어서 틀어줌
- Recursion and Iteration (V)
- Recursion and Iteration (V) 7/23
보통 recursion버전과 recusion의 개선버전인 iteration버전의 차이.
- Programming Methodology (V) 머드라? 다시 볼 필요성이 있음.
- .. (V) documantation , debugging
- Programming Methodology (V)
뒷부분에 시각이 남아서 unix에 대해서 가르쳤는데, 멋지게 가르쳤다. :)
- Data Abstraction, Sequences (V)
- Data Abstraction, Sequences (V)
- Hierarchical Data (V)
tree
- Hierarchical Data (V)
- Hierarchical Data (V)
- Representing Abstract Data (V)
taged data , direct data programming(기본적인 추상화)
- Representing Abstract Data (V)
message passing(사람이 말을 이해할때 어순이 중요하군)
- Representing Abstract Data (V)
david a patterson 의 하드웨어 강연 (i/o, raid, libraay and digital data)
디지털로 데이터를 바꾸면서 손해를 보는건 머가 있을까? 책의 느낌(물건에 대한 감정), 저작권보호 * oop (V) * oop (V) * oop (V) 스몰토크 비디오. :) 이해가 쏘옥 들어오게 설명한다. 보통 계층성을 지시적(당연히 쓰는거라고)으로 알려주는데, 문제제시하고 해결방안으로 계층성을 이야기한다. 각 oop의 중요요소들을 긴밀하게 연결해준다. :) 어째 요즘 설명보다 70년대 설명이 더 좋은거 같다. ( 뒷부분 다시 볼 필요성이 있다.) * Assignment, State, Environments (V) 중간에 잘 이해안가는 부분이 있음(다시 봐야겟다.) * Assignment, State, Environments (V) * Assignment, State, Environments (V) * mutable (V) * mutable (V) * mutable (V) * Networks, Client/Server (V) * Networks, Client/Server (V) -대강 봄 * Culture Day : Wireless security * Metacircular Evaluator (?) 봤던가? * Metacircular Evaluator (V) * Metacircular Evaluator (V) * Concurrency (V) * Concurrency (V) * Concurrency (V) * Streams (V) * Streams (V) * Streams (V) * Logic Programming (V) * Logic Programming (V) * Logic Programming (V) * Review (V) 대강 봄
—- Interpretation
- Metacircular Evaluator (V) ; Interpretation 부분이 시작 되었다. scheme interpretor를 간단하게 구현했다. lecture 4.1 micro.scm , mceval.scm
- Metacircular Evaluator (V) ; LOGO에 대해 이야기 한다. 왜 LOGO가 애들에게 다가가기 쉬운가?(dynamic scope) logo 는 function과 variable 의 네임스페이스가 다르다.(스킴은 right bubble에 의존하는데 반해..)
scheme repositort
http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/scheme/ http://www.faqs.org/faqs/scheme-faq/part1/ http://swissnet.ai.mit.edu/~jaffer/Scheme.html
scheme 참 간단하다. (define ? ?) 으로 변수 할당, 함수 까지 다 맹글어 버린다. 추상화라.. 추상화는 CS 뿐만 아니라, 모든 과학의 메인 아이디어 이다. 우와..SICP 강좌는 어떤 테크닉(or check list)을 알려준다기 보다도, 어떤 원리를 알려준다. sicp 를 보고 생각하는 방식이 변하지 않는다면 sicp를 잘 못 본것 이라고 한다. SICP 수업을 들으면 들을 수록 CS에 메인 기초적 아이디어와, 원리를 이야기 해준다. 직접 멀 지칭하지는 않지만, 생각의 바탕을 깔아주는듯..
HTDP 구체적 개념소개는 많이 안하지만, 각각의 기본적인 원리를 이야기 하면서 푼다. oop나 function 이나 따로 소개는 하기보다, 데이타 추상화, 숨기기 부분에서 자연스럽게 접근하게 한다.
emacs
;; .emacs ;; STK Scheme (setq scheme-program-name "stk-cs61a") (show-paren-mode 1) (global-font-lock-mode t) (add-hook 'text-mode-hook '(lambda () (auto-fill-mode 1))) (add-hook 'inferior-scheme-mode-hook (lambda () (split-window)))
meta+s : run-scheme ctrl+c+z : switch-*scheme* ctrl+c+l : load scheme-file to *scheme* ctrl+c+e : evaluate scheme expression Ctrl+l : will move the display so that the line containing the cursor is centered vertically. Meta+/ : auto completion
'church number
'
재밌는 예제!
(define zero (lambda (f) (lambda (x) x))) (define (1+ n) (lambda (f) (lambda (x) (f ((n f) x))))) (define one (1+ zero)) (define two (1+ one)) | f(x) = x*x 를 나타내면 (define (f x) (* x x)) | f(f(10)) 를 나타내면 ((two f) 10) | f(f(10)을 lambda 식으로 풀어 쓰면 (((lambda (f) (lambda (x) (f (f x)))) (lambda (x) (* x x))) 10) |
scheme 은 간단하다. 자료와 프로시져(함수)를 따로 구분하지 않고 둘다 어떤 것(오브젝트)으로 본다. 그 어떤 것을 define 이라는 돌도끼로 다듬어 쓸만한 것을 만든다.