4190.210 Principles of Programming

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

강의: 화 10:00-11:50 @ 301동 101호
실습: 목 10:00-11: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

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

숙제 Homeworks

  • 숙제 시간표
    • HW1: due 09/19
    • HW2: due 09/26
    • HW3: due 10/10
    • HW4: due 10/24
    • HW5: due 11/07
    • HW6: due 12/04
    • HW7: due 12/11

프로젝트 Project

진도및 자료 Slides & Resources

  • 교재(번역서): [컴퓨터 프로그램의 구조와 해석], 김재우 외, 인사이트, 2007
  • 교재(원서): Structure and Interpretation of Computer Programs, 2nd ed., Harold Abelson and Gerald Jay Sussman with Julie Sussman, MIT Press. (Full-text is on-line)
  • 실습환경: MIT Scheme & SNU/KAIST nML
  • To view/print PS(Postscript) files: Ghostview, 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, multiple representations
    • 9.ppt: programming with multiple representations
    • 10.ppt: programming with mutators and side-effects
    • 11.ppt: bindings and environments
    • 12.ppt: modules, parameterized modules
    • 13.ppt: exceptions
    • 14.pdf: programming by inductive refinement

읽을거리 Readings

그렇다면? 왜?

유사강좌 Similar Courses

 

© Copyright 2008, 이광근 Kwangkeun Yi