4190.210 Principles of Programming

Chung-Kil Hur
Software Foundations Lab /CSE/ Seoul National University

Lecture: Mon 16:00-17:50 @ 302-105
Practice: Wed 16:00-17:50 @ 302-311-1



  • Ability. You will have ability to write good programs by learning the principles of programming.

  • Generality. You will learn general principles that can be applicable to any programming languages.

  • Viewpoint. You will have a balanced viewpoint for programming languages. Programs can be seen as a tool for using computers, but on the other hand computers can be seen as a tool for executing programs.

The topics covered are

  • Elements & Compound (기본부품과 조합)
  • Recursion & Iteration (재귀와 반복)
  • Procedural & Data Abstraction (속내용 감추기)
  • Modularity & Hierarchy (계층구조로 속내용 감추기)
  • Types & Typeful Programming (타입으로 정리+이해하기)
  • Program Proof (맞는 프로그램인지 확인하기)
  • Values & Applicative Programming (값중심의 프로그래밍)
  • Objects & Imperative Programming (물건중심의 프로그래밍)
  • Exceptions & Advanced Control (예외상황 관리)


 Homework: 60%, Project: 30%, Practice: 10%
  • Grading is based on your absolute score, not your relative score among others.
  • Any copied program will get no points.
  • CloneChecker will detect copied programs automatically.

Homework Assignments & Project

Slides & Resources

Readings (in Korean)

원리? 어떻게? 왜? 그렇다면?

Similar Courses


© Copyright 2012, À̱¤±Ù Kwangkeun Yi