1장 AI 시대의 화학공학자
이번 주의 도구: 작동하는 개발환경과 나의 위키 저장소
다음 상황을 생각해 보자. 화공양론 과제 마감 전날, 메탄올–물 혼합물 문제에 필요한 증기압 값을 찾던 학생이 AI 챗봇에 물었다. 답은 3초 만에 왔다. 정돈된 표, 자신 있는 말투, 그럴듯한 숫자를 내놓는다.
같은 시각 옆자리 학생은 다른 길을 택했다. AI에게 값을 묻는 대신 증기압을 계산하는 파이썬 함수를 만들게 하고, 자신은 그 코드가 쓰는 상수를 화공양론 교과서 부록과 대조했다. 두 값이 달랐다. 첫 번째 학생이 받은 표의 숫자는 어느 문헌에도 없는 값이었다.
두 학생 모두 AI를 썼다. 갈린 것은 도구가 아니라 역할이다. 한 사람은 AI에게 답을 맡겼고, 다른 사람은 AI에게 노동을 맡기고 판단을 자신이 가졌다. 이 수업의 15주는 두 번째 학생이 되는 훈련이다.
이 장에서 다루는 것
- 이 수업에서의 본인의 역할과 "설명 못 하는 지식의 위험성"에 대해 논의한다.
- AI 협업 사이클 6단계와 프롬프트-응답 리스팅 규격을 설명한다.
- 평가 5종과 AI 활용 규칙을 안내한다.
- LLM의 작동을 최소한으로 해부한다: 다음 토큰 예측, 확률적 출력, 그럴듯한 오답.
- 개인 PC에서 개발환경을 셋업하고, 첫 바이브코딩을 하고, 위키 저장소를 개설한다.
학습목표: 이 장을 마치면 다음을 할 수 있다.
- 학습에 있어 AI와 학생 각각의 책임을 구분하여 설명할 수 있다.
- AI 협업 사이클 여섯 단계를 순서대로 나열하고, 각 단계에서 사람이 확인할 것을 말할 수 있다.
- AI 활용 규칙을 구체적 상황에 적용해 허용 여부를 판정할 수 있다.
- LLM이 다음 토큰 예측으로 작동함을 간단한 프로그램으로 설명할 수 있다.
- 같은 프롬프트에서 다른 출력이 나오는 이유를 말하고, 그 실무적 귀결을 제시할 수 있다.
- 개발환경을 설치하고 첫 바이브코딩 결과를 GitHub에 커밋할 수 있다.
이번 주 실습은 §1.2의 사이클을 개발환경 셋업 직후 15분짜리 첫 바이브코딩으로 한 바퀴 돈다. 이 형식은 최종 시험(2시간 실기)의 축소판이며 15주 동안 매주 반복된다. 셋업 절차의 전문은 부록 A에 있다.
1.1 역할 정의: 코드는 AI가 쓰고, 판정은 사람이 한다
화학공학자의 하루에는 계산이 흐른다. 단위를 환산하고, 물성을 조회하고, 수지식을 풀고, 실험 데이터를 피팅한다. 계산 하나하나는 어렵지 않지만 반복되고, 반복되는 계산은 실수를 부른다. 도구를 만들 줄 아는 공학자는 반복을 프로그램으로 바꾼다.
지금까지 도구 제작의 병목은 프로그래밍 문법이었다. 대형 언어 모델의 등장이 그 병목을 옮겼다. 자연어로 의도를 말하면 AI가 코드를 작성하고, 사람이 그 코드를 읽고 검증하는 작업 방식을 바이브코딩(vibe coding)이라 한다. 문법을 몰라도 코드가 생긴다. 그렇다면 새 병목은 무엇인가. 생긴 코드가 옳은지 판정하는 능력이다.
이 수업은 그 판정 능력을 역할 분담 형식으로 정의한다. AI가 코드를 쓰고, 학생은 ① 문제 분해 ② 생성 코드 읽기·설명 ③ 화학공학적 검증을 책임진다. 이를 이 수업의 역할 계약이라 한다. AI 코드 어시스턴트를 전제로 프로그래밍 입문 교육을 재설계한 미국 UCSD의 CS1-LLM 모델과 같은 노선이다. 코드를 짜는 기술이 아니라 코드를 부리는 기술을 배워야 한다.
이 계약에는 벌칙 조항이 있다. 자신이 제출한 코드를 설명하지 못하면 해당 이해 점수는 0점이다. 최종 시험의 구술 방어에서는 지목 질문 3개 중 2개 이상 설명에 실패하면 코드 이해 차원 전체가 0점으로 처리된다. 돌아가는 코드와 이해한 코드는 다르며, 이 수업이 점수를 주는 쪽은 후자다.
검증에 "화학공학적"이라는 수식어가 붙는 이유가 있다. 컴퓨터는 문법 오류를 잡아 주지만, 단위가 뒤집힌 계산과 날조된 물성값은 문법적으로 완벽한 코드 안에서 조용히 살아남는다. 그것을 잡는 것은 전공 지식이다. 단위가 맞는가, 알려진 값과 맞는가, 극한에서 물리적으로 말이 되는가. 이 세 질문을 검증 루틴 3종이라 하며 3장에서 정식으로 도입한다. 이 장에서는 형식을 눈에 익히는 것으로 충분하다.
스스로 점검 1.1
- 역할 계약에서 학생이 책임지는 세 가지는 무엇인가?
- "코드가 돌아간다"만으로 과제가 끝나지 않는 이유는 무엇인가?
1.2 AI 협업 사이클: 여섯 단계 한 바퀴
역할 계약을 매주 실행 가능한 절차로 서술한 것이 AI 협업 사이클이다. 이 책의 모든 예제와 실습은 이 여섯 단계 위에서 움직이며, 각 장은 지금 어느 단계를 훈련 중인지 표시한다.
- 문제 정의: 구할 것과 단위를 문장으로 확정한다
- 분해: 문제를 함수 하나 크기의 조각으로 나눈다
- 프롬프트: 조각 하나를 AI에게 요청한다
- 생성 코드 읽기: 받은 코드를 한 줄씩 이해한다
- 테스트: 실행하고 예상과 비교한다
- 화공 검증: 단위·대조값·극한값으로 물리적 타당성을 판정한다
위 사이클과 함께 이 책의 형식을 말하고 넘어가고자 한다. AI와의 대화는 코드 리스팅의 새로운 형식이므로, 세 단으로 고정해 싣는다. [프롬프트]는 사람이 쓴 요청을 다듬지 않고 그대로, [생성 코드]는 AI가 낸 코드를 점선 테두리로 (점선은 "아직 검증 전"이라는 뜻이다) , [검증]은 사람이 확인한 것과 고친 것을 담는다.
말로만 들은 사이클은 아직 손에 잡히지 않는다. 한 바퀴를 실제로 돌아 보자.
예제 1.2-1 첫 바이브코딩: 이상기체 몰 부피 계산기
문제 온도 273.15 K, 압력 100 kPa에서 이상기체 1 mol이 차지하는 부피를 계산하는 파이썬 함수를 AI와 함께 만들고, 결과를 검증하라.
풀이 전략 일반화학에서 배운 이상기체 상태방정식 PV = nRT를 1 mol 기준 몰 부피에 대해 정리하면 식 (1.1)을 얻는다.
Vm = RT/P (1.1)
사이클 ①·②는 이미 끝났다. 구할 것은 몰 부피(단위 m³/mol), 조각은 함수 하나다. 코드 작성(③)은 AI에게 맡기고, 사람은 읽기(④)·테스트(⑤)·화공 검증(⑥)을 맡는다.
이상기체의 몰 부피를 계산하는 파이썬 함수를 만들어 줘. 입력은 온도(K)와 압력(Pa), 출력은 m³/mol. 기체상수는 이름 있는 변수로 두고 출처를 주석에 적어 줘. 주석은 한국어로 작성해줘.
R = 8.314 # 기체상수 [Pa·m3/(mol·K)] — 출처: NIST CODATA
def molar_volume(T, P):
"""이상기체 몰 부피를 계산한다.
T: 절대온도 [K]
P: 압력 [Pa]
반환: 몰 부피 [m3/mol]
"""
if T <= 0:
raise ValueError("절대온도는 0 K보다 커야 한다")
return R * T / P
# 0 °C, 1 bar에서 확인 실행
V = molar_volume(273.15, 1.0e5) # [K], [Pa]
print(f"몰 부피 = {V:.5f} m3/mol = {V * 1000:.1f} L/mol")
검증: 상수 R의 값·단위·출처 주석 확인. 수식은 식 (1.1) 그대로다. 요청하지 않은 온도 방어 코드(T <= 0)가 추가됐는데, 물리적으로 타당하므로 수용한다. 실행 출력: 몰 부피 = 0.02271 m3/mol = 22.7 L/mol.
- 단위: Pa·m³/(mol·K) × K ÷ Pa = m³/mol. 입력·출력 단위가 식 (1.1)과 일치한다.
- 대조값: 273.15 K, 10⁵ Pa에서 22.7 L/mol. 화공양론 교재의 표준상태 몰 부피와 일치한다(LibreTexts Foundations 3.06 기준).
- 극한값: P를 2배로 하면 Vm은 정확히 절반(반비례 확인). T → 0에서 Vm → 0은 식으로는 옳지만 실제 기체는 그 전에 액화한다 (모델의 적용 한계까지 극한 검사가 드러낸다.)
분석 매우 간단한 예제이다. 다만 이 예제에서 중요한 점은 "코드가 맞았다"는 결과가 아니라 맞았음을 확인한 절차다. 같은 절차가 15주 내내, 그리고 마지막 시험의 검증 증빙 항목에서 반복된다. 프롬프트의 압력 단위를 Pa에서 kPa로 바꿔 재생성하고, 코드의 어디가 달라지는지·검증 세 줄이 어떻게 바뀌는지 확인해 보라.
스스로 점검 1.2
- 사이클 여섯 단계 중 AI가 대신하는 노동은 어디에 있는가?
- 예제 1.2-1의 대조값 검증에 쓴 값은 무엇이었는가?
1.3 이 수업의 AI 활용 규칙
AI 사용 규칙은 평가마다 다르다. 금지·필수·허용의 세 종류로 나뉘며, 이를 AI 3-lane 규칙이라 한다. 표 1-1이 강의에서 AI를 활용하게 될 전체 구조다.
| 평가 | 배점 | 시기 | AI | 형식 |
|---|---|---|---|---|
| 시험1 | 20 | 7주 | 금지 | 오프라인 지필 |
| 시험2 | 20 | 12주 | 필수 | 90분 현장 실기 |
| 시험3 | 40 | 15주+시험주간 | 필수 | 2시간 바이브코딩 + GitHub |
| 과제 | 10 | 상시 | 허용 | LLM 위키 6점 + 서브프로젝트 4점 |
| 출석 | 10 | 상시 | — | 실습 대면 5 + 이론 LMS 5 |
최종 시험이 AI 필수인데 시험1은 왜 AI를 금지하는가. 방향이 반대라서가 아니라 재는 것이 다르기 때문이다. 시험1은 AI가 꺼졌을 때 머리에 남는 능력(생성 코드의 출력 예측, 코드를 한국어로 설명하기(EiPE라 부르는 문항 유형으로, 5장에서 훈련한다), AI가 낸 오답의 채점·교정, 화공 계산의 의사코드 설계)을 따로 검증한다. AI 없이는 아무것도 못 하는 사람이 좋은 점수를 받긴 힘들다.
시험2와 최종 시험에서 AI 사용이 필수인 이유도 같은 논리다. 이 두 시험이 재는 것은 AI와 함께 제한 시간 안에 내는 실전 성과이므로, AI 없이 치르는 것은 측정 대상 밖의 행동이다. 과제에서의 AI활용은 허용이다. 위키 기록과 서브프로젝트에서 AI를 어떻게 썼는지가 오히려 학습의 일부가 될 것이다.
세 경우 모두에 공통 의무가 하나 있다. 모든 평가물에는 AI 사용내역을 첨부한다. 무엇을 물었고, 무엇을 받았고, 무엇을 고쳤는지를 적는다. (미첨부는 부정행위로 처리된다.) 아울러 프롬프트에 개인정보를 넣지 않는 것이 1주차 역할 계약에 포함된 규칙이다. 실습의 AI 접속은 교수가 운영하는 게이트웨이를 거치며, 데이터 흐름은 강의계획서에 고지되어 있다.
스스로 점검 1.3
- 시험2에서 AI 사용은 선택인가, 의무인가?
- AI 사용내역 선언문을 첨부하지 않으면 어떻게 처리되는가?
1.4 LLM은 무엇을 하는 기계인가
AI를 부리려면 내부를 전부 알 필요는 없다. 그러나 오답이 만들어지는 원리는 알아야 한다. 브레이크가 왜 밀리는지 모르는 운전자는 밀리는 순간 대응하지 못한다. 이 절에 필요한 개념은 셋뿐이다. 다음 토큰 예측, 확률적 출력, 그럴듯한 오답이다.
1.4.1 하찮은 예제: 열아홉 줄짜리 문장 생성기
출발점은 LLM이 아니라 작은 파이썬 프로그램이다. 아직 코드를 읽는 법을 배우지 않았어도 좋다. 지금은 실행하고 출력을 관찰하는 것으로 충분하며, 이 코드를 해부하는 법은 5장에서 배운다.
import random
# 아주 작은 말뭉치 — 문장 세 개가 전부다
text = ("증기압 은 온도 에 따라 커진다 . "
"증기압 은 물질 마다 다르다 . "
"온도 가 오르면 증기압 이 커진다 .")
words = text.split()
# 각 단어 뒤에 실제로 나왔던 단어를 전부 기록한다
table = {}
for w, nxt in zip(words, words[1:]):
table.setdefault(w, []).append(nxt)
word = "증기압" # 시작 단어
line = [word]
for _ in range(5): # 다음 단어를 다섯 번 이어 붙인다
word = random.choice(table[word]) # 자주 나온 단어일수록 잘 뽑힌다
line.append(word)
print(" ".join(line))
실행할 때마다 다른 문장이 나온다. 어떤 실행에서는 「증기압 은 물질 마다 다르다 .」처럼 말이 되는 문장이, 다른 실행에서는 「증기압 이 커진다 . 온도 가」처럼 도중에 끊긴 문장이 나온다. 흥미로운 점은 이것이다. 이 프로그램은 증기압이 무엇인지 모른다. 아는 것은 "어떤 단어 뒤에 어떤 단어가 왔는가"라는 기록뿐인데도 출력은 제법 그럴듯하다.
1.4.2 다음 토큰 예측과 확률적 출력
이 장난감이 하는 일을 한 문장으로 줄이면 "지금까지의 단어열을 보고, 기록에 근거해 다음 단어를 확률적으로 뽑는다"가 된다. 사람이 쓴 방대한 텍스트로 이 일을 훨씬 정교하게 하도록 훈련된 프로그램을 대형 언어 모델(large language model, LLM)이라 한다. LLM이 텍스트를 다루는 최소 단위 조각을 토큰(token)이라 하며, 단어보다 잘게 쪼개지는 경우가 많다. LLM은 직전 한 단어가 아니라 수천 토큰의 문맥 전체를 반영하고, 빈도표 대신 거대한 수치 모델로 다음 토큰의 확률을 계산한다. 규모의 차이는 압도적이지만 산출의 본성은 같다. 다음 토큰을 예측해 이어 붙인다.
코드 1-2의 random.choice가 하는 일을 LLM도 한다. 후보 토큰마다 확률을 매긴 뒤 그 분포에서 하나를 뽑는다. 그래서 같은 프롬프트를 두 번 보내면 다른 답이 올 수 있다. 고장이 아니라 설계다.
실무적으로 생각해볼 것은 두 가지다. 재생성은 공짜 재시도가 아니라 새로운 검증 대상이다. 어제 좋은 코드를 생성한 프롬프트가 오늘 다른 코드를 생성한다. 그리고 "한 번 확인했다"는 "늘 옳다"의 근거가 되지 못하므로, 확인 절차 자체를 테스트 코드로 남겨 반복 실행해야 한다. 이 습관은 2장부터 보도록 하자.
1.4.3 그럴듯한 오답
LLM이 사실이 아닌 내용을 사실처럼 자신 있게 생성하는 현상을 환각(hallucination)이라 한다. 이 이름은 오해를 부른다. 환각은 모델이 가끔 빠지는 비정상 상태가 아니다. 모델은 답의 진위를 어디에서도 조회하지 않으며, 맞는 답과 틀린 답이 같은 기제(다음 토큰 예측)로 만들어진다. 코드 1-2가 증기압의 뜻을 모른 채 증기압 문장을 만들었음을 떠올려 보자.
따라서 출력이 유창하다는 사실은 내용이 옳다는 증거가 전혀 아니다. 화학공학 데이터에서 환각은 물성 날조로 나타난다. 존재하지 않는 Antoine 상수, 출처 없는 끓는점, 그럴듯한 임계 물성. 3장에서 실제 사례를 해부하고, 5주차 실습에서는 AI가 날조한 Antoine 상수를 직접 잡아낸다.
생각해보기 실행 테스트(사이클 ⑤)를 통과하고도 살아남는 오류에는 어떤 것이 있을까. 두 가지를 상상해 보고, 각각을 잡을 방법을 제안해 보라.
스스로 점검 1.4
- 코드 1-2를 두 번 실행하면 출력이 항상 같은가? 어느 줄이 그 답을 결정하는가?
- 환각은 LLM의 고장인가, 정상 작동의 부산물인가?
1.5 15주의 지도
이 수업은 네 국면으로 진행된다. 1~4주는 훅이다. 강의노트 정리기·플래시카드 생성기·스터디 플래너로 자신의 학습 OS를 조립한다. 시간제한이 없고, 결과는 등수 없이 통과/재도전 2단계로만 처리되는 저부담 구간이다. 5~7주는 근육이다. 코드 읽기·검증 훈련과 첫 화공 도구를 다루고 시험1(AI 금지 지필)을 치른다. 8~13주는 사다리다. 화공 도구를 매주 하나씩 실기 형식으로 만들고 시험을 치른다. 13~15주는 완성이다. 서브프로젝트 발표와 최종 실습 실기, 그리고 구술 방어이다.
도구 사다리는 아홉 계단이다. ① 강의노트 정리기, ② 플래시카드 생성기, ③ 스터디 플래너, ④ 단위환산 + 물성 조회기, ⑤ Antoine 증기압 계산기, ⑥ 이성분계 T-xy 다이어그램, ⑦ 물질수지 solver, ⑧ 배관 압력강하 계산기, ⑨ 공정 데이터 대시보드. 앞의 셋은 오늘 밤 다른 과목 공부에 바로 쓰는 도구이고, 뒤의 여섯은 화공양론·유체역학과 나란히 가는 전공 도구다. 도구는 1회성 과제가 아니라 재사용 자산이다. 9장의 T-xy 다이어그램은 8장의 증기압 함수를 그대로 가져다 쓰고, 서브프로젝트는 본인 산출물 2개 이상의 재사용을 요건으로 한다.
매주 실습은 최종 시험의 축소판이다. 5주차부터 타이머가 붙고, 제한 시간은 30분에서 45·60·75·90분을 거쳐 최종 시험의 120분까지 점증한다. 같은 형식을 15번 연습한 상태로 시험장에 들어가는 것이 이 설계의 목적이다.
최종 실습시험의 루브릭은 1주차인 지금 전체가 공개된다. 작동성 14점, 코드 이해 10점, 프롬프트 전략 8점, 발표 8점. 작동성에는 검증 증빙(단위·대조값·극한값의 README 기록)이 필수 항목으로 들어 있고, 프롬프트 전략은 전체 로그로 채점된다. 전문은 부록 E에 있다.
마지막 조각이 위키다. 15주 동안 배운 것·틀린 것·만든 것을 마크다운으로 누적하는 개인 지식 저장소를 이 수업에서는 위키(위키)라 한다. 노트에는 성장단계 태그 #seed → #growing → #evergreen을 붙이고, 5·10·15주의 마일스톤 3회에 걸쳐 각 2점씩 채점된다. 채점 기준은 누적성(주당 의미 있는 커밋 1개 이상, 몰아치기는 커밋 이력에서 드러나 감점된다), 개인화 깊이, 활용도다. 매 실습의 마지막 15분은 위키 시간이며, 그날 만든 것·막힌 것·틀린 것 1건을 기록해야 퇴실한다. 2~4주에 만드는 도구들이 위키를 직접 읽고 쓰므로, 도구를 쓸수록 위키가 자라는 구조다.
생각해보기 AI가 코드를 전부 쓰는 시대에 화학공학자는 무엇으로 대체 불가능해지는가. 이 장에서 읽은 근거 말고, 본인의 근거를 두 가지 들어 보라.
실습 1: 개발환경 셋업 + 첫 바이브코딩 + 위키 개설 (120분, 타이머 없음)
준비물 Windows 노트북(전원 어댑터 포함), GitHub 계정, LMS에서 내려받은 배포 스크립트(.ps1). 스크립트는 Git, Claude Code, 게이트웨이 가상 키 설정을 일괄 구성한다. 절차 전문과 문제 해결은 부록 A에 있다. 노트북이 없거나 셋업이 끝내 실패하면 GitHub Codespaces 백업 경로(부록 A)로 전원 구제된다.
오류 메시지를 두려워할 필요가 없다. 에러는 컴퓨터를 망가뜨리지 않으며, 오류 전문을 복사해 AI에 붙여넣는 것이 이 수업의 표준 동작이다.
실습 1.1 셋업 (약 30분)
- PowerShell을 열고 배포 스크립트를 실행하라. (완료 확인: 오류 없이 "설치 완료" 메시지로 끝난다)
- 새 터미널 창을 열고
claude를 실행하라. (완료 확인: Claude Code 대화 화면이 뜬다) claude is not recognized류의 오류가 나면 창을 전부 닫고 새 PowerShell에서 다시 시도하라. (설치 직후의 기존 창은 새 명령을 모른다. 부록 A의 1번 함정)
[주의] Git Bash에서 Claude Code를 실행하지 않는다. Raw mode 오류가 난다. 이 수업의 터미널은 PowerShell 또는 Windows Terminal이다.
실습 1.2 저장소 두 개 (약 20분)
- GitHub Classroom 초대 링크로 실습 저장소를 발급받아라. (완료 확인: 본인 계정 아래 저장소가 생긴다)
- 위키 저장소를 private로 새로 만들고 교수를 collaborator로 초대하라. (완료 확인: Settings의 Collaborators 목록에 교수 계정이 보인다)
실습 1.3 첫 바이브코딩 (15분)
예제 1.2-1과 같은 절차를 이번에는 직접 돈다. 문제: 섭씨 온도를 켈빈으로 바꾸는 함수. 변환 관계는 T[K] = t[°C] + 273.15이다.
- Claude Code에 함수를 요청하라. 입력·출력 단위와 "주석은 한국어로"를 프롬프트에 명시하라. (완료 확인: 함수가 든 .py 파일이 생긴다)
- 생성 코드를 페어에게 소리 내어 한 줄씩 설명하라. (완료 확인: 페어가 "설명 안 된 줄 없음"에 동의한다)
- 0 °C를 넣어 실행하라. (완료 확인: 273.15가 나온다)
- −300 °C를 넣어 보라. 절대영도 아래의 입력을 코드가 어떻게 다루는지 관찰하고, 그대로 통과시킨다면 방어 코드를 추가로 요청하라. (완료 확인: 비물리적 입력에서 오류 또는 경고가 난다)
- 확인한 것 세 가지(단위, 대조값 273.15, 극한값 처리)를 README에 기록하라. (완료 확인: README에 검증 절 3줄이 있다)
실습 1.4 첫 커밋 (약 15분)
- 실습 저장소에 .py 파일과 README를 커밋하고 푸시하라. (완료 확인: GitHub 웹에서 파일이 보인다)
- 위키 저장소에 첫 노트를 커밋하라(오늘 만든 것·막힌 것·틀린 것 1건). (완료 확인: 위키에 커밋 1개 이상)
완성 기준: 이번 주 산출물은 "작동하는 개발환경 + 위키 repo 첫 커밋"이다.
- 새 PowerShell 터미널에서
claude가 실행된다. - 실습 저장소에 환산 함수와 검증 기록이 담긴 README가 커밋되어 있다(커밋 1개 이상).
- 위키 저장소가 private로 개설되어 교수 초대가 완료됐고, 첫 노트가 커밋되어 있다.
하나라도 미달이면 "재도전"이며, 다음 실습 전까지 완료하면 된다. 등수는 없다.
막혔는가?
- 셋업 오류: 오류 전문을 복사해 AI에게 물어라. "Windows PowerShell에서 이 오류가 났다. 원인 후보 세 가지와 각각의 확인 방법을 알려 줘."
- 함수 요청이 겉도는 경우: 단위를 빼먹지 않았는지 보라. "입력은 섭씨(°C), 출력은 켈빈(K). 함수 하나만. 주석은 한국어로."
- 푸시 인증 실패: "git push에서 이 인증 오류가 났다. 대학 실습실 Windows에서 가장 간단한 해결 순서를 단계별로 알려 줘."
퇴실 전 기록 오늘 만난 오류 중 하나를 화면 캡처와 함께 위키에 남겨라. "무엇을 하려다 → 무엇이 나왔고 → 무엇으로 해결했다" 세 줄이면 충분하다. 기록해야 퇴실이다.
요약
- S 1-1 (역할 계약) AI가 코드를 쓴다. 학생은 ① 문제 분해 ② 생성 코드 읽기·설명 ③ 화학공학적 검증을 책임진다. 설명하지 못한 코드의 이해 점수는 0점이다.
- S 1-2 (AI 협업 사이클) 문제 정의 → 분해 → 프롬프트 → 생성 코드 읽기 → 테스트 → 화공 검증. AI의 몫은 ③과 ④ 사이의 코드 생성뿐이다.
- S 1-3 (리스팅 규격) 프롬프트 / 생성 코드(점선 = 미검증) / 검증 코멘트의 3단 고정. 검증 칸이 빈 리스팅은 없다.
- S 1-4 (LLM 최소 모형) LLM은 다음 토큰을 확률적으로 예측해 이어 붙인다. 맞는 답과 틀린 답이 같은 기제로 생성되므로, 유창함은 옳음의 증거가 아니다.
| 구분 | 평가 | 재는 것 | 사이클에서의 위치 |
|---|---|---|---|
| 금지 | 시험1 | AI 없이 남는 읽기·검증·설계 능력 | ④⑤⑥을 맨손으로 |
| 필수 | 시험2·시험3 | AI와 함께 제한 시간 안에 내는 실전 성과 | ①~⑥ 전체 |
| 허용 | 과제(위키·서브프로젝트) | 누적 습관과 자기 학습 시스템 | 매주 반복되는 ①~⑥의 기록 |
이 장은 사이클의 특정 블록이 아니라 지도 전체를 폈다. 손에는 작동하는 개발환경과 위키, 그리고 사이클을 한 바퀴 돌아 본 경험이 남았다. 도구 사다리로 치면 아직 0계단이다. 다음 장부터 한 계단씩 오른다.
용어 정리
- 바이브코딩(vibe coding)
- 자연어로 의도를 말하면 AI가 코드를 작성하고, 사람이 그 코드를 읽고 검증하는 작업 방식.
- 역할 계약
- AI가 코드를 쓰고 학생이 문제 분해·생성 코드 읽기·화학공학적 검증을 책임진다는 이 수업의 명문화된 분업.
- AI 협업 사이클
- 문제 정의–분해–프롬프트–생성 코드 읽기–테스트–화공 검증의 6단계 작업 절차.
- AI 활용 규칙(3-lane)
- 평가별로 AI 사용을 금지(시험1)·필수(시험2·3)·허용(과제)으로 나눈 규칙.
- 검증 루틴 3종
- 단위 체크, 대조값 비교, 극한값 sanity의 세 가지 화공 검증 절차(3장에서 정식 도입).
- 대형 언어 모델(large language model, LLM)
- 방대한 텍스트로 다음 토큰을 예측하도록 훈련된 프로그램.
- 토큰(token)
- LLM이 텍스트를 처리하는 최소 단위 조각.
- 환각(hallucination)
- LLM이 사실이 아닌 내용을 사실처럼 자신 있게 생성하는 현상.
- 프롬프트(prompt)
- AI에게 보내는 자연어 요청문.
- 저장소(repository)
- 코드와 기록의 변경 이력을 보관하는 프로젝트 단위 폴더.
- 커밋(commit)
- 저장소에 변경 사항을 이름 붙여 기록하는 행위.
- 위키(위키)
- 배운 것·틀린 것·만든 것을 15주 동안 마크다운으로 누적하는 개인 지식 저장소.
연습문제
Q군: 개념·읽기 (AI 없이 풀라)
- Q1.1 역할 계약에서 학생이 책임지는 세 가지를 쓰고, 각각이 최종 시험 루브릭의 어느 차원(작동성·코드 이해·프롬프트 전략·발표)과 연결되는지 밝혀라.
- Q1.2 다음 네 상황을 AI 활용 규칙으로 판정하라. (a) 시험1 대비 공부 중 AI에게 기출 유형 코드를 설명시킨다 (b) 시험2 도중 막혀서 AI에게 디버깅을 요청한다 (c) 위키 정리에 AI 요약을 쓰고 선언문에 적지 않는다 (d) 시험1 답안 작성 중 스마트폰으로 AI를 조회한다.
- Q1.3 코드 1-2를 두 번 실행했을 때 출력이 다를 수 있는 이유를 코드의 특정 줄을 근거로 설명하라. LLM에서 같은 역할을 하는 것은 무엇인가.
P군: 제작·계산 (AI 사용 전제)
- P1.1 예제 1.2-1의 함수를 섭씨 입력을 받도록 바꾸는 프롬프트를 작성하고, 생성 코드를 검증 루틴 3종으로 검증하라. 검증에 쓸 대조값을 먼저 정하고 출처를 남겨라.
- P1.2 존재하지 않는 라이브러리를 일부러 요청해(예: "메탄올 물성을 phantom_props 라이브러리로 조회해 줘") 오류를 재현하라. 오류 전문과 원인, 교정 프롬프트를 위키에 기록하라.
- P1.3 예제 1.2-1의 코드를 겉보기에 그럴듯하게 틀리도록 만드는 방법을 두 가지 제시하고, 각각이 검증 루틴 3종 중 무엇에 걸리는지 밝혀라. 이어서 세 루틴을 모두 통과할 수 있는 오류를 하나 설계해 보고, 그런 오류까지 잡으려면 무엇이 더 필요한지 논하라.
위키 기록 과제 ① 이번 장 핵심을 1페이지로 정리하라(#seed 태그). ② "내가 틀렸던 것" 1건(셋업이나 첫 바이브코딩에서 만난 에러 화면 캡처와 원인). ③ 타 과목 연결 1건(예: 일반화학의 이상기체 단원과 예제 1.2-1의 연결). 이번 주 의미 있는 커밋 1개 이상이 채점 지표다.