7장 중간 점검과 시험1
이번 주의 도구: 없음. 시험대에 오르는 것은 도구를 다루는 머리다
다음 상황을 생각해 보자. 지난 6주 동안 매주 실습실에서 노트북을 펴고 AI와 함께 도구를 만들던 학생이, 이번 주에는 연필과 답안지만 놓인 책상 앞에 앉아 있다. 첫 문항에는 처음 보는 코드가 인쇄되어 있다. 예전 같으면 그대로 실행해 보거나 AI에게 설명을 시켰겠지만 오늘은 둘 다 없다. 그런데 코드를 한 줄씩 짚어 내려가다 보면 낯익다. 5주차에 물성 조회기를 만들며 해부하던 반복문이고, 3주차에 AI의 단위 실수를 잡아내던 바로 그 패턴이다. 시험1은 새로운 내용을 묻지 않는다. 매주 실습에서 하던 읽기와 검증을, 도와줄 AI 없이 종이 위에서 재연하라고 요구할 뿐이다.
이 장에서 다루는 것
- 1~6장의 개념·도구·역량을 한 장의 지도로 정리한다
- 시험1의 규정과 "AI 금지" 설계 논리를 확인한다
- 문항 4유형(출력 예측 · EiPE · AI 오답 채점 · 의사코드 설계)을 예시 문항과 모범 답안으로 해부한다
- AI 없는 지필 시험에서 통하는 준비법과 답안 전략을 정리한다
학습목표 이 장을 마치면 다음을 할 수 있다.
- 1~6장의 핵심 개념과 도구를 역량 지도 위에 배치할 수 있다.
- 시험1의 규정과 AI 금지 설계의 논리를 설명할 수 있다.
- 생성 코드의 출력을 트레이스 표로 손으로 예측할 수 있다.
- AI가 낸 틀린 화공 계산을 검증 루틴 3종으로 채점하고 교정할 수 있다.
- 화공 계산문제의 풀이 절차를 검증 단계를 포함한 의사코드로 설계할 수 있다.
이번 주 실습 2시간은 시험1(20점, AI 전면 금지, 오프라인 지필) 그 자체다. 매주 실습이 최종 시험의 축소판이었다면, 시험1은 그 반대편, 곧 AI를 걷어냈을 때 남는 능력을 검증하는 자리다.
7.1 여섯 장의 지도: 무엇이 쌓였는가
1장에서 정한 역할 분담을 떠올려 보자. 코드는 AI가 쓰고, 학생은 문제 분해와 생성 코드 읽기, 그리고 화학공학적 검증을 책임진다. 2장은 이 분담을 실행하는 순서, 즉 문제 분해→프롬프트→코드 읽기→테스트 사이클을 몸에 익혔고 그 첫 산출물이 도구① 강의노트 정리기였다. 3장은 그 반대편을 보였다. AI가 틀리는 방식(환각·단위 오류·물성 날조)을 실증하고, 검증 루틴 3종(단위 체크 · 대조값 · 극한값 sanity)을 도입했다.
4장은 간격반복과 인출연습이라는 학습과학 위에 도구③ 스터디 플래너를 얹어 학습 OS를 완성했다. 5장에서는 첫 화공 도구인 도구④ 단위환산 + 물성 조회기를 만들며, 생성 코드를 변수·제어문·함수 단위로 해부해 말로 설명하는 EiPE 훈련이 시작됐다. 6장은 그 읽기 능력을 채점자의 자리로 옮겼다. AI가 낸 틀린 화공 계산을 채점·교정했고, 모의 시험1로 이번 주를 리허설했다.
표 7-1은 여섯 장을 한 장으로 접은 지도다. 각 장이 남긴 개념과 도구, 그것이 기른 역량을 시험1의 문항 유형과 연결했다. 오른쪽 끝 열이 이 장의 주제다.
| 장 | 남긴 개념 | 만든 것 | 기른 역량 | 시험1 연결 |
|---|---|---|---|---|
| 1장 | 역할 정의, AI 활용 규칙 | 개발환경 + 위키 repo | Git 규율(C3), 학습 OS(C7) | 전 유형의 전제 |
| 2장 | 분해→프롬프트→읽기→테스트 사이클, 마크다운·Git 규율 | 도구① 강의노트 정리기 | 문제 분해(C1), Git 규율(C3) | 유형 ④ |
| 3장 | 환각·단위 오류·물성 날조, 검증 루틴 3종 | 도구② 플래시카드 생성기 | 검증(C5) | 유형 ③ |
| 4장 | 간격반복·인출연습, 위키 구조화 | 도구③ 스터디 플래너 | 학습 OS(C7) | 응시 전략(7.4절) |
| 5장 | 변수·제어문·함수 해부, EiPE | 도구④ 단위환산 + 물성 조회기 | 코드 읽기(C2), 계산 가능화(C4) | 유형 ①·② |
| 6장 | AI 오답 채점·교정 | 모의 시험1 자가 진단표 | 코드 읽기(C2), 검증(C5) | 유형 ③ 직결 |
C1~C7은 이 수업이 역산 설계한 7대 역량의 번호다.
같은 지도를 AI 협업 사이클 위에 겹쳐 보면 시험1의 성격이 더 분명해진다. ③ 프롬프트와 ⑤ 테스트는 AI와 컴퓨터가 있어야 돌아가는 블록이므로 시험2와 최종 시험에서 검증한다. 시험1이 겨누는 것은 나머지 세 블록인 ② 분해 · ④ 생성 코드 읽기 · ⑥ 화공 검증이다.
- 문제 정의
- 분해
- 프롬프트
- 생성 코드 읽기
- 테스트
- 화공 검증
스스로 점검
- 도구①~④ 중 위키를 직접 읽고 쓰는 도구는 어느 것인가?
- 검증 루틴 3종이 처음 도입된 장은 어디이고, 세 항목은 무엇인가?
7.2 시험1: 규정과 AI 금지의 논리
시험1은 20점이며, 7주차 실습 시간에 오프라인 지필로 치르고 AI 사용은 전면 금지된다. 범위는 1~6주 누적이다. 문항은 네 유형으로 고정되어 있다. ① 생성 코드 출력 예측, ② EiPE(제시된 AI 생성 코드를 한국어로 목적·동작 설명), ③ AI가 낸 오답을 채점·교정하라(단위 오류·날조 물성 포함), ④ 화공 계산문제의 의사코드 설계. 모든 평가물에 AI 사용내역을 첨부하는 1장의 의무는 시험1에도 그대로 적용된다.
AI 활용 규칙 세 종류 가운데 시험1은 유일한 금지에 해당한다. 시험2(20점, 12주, 90분 현장 실기)와 최종 시험(40점, 2시간 바이브코딩 + GitHub + 구술 방어)은 AI가 필수이고, 과제는 허용이다. 금지 종류가 존재하는 이유는 역설적으로 최종 시험에서 AI를 전면 사용하기 때문이다. AI가 코드를 다 써 주는 시험장에서 중요해지는 것은 생성된 코드를 읽어 내고, 결과가 물리적으로 말이 되는지 판정하고, 문제를 계산 가능한 절차로 쪼개는 개인의 능력이다. 시험1은 그 능력이 실제로 남아 있는지를, AI를 걷어낸 상태에서 따로 검증한다.
낯선 형식은 아니다. 6주차 실습에서 모의 시험1을 무채점으로 치렀고, 오답 리뷰로 자가 진단표를 만들었다. 이 장의 7.3절은 그 진단표 위에 올릴 유형별 처방이다.
| 유형 | 무엇을 묻는가 | 훈련한 곳 | 채점 초점 |
|---|---|---|---|
| ① 출력 예측 | 코드를 손으로 실행하는 능력 | 5장, 매주 실습 | 출력 전체를 순서·형식까지 정확히 |
| ② EiPE | 코드의 목적을 요약하는 능력 | 5장, 5주차부터의 구술 | 목적 문장 + 입출력과 단위 |
| ③ 오답 채점·교정 | 틀린 계산을 검증으로 잡는 능력 | 3장·6장 | 오류 위치 · 근거 · 교정값 3요소 |
| ④ 의사코드 설계 | 문제를 절차로 분해하는 능력 | 2장, 매주 분해 연습 | 입력→처리→출력→검증의 완전성 |
생각해보기 시험1이 없다고 가정해 보자. 어떤 학생이 유리해지고, 15주가 끝났을 때 무엇이 검증되지 않은 채 남는가? 반대로 세 시험이 전부 AI 금지라면 이 수업의 무엇이 무너지는가?
7.3 문항 4유형 해부
네 유형을 하나씩 해부한다. 유형마다 실제 시험과 같은 형식의 예시 문항 하나와 모범 답안을 실었다. 예시는 전부 1~6주 범위의 코드와 화공 지식만 사용한다.
7.3.1 유형 ①: 생성 코드 출력 예측
출력 예측은 컴퓨터 없이 스스로 컴퓨터가 되어 보는 문항이다. 인터프리터의 규칙은 단순하다. 코드는 위에서 아래로 한 줄씩 처리되고, 함수가 호출되면 함수 몸통으로 들어갔다가 return에서 호출한 자리로 돌아온다. 이 규칙을 종이 위에서 그대로 따라가면 된다.
예시 문항. 다음 코드가 인쇄하는 출력 전체를 순서대로 쓰라.
def judge(err_pct): # err_pct: 검증 오차 [%]
if err_pct < 1:
return "PASS"
elif err_pct < 5:
return "RECHECK"
else:
return "FAIL"
errs = [0, 1, 5, 3] # 도구 4개의 검증 오차 [%]
n_pass = 0
for e in errs:
r = judge(e)
if r == "PASS":
n_pass = n_pass + 1
print(e, r)
print("passed:", n_pass)
머릿속 실행은 두 번째 반복쯤에서 흔들리기 쉽다. 코드를 한 줄씩 실행한 셈 치고 각 변수의 값 변화를 기록한 표를 트레이스 표(trace table)라 한다. 답안지 여백에 이렇게 그린다.
e | judge(e)의 분기 | r | n_pass | 인쇄 |
|---|---|---|---|---|
| 0 | 0 < 1 참 | "PASS" | 1 | 0 PASS |
| 1 | 1 < 1 거짓 → 1 < 5 참 | "RECHECK" | 1 | 1 RECHECK |
| 5 | 5 < 5 거짓 → else | "FAIL" | 1 | 5 FAIL |
| 3 | 3 < 1 거짓 → 3 < 5 참 | "RECHECK" | 1 | 3 RECHECK |
모범 답안. 출력은 다음 다섯 줄이다.
0 PASS
1 RECHECK
5 FAIL
3 RECHECK
passed: 1
함정은 경계값이다. e = 1에서 1 < 1은 거짓이므로 첫 분기를 통과하지 못하고 elif로 내려간다. e = 5도 같은 이유로 else까지 밀린다. 부등호가 <인지 <=인지를 확인하는 습관이 이 유형에서 큰 비중을 차지한다. 나머지는 출력 형식이다. print(e, r)은 두 값을 공백으로 잇고, 마지막 줄은 passed: 1처럼 문자열 뒤에 값이 붙는다.
7.3.2 유형 ②: EiPE, 코드를 말로 설명하기
코드를 말로 설명하기(Explain in Plain English, EiPE)는 코드를 몇 줄씩 번역하는 문항이 아니다. 코드 전체가 무엇을 하는 물건인지 한 단계 위에서 요약하는 문항이다. 5장에서 좋은 설명과 나쁜 설명의 차이를 봤다. 시험에서도 그 차이가 점수로 이어진다.
예시 문항. 다음 함수의 목적과 동작을 한국어 2~3문장으로 설명하라. 입력과 출력의 단위를 명시하라.
def mole_fractions(masses, mws):
# masses: 성분별 질량 [g], mws: 성분별 몰질량 [g/mol]
moles = []
for i in range(len(masses)):
moles.append(masses[i] / mws[i]) # [mol]
total = sum(moles) # [mol]
fracs = []
for n in moles:
fracs.append(n / total) # 무차원
return fracs
모범 답안(만점). "성분별 질량 리스트[g]와 몰질량 리스트[g/mol]를 받아 각 성분의 몰수를 구한 뒤, 전체 몰수에 대한 비율인 몰분율 리스트를 돌려주는 함수다. 반환값은 무차원이고, 합은 1이 되어야 한다."
0점 답안(실제 유형). "빈 리스트를 만들고, for문으로 masses[i]를 mws[i]로 나눠 moles에 넣고, sum으로 total을 만들고, 다시 for문을 돌아 나눈 값을 fracs에 넣어 반환한다."
두 답안 모두 사실만 적었지만, 뒤의 답안에는 이 함수가 몰분율을 계산한다는 목적이 없다. 줄 번역은 코드를 다시 읽어 주는 일에 가까워 이해의 증거로는 부족하다. 채점 기준은 세 가지다. 목적의 명명(몰분율), 입출력과 단위, 그리고 결과의 성질(합 = 1) 언급이다.
7.3.3 유형 ③: AI 오답 채점·교정
예제 7.3-1 AI 오답 채점: 이상기체의 부피
문제 다음은 "25 °C, 100 kPa에서 이상기체 2.0 mol이 차지하는 부피를 구하라"는 문제에 AI가 낸 풀이다. 채점하고, 틀렸다면 오류의 위치와 근거를 지적한 뒤 올바른 값으로 교정하라.
이상기체 상태방정식 PV = nRT에서 V = nRT/P이다. R = 8.314 J/(mol·K)이므로 V = (2.0 × 8.314 × 25) / (100 × 10³) = 4.2 × 10⁻³ m³ ≈ 4.2 L이다.
풀이 전략 채점은 검증 루틴 3종의 순서대로 간다. 단위를 먼저 보고, 아는 값과 대조하고, 극한을 상상한다. 세 검사 중 하나라도 걸리면 그 지점이 오류의 좌표다.
채점과 교정 첫 번째 검사에서 즉시 걸린다. R = 8.314 J/(mol·K)의 온도는 켈빈인데, AI는 섭씨 25를 그대로 대입했다. 교정하면 T = 25 + 273.15 = 298.15 K이고,
V = (2.0 × 8.314 × 298.15) / (100 × 10³) = 0.0496 m³
답: V ≈ 49.6 L
- 단위: R = 8.314 J/(mol·K)이므로 T는 K 단위여야 하는데 AI는 °C 값 25를 대입 → 여기서 탈락
- 대조값: 표준상태(0 °C, 100 kPa)의 몰부피 22.7 L/mol(LibreTexts) → 2.0 mol이면 45.4 L, 25 °C는 이보다 조금 커야 함 → 49.6 L 정합, AI의 4.2 L은 10배 넘게 벗어남
- 극한값: AI의 식대로면 0 °C에서 V = 0이다. 섭씨 0도에서 기체 부피가 사라진다는 뜻이므로 물리적으로 불가하다
분석 AI 오답의 전형은 공식은 맞고 대입이 틀린 경우다. 식만 훑으면 통과시키기 쉽다. 채점의 단서는 대개 숫자와 단위에 있다. 답안 작성에도 규칙이 있다. "틀렸다"고만 쓰면 부분 점수다. 오류의 위치(°C를 그대로 대입), 근거(R의 온도 단위는 K), 교정값(49.6 L)의 3요소를 채워야 만점이다. What-if: 같은 풀이에서 압력을 100 kPa 대신 100 Pa로 잘못 읽으면 부피가 몇 배로 튀는지, 어느 검증 루틴이 그것을 잡는지 손으로 확인해 보라.
7.3.4 유형 ④: 화공 계산문제의 의사코드 설계
프로그래밍 언어의 문법 대신 사람이 읽는 자연어로 계산 절차를 단계별로 적은 것을 의사코드(pseudocode)라 한다. 유형 ④는 파이썬 문법을 묻지 않는다. 채점 대상은 절차의 완전성이다. 입력·처리·출력이 다 있는가, 예외와 검증이 설계 안에 들어 있는가.
예시 문항. 단위가 kPa, bar, atm으로 섞인 압력 측정값 목록을 받아 전부 kPa로 통일한 뒤, 최댓값과 그 위치를 보고하는 절차를 의사코드로 설계하라. 예외 처리와 검증 단계를 포함하라.
입력: (값, 단위) 쌍의 목록 P # 예: (95.2, "kPa"), (1.30, "bar")
환산표 F를 정의한다: kPa→1, bar→100, atm→101.325 # kPa 기준
빈 목록 P_kpa를 만든다
P의 각 (v, u)에 대해 반복:
u가 F에 없으면 → "미지 단위 u" 오류를 보고하고 중단 # 예외 처리
P_kpa에 v × F[u]를 추가한다 # [kPa]
P_kpa가 비어 있으면 → "데이터 없음"을 보고하고 중단 # 극한(빈 입력)
최댓값 p_max와 위치 i_max를 첫 항목으로 놓고 순회하며 갱신한다
검증: 1 atm 입력이 101.325 kPa로 환산되는지 확인한다 # 대조값
출력: p_max [kPa], i_max
골격은 2장에서 이미 배웠다. 입력 → 처리 → 출력, 그리고 이 수업에서는 검증이 네 번째 고정 단계다. 위 답안에서 점수를 만드는 줄은 세 줄의 방어다. 미지 단위 중단, 빈 목록 처리, 대조값 확인이 그것이다. 물질수지 문제를 풀 때 "마지막에 답을 점검하라"가 절차의 정식 단계이듯이, 의사코드에서도 검증은 하나의 정식 단계다.
스스로 점검
- 유형 ③에서 통째로 틀린 계산을 가장 빨리 걸러내는 검증 루틴은 보통 무엇인가?
- EiPE 답안에서 0점을 부르는 전형적인 서술 방식은 무엇인가?
7.4 응시 전략: AI 없이 지필에서 이기는 법
7.4.1 시험 전: 인출로 대비한다
4장에서 배운 대로 다시 읽기보다 인출이 효과적이다. 요약본을 훑는 것보다 스스로 답을 꺼내 보는 인출연습(retrieval practice)이 기억을 만든다. 마침 그 도구를 직접 만들어 두었다. 도구② 플래시카드 생성기로 1~6장 위키 노트를 덱으로 바꿔 돌려 보는 것이 실질적인 대비가 된다.
출발점은 모의 시험1의 자가 진단표다. 네 유형 중 어디에서 점수를 잃었는지가 복습 순서를 정한다. 약한 유형은 AI에게 변형 문제를 만들게 해서 보충할 수 있다. 시험장 밖의 대비는 AI 활용 규칙의 허용에 해당한다. 단, 아래 리스팅처럼 답은 받지 않는 것이 요령이다.
아래는 내가 모의 시험1에서 틀린 문항이다. [문항 붙여넣기] 같은 개념을 묻는 변형 문제를 3개 만들어 줘. 조건: 1~6주 범위(변수·조건문·반복문·함수·리스트)만 쓰고, 답과 해설은 주지 마.
변형 1. 다음 코드의 출력을 예측하시오. (온도 목록을 순회하며 조건 분기로 등급 문자열을 인쇄하는 12줄 코드) … 변형 2. … 변형 3. (중첩 딕셔너리를 순회하는 코드) …
✔ 변형 3이 중첩 딕셔너리를 사용해 요청한 1~6주 범위를 벗어나 제외하고 재요청했다. 남은 2문항은 직접 푼 뒤 파이썬으로 실행해 내 답과 대조했다.
7.4.2 시험장에서: 순서와 골격
답안지를 받으면 전 문항을 훑고 자신 있는 유형부터 처리한다. 막히는 문항은 표시하고 넘어간다. 네 유형은 서로 독립이라 순서를 바꿔도 잃는 것이 없다.
유형별 골격은 이미 7.3절에 있다. 출력 예측은 머릿속 실행을 믿지 말고 트레이스 표를 그린다. EiPE는 목적 한 문장을 먼저 쓴다. 목적이 서면 동작과 단위는 따라오고, 거꾸로 줄 번역부터 시작하면 목적 문장을 끝내 못 쓰는 답안이 된다. 채점·교정 문항은 검증 루틴의 순서 그대로 단위, 대조값, 극한값을 훑고, 하나 걸리면 오류 위치·근거·교정값의 3요소를 채운다. 의사코드는 입력→처리→출력→검증의 골격을 먼저 쓰고 살을 붙인다. 백지에서 첫 줄부터 완성하려 들면 시간이 부족해진다.
생각해보기 출력 예측 문항에 나올 수 없는 코드의 조건을 두 가지 제안해 보라. 힌트: 채점자에게는 유일한 정답이 필요하다.
요약
- S 7-1 검증 루틴 3종: 단위 체크 → 대조값 → 극한값 sanity. 유형 ③의 채점 순서 그 자체다.
- S 7-2 EiPE 답안 골격: 목적 한 문장 → 입출력과 단위 → 결과의 성질. 줄 번역은 0점이다.
- S 7-3 의사코드 골격: 입력 → 처리 → 출력 → 검증(+예외). 검증은 장식이 아니라 단계다.
| 구분 | 시험1 | 시험2 | 시험3 |
|---|---|---|---|
| 배점 | 20점 | 20점 | 40점 |
| 시기 | 7주 | 12주 | 15주 + 시험주간 |
| AI | 금지 | 필수 | 필수 |
| 형식 | 오프라인 지필 | 90분 현장 실기 | 2시간 바이브코딩 + GitHub + 구술 방어 |
| 검증하는 것 | AI 없이 남는 능력(읽기·검증·분해) | 시간 압박 하 도구 제작 | 종합 실기 + 구술 방어 |
1~4주의 학습 OS와 5~6주의 읽기·검증 능력이 시험1에서 한 번 확인된다. 사이클의 ②·④·⑥ 블록을 종이 위에서 증명하고 나면, 8장부터는 Antoine 증기압에서 공정 대시보드까지 도구 사다리를 오르는 일이 남는다. 그때부터 AI를 다시 옆에 두고 작업한다.
용어 정리
- 의사코드(pseudocode)
- 프로그래밍 언어의 문법 대신 자연어로 계산 절차를 단계별로 적은 표현. 채점 대상은 문법이 아니라 절차의 완전성이다.
- 트레이스 표(trace table)
- 코드를 한 줄씩 실행한 셈 치고 각 변수의 값 변화를 기록하는 표. 출력 예측 문항의 기본 도구다.
연습문제
Q군: 개념·읽기 (AI 없이 풀라)
- Q7.1 코드 7-1에서
errs = [4, 5, 0]으로 바꿨을 때 인쇄되는 출력 전체를 순서대로 쓰라. 트레이스 표를 그려서 풀라. - Q7.2 코드 7-2의 목적과 동작을 두 문장으로 설명하고, 반환 리스트의 합이 항상 1인지 판단해 근거를 쓰라. (부동소수점 오차는 무시한다.)
- Q7.3 출제자가 되어 보라. 유형 ③ 문항에 심을 만한 그럴듯한 오류를 두 가지 제시하고, 각각 검증 루틴 3종 중 어느 검사에 걸리도록 설계했는지 설명하라.
- Q7.4 AI가 예제 7.3-1과 같은 문제를 풀며 이번에는 온도를 298.15 K로 올바르게 쓰고 압력을 100 kPa 대신 100 Pa로 대입해 V ≈ 4.96 × 10⁴ L을 얻었다. 이 답이 검증 루틴 3종 중 어느 검사에 걸리는지 밝히고 교정하라.
- Q7.5 여러 성분의 (질량 [g], 몰질량 [g/mol]) 목록으로 혼합물의 평균 몰질량을 구하는 절차를, 예외 처리(몰질량이 0 이하인 항목)와 검증 단계를 포함한 의사코드로 설계하라.
P군: 제작 (AI 사용, 시험 이후에 풀라)
- P7.1 도구② 플래시카드 생성기에 "오답 카드" 입력 경로를 추가하라. 시험 오답 1건이 (문항 요약 / 내 답 / 올바른 답 / 걸린 검증 루틴)의 4필드 카드로 덱에 들어가야 한다. 완성 기준: 모의 시험1 오답 2건이 카드로 변환되어 기존 덱과 함께 조회된다.
위키 기록 과제
- 1~6장 지도(표 7-1)를 본인의 언어로 다시 그린 1페이지 정리를
#seed로 커밋하라. - "내가 틀렸던 것". 모의 시험1 또는 시험1에서 틀린 문항 1건을 기록하라: 문항 요약, 내 답, 원인(개념 구멍인지 실수인지), 걸렸어야 할 검증 루틴.
- 타 과목 연결. 화공양론 과제 문제 하나를 유형 ④ 형식의 의사코드로 풀어 노트에 링크하라.
이번 주에도 의미 있는 커밋 1건 이상이 채점 지표다.