요약
이 항목은 또 하나의 수업이 아니라 강좌의 최종 결산이다. 학습 계획이 처음에 세운 일곱 학습 목표를 되새기고, 각 단원의 각 수업이 그중 어느 목표에 배정되었는지를 하나의 그림으로 보여 주며, 각 목표가 여덟 내용 단원에 걸쳐 어떻게 다루어졌는지 설명하고, 고유한 단원을 가진 목표와 강좌 전체를 관통하는 목표를 구별하며, 강좌가 C++ 너머에 남기는 것을 모으고, 마무리 평가의 첫 시도를 모으는 목표별 자기 평가를 읽는 법을 가르치며, 강좌가 C++ 프로그래밍 II 강좌에 남기는 것을 가리킨다.
학습 목표
- 강좌의 일곱 전체 목표를 진술하고, 각 목표가 어느 단원과 어느 수업에서 다루어졌는지 알아본다.
- 고유한 단원을 가진 목표와 여러 단원을 관통하는 목표, 특히 컴파일과 디버깅을 되풀이하는 문제 해결, 그리고 명세와 테스트를 구별하고, 뒤의 목표들이 어떻게 연습되는지 설명한다.
- 강좌에서 배운 것 가운데 어느 언어에서나 통하는 것과 그것의 C++에서의 형태를 나누고, 강좌가 C++ 프로그래밍 II 강좌에 무엇을 남기는지 설명한다.
- 목표별 자기 평가, 그림, 각 종합의 도전 과제를 바탕으로 어느 단원과 어느 수업을 복습하면 좋을지 판단한다.
강좌가 목표로 삼은 것
이 강좌는 하나의 전체 목적을 품고 태어났다. 어떤 언어가 아니라 프로그래밍 자체를 대상으로 삼아, 처음부터 올바른 프로그램을 쓰는 법을 가르치는 것이다. 이를 위해 강좌는 까다로운 도구인 C++를 골랐다. C++는 기계를 숨기지 않기 때문이다. 자료형을 선언하게 하고, 컴파일과 실행을 분리하며, 메모리와 복사의 비용과 각 수의 한계를 눈에 보이게 하고, 다른 언어들이 감추는 것을 정의되지 않은 동작으로 벌한다. 학습 계획에 관한 수업은 이 목적을 일곱 전체 학습 목표로 펼쳤다. 그림이 그 목표들을 가리킬 때 쓰는 번호 그대로 그것들을 눈앞에 두면 좋다.
- 프로그램으로 문제를 해결한다. 무엇이 들어오고 무엇이 나가는지 명세하고, 알고리즘을 설계하고, 그것을 손으로 따라가 보고, 작성하고, 컴파일하고, 실행하고, 디버깅하면서 컴파일러의 메시지와 경고를 해석한다.
- 각 데이터에 알맞은 자료형을 고르고, 그 표현의 한계에 대해 추론한다. 정수의 값의 범위, 오버플로, 부동소수점의 반올림, 텍스트의 인코딩이다.
- 우선순위, 형 변환, 부수 효과, 표준이 정의하지 않은 채 남겨 두는 것을 알고서 올바른 식을 만든다.
- 올바르고 종료하는 조건문과 반복문으로 제어 흐름을 설계하고, 그 정확성을 불변식으로 정당화한다.
- 문제를 명확한 인터페이스를 가진 함수들로 분해하고, 매개변수를 전달하는 방식을 고르며, 재귀로 문제를 해결한다.
- 복합 데이터(시퀀스, 표, 레코드, 텍스트, 파일)를 기본 알고리즘과 표준 라이브러리로 표현하고 처리하며, 그 비용을 추정한다.
- 더 큰 프로그램을 여러 파일로 조직하고, 사전 조건과 사후 조건으로 명세하며, 체계적으로 테스트하고, 그 정확성을 논증한다.
또한 강좌의 각 수업은 저마다 고유한 세부 목표를 밝혔다. 수업들은 각 세부 목표가 어느 전체 목표에 이바지하는지 말하지 않는다. 그 대응은 바깥에서 하는 읽기이며, 이 사이트의 다른 강좌들과 같은 방법을 따른다. 각 세부 목표는 하나의 주 전체 목표에 배정되고, 다른 목표에도 닿는다면 부차 목표에도 배정된다. 각 세부 목표는 주 목표에서는 온전히 하나로, 부차 목표에서는 각각 절반으로 센다. 그리고 수업은 가장 큰 무게를 모은 전체 목표에 주 목표로 이어지고, 무게를 조금이라도 받은 다른 목표들에 부차 목표로 이어진다. 두 목표가 동점이면 단원의 목표가 정하고, 어느 쪽도 단원의 목표가 아니면 번호가 작은 목표가 정한다. 그래서 변수와 메모리 수업은 세부 목표가 목표 1과 목표 2에 똑같이 나뉘지만, 그 단원의 목표인 목표 2에 이어진다. 도입 수업도 같은 규칙을 따른다. 반면 종합 수업은 고유한 기준을 따른다. 종합의 주 목표는 그 단원의 목표이다. 종합의 개념의 사슬, 마무리 평가, 그리고 도전 과제 대부분이 그 단원이 가르친 것을 모으기 때문이다. 텍스트와 파일 단원은 고유한 목표가 없으므로, 네 수업 가운데 세 수업이 속하는 목표 6으로 센다. 그렇다면 강좌 전체는 하나의 척추 모양을 띤다. 머리는 전체 목적이고, 기둥은 단원의 순서로서 단원마다 제 구간을 가진다. 각 수업은 그 구간의 마디로서 주 목표에 이어져 있고, 일곱 목표는 기둥 둘레에 떠서 그것을 길러 주는 수업들에 의해 받쳐진다.
콘텐츠를 불러오는 중…