본문 바로가기
Topos Uranos

요약

이 항목은 또 하나의 수업이 아니라 강좌의 최종 결산이다. 학습 계획이 처음에 세운 일곱 학습 목표를 되새기고, 각 단원의 각 수업이 그중 어느 목표에 배정되었는지를 하나의 그림으로 보여 주며, 각 목표가 여덟 내용 단원에 걸쳐 어떻게 다루어졌는지 설명하고, 고유한 단원을 가진 목표와 강좌 전체를 관통하는 목표를 구별하며, 강좌가 C++ 너머에 남기는 것을 모으고, 마무리 평가의 첫 시도를 모으는 목표별 자기 평가를 읽는 법을 가르치며, 강좌가 C++ 프로그래밍 II 강좌에 남기는 것을 가리킨다.

학습 목표

  1. 강좌의 일곱 전체 목표를 진술하고, 각 목표가 어느 단원과 어느 수업에서 다루어졌는지 알아본다.
  2. 고유한 단원을 가진 목표와 여러 단원을 관통하는 목표, 특히 컴파일과 디버깅을 되풀이하는 문제 해결, 그리고 명세와 테스트를 구별하고, 뒤의 목표들이 어떻게 연습되는지 설명한다.
  3. 강좌에서 배운 것 가운데 어느 언어에서나 통하는 것과 그것의 C++에서의 형태를 나누고, 강좌가 C++ 프로그래밍 II 강좌에 무엇을 남기는지 설명한다.
  4. 목표별 자기 평가, 그림, 각 종합의 도전 과제를 바탕으로 어느 단원과 어느 수업을 복습하면 좋을지 판단한다.

강좌가 목표로 삼은 것

이 강좌는 하나의 전체 목적을 품고 태어났다. 어떤 언어가 아니라 프로그래밍 자체를 대상으로 삼아, 처음부터 올바른 프로그램을 쓰는 법을 가르치는 것이다. 이를 위해 강좌는 까다로운 도구인 C++를 골랐다. C++는 기계를 숨기지 않기 때문이다. 자료형을 선언하게 하고, 컴파일과 실행을 분리하며, 메모리와 복사의 비용과 각 수의 한계를 눈에 보이게 하고, 다른 언어들이 감추는 것을 정의되지 않은 동작으로 벌한다. 학습 계획에 관한 수업은 이 목적을 일곱 전체 학습 목표로 펼쳤다. 그림이 그 목표들을 가리킬 때 쓰는 번호 그대로 그것들을 눈앞에 두면 좋다.

  1. 프로그램으로 문제를 해결한다. 무엇이 들어오고 무엇이 나가는지 명세하고, 알고리즘을 설계하고, 그것을 손으로 따라가 보고, 작성하고, 컴파일하고, 실행하고, 디버깅하면서 컴파일러의 메시지와 경고를 해석한다.
  2. 각 데이터에 알맞은 자료형을 고르고, 그 표현의 한계에 대해 추론한다. 정수의 값의 범위, 오버플로, 부동소수점의 반올림, 텍스트의 인코딩이다.
  3. 우선순위, 형 변환, 부수 효과, 표준이 정의하지 않은 채 남겨 두는 것을 알고서 올바른 식을 만든다.
  4. 올바르고 종료하는 조건문과 반복문으로 제어 흐름을 설계하고, 그 정확성을 불변식으로 정당화한다.
  5. 문제를 명확한 인터페이스를 가진 함수들로 분해하고, 매개변수를 전달하는 방식을 고르며, 재귀로 문제를 해결한다.
  6. 복합 데이터(시퀀스, 표, 레코드, 텍스트, 파일)를 기본 알고리즘과 표준 라이브러리로 표현하고 처리하며, 그 비용을 추정한다.
  7. 더 큰 프로그램을 여러 파일로 조직하고, 사전 조건과 사후 조건으로 명세하며, 체계적으로 테스트하고, 그 정확성을 논증한다.

또한 강좌의 각 수업은 저마다 고유한 세부 목표를 밝혔다. 수업들은 각 세부 목표가 어느 전체 목표에 이바지하는지 말하지 않는다. 그 대응은 바깥에서 하는 읽기이며, 이 사이트의 다른 강좌들과 같은 방법을 따른다. 각 세부 목표는 하나의 주 전체 목표에 배정되고, 다른 목표에도 닿는다면 부차 목표에도 배정된다. 각 세부 목표는 주 목표에서는 온전히 하나로, 부차 목표에서는 각각 절반으로 센다. 그리고 수업은 가장 큰 무게를 모은 전체 목표에 주 목표로 이어지고, 무게를 조금이라도 받은 다른 목표들에 부차 목표로 이어진다. 두 목표가 동점이면 단원의 목표가 정하고, 어느 쪽도 단원의 목표가 아니면 번호가 작은 목표가 정한다. 그래서 변수와 메모리 수업은 세부 목표가 목표 1과 목표 2에 똑같이 나뉘지만, 그 단원의 목표인 목표 2에 이어진다. 도입 수업도 같은 규칙을 따른다. 반면 종합 수업은 고유한 기준을 따른다. 종합의 주 목표는 그 단원의 목표이다. 종합의 개념의 사슬, 마무리 평가, 그리고 도전 과제 대부분이 그 단원이 가르친 것을 모으기 때문이다. 텍스트와 파일 단원은 고유한 목표가 없으므로, 네 수업 가운데 세 수업이 속하는 목표 6으로 센다. 그렇다면 강좌 전체는 하나의 척추 모양을 띤다. 머리는 전체 목적이고, 기둥은 단원의 순서로서 단원마다 제 구간을 가진다. 각 수업은 그 구간의 마디로서 주 목표에 이어져 있고, 일곱 목표는 기둥 둘레에 떠서 그것을 길러 주는 수업들에 의해 받쳐진다.