4190.210 Principles of Programming
강의: 수 16:00-17:50 @ 302동 106호
실습: 월 16:00-17:50 @ 302동 311호
학생들이 프로그램 작성의 기본 원리, 구성 요소, 프로그래밍 미학등을
습득하게 함으로써, 소프트웨어 시스템이 드러내는 복잡성을 손쉽게 다룰
수 있는 능력과 자신감을 익히게 한다. 더군다나, 프로그램이 기계를 사용하기 위한
도구라는 제한된 시각에서 벗어나 기계가 프로그램 실행을 위한 도구라는
시각을 갖추도록 보정해준다.
이 강의는 프로그래밍 연습(training)이 아니라 프로그래밍
교육(education)이다. 학생들이 특정 언어의 프로그래밍에 익숙하도록
연습받지 않는다. 보다 중요하게, 명료하고 효과적으로 생각할 수 있게
하는 프로그래밍 교육을 받게 된다.
다루는 토픽은
- 재귀와 반복(recursion and iteration)
- 함수로 요약하기(procedural abstraction)
- 데이타로 요약하기(data abstraction)
- 모듈과 계층구조로 요약하기(modularity and hierarchy)
- 맞는 프로그램인지 확인하기(program proof)
- 물건중심의 프로그래밍(objects and imperative programming)
- 값중심의 프로그래밍(values and applicative programming)
- 타입을 갖춘 프로그래밍(types and typeful programming)
- 실행흐름의 관리(exceptions and advanced control)
숙제: 50%, 프로젝트: 20%, 큐즈: 20%, 실습: 10%
- 성적은 절대평가이다.
- 프로그램 숙제가 복제로 판정되면, 숙제의 모든
점수가 50% 감점된다.
- 프로그램 복제여부는 CloneChecker에
의해 자동으로 감별된다.
- 숙제 시간표
- HW1: due 09/19
- HW2: due
09/26 09/29
- HW3: due
10/10 10/12
- HW4: due
10/31 11/02
- HW5: due
11/14 11/17
- HW6: due
11/24 11/25
-
HW7: due 12/05
- Project: due
12/17 12/14(league), 12/18(tournament)
프로젝트 Project
- 교재(번역서):
[컴퓨터
프로그램의 구조와 해석], 김재우 외, 인사이트, 2007
- 교재(원서):
Structure and Interpretation of Computer Programs(SICP),
2nd ed., Harold Abelson
and Gerald Jay
Sussman with Julie Sussman, MIT Press.
(SICP's full-text on-line)
- 실습환경: MIT
Scheme(or DrScheme) & OCaml
- To view/print PDF files: Acrobat Reader
- 강의 슬라이드:
- 0.ppt: what to teach/what to expect/policy
- 1.ppt: programming elements, primitives,
combination, abstraction, evaluation, expression, values,
syntax, semantics
- 2.ppt
: abstraction with procedure, procedure
application, typeful programming, scopes of names, syntactic sugars
- 3.ppt: recursive definition,
termination check, coverage check, abstraction with higher-order
procedures
- 4.ppt: compound data, pair
introduction/elimination, pairs for list, type for list, type-case analysis
- 5.ppt: data abstraction I, programming
patterns I, abstraction hierarchy
- 6.ppt: data abstraction II, programming
patterns II
- 7.ppt: implementation choices, tagged data, defensive programming
- 8.ppt: static type-checking
- 9.ppt
: value-oriented programming
(값중심의 프로그래밍)
- inductive data, inductive types
- typeful programming, use of type inference
- modules and parameterized modules
- exceptions and advanced control
- 14.pdf: programming by inductive refinement
 그렇다면? 왜?
|
|