4190.210 Principles of Programming

이광근 Kwangkeun Yi
Programming Research Lab.
/CSE/Seoul National University

강의: 수 16:00-17:50 @ 302동 106호
실습: 월 16:00-17:50 @ 302동 311호

목표 Objectives

학생들이 프로그램 작성의 기본 원리, 구성 요소, 프로그래밍 미학등을 습득하게 함으로써, 소프트웨어 시스템이 드러내는 복잡성을 손쉽게 다룰 수 있는 능력과 자신감을 익히게 한다. 더군다나, 프로그램이 기계를 사용하기 위한 도구라는 제한된 시각에서 벗어나 기계가 프로그램 실행을 위한 도구라는 시각을 갖추도록 보정해준다.

이 강의는 프로그래밍 연습(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)

규정 Policy

 숙제: 50%, 프로젝트: 20%, 큐즈: 20%, 실습: 10%
  • 성적은 절대평가이다.
  • 프로그램 숙제가 복제로 판정되면, 숙제의 모든 점수가 50% 감점된다.
  • 프로그램 복제여부는 CloneChecker에 의해 자동으로 감별된다.

숙제 Homeworks

  • 숙제 시간표
    • 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

진도및 자료 Slides & Resources

  • 교재(번역서): [컴퓨터 프로그램의 구조와 해석], 김재우 외, 인사이트, 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 New

읽을거리 Readings

그렇다면? 왜?

유사강좌 Similar Courses

 

© Copyright 2009, 이광근 Kwangkeun Yi