한 질문, 한 입력, 한 규칙, 한 시각화, 한 파일을 끝까지 연결하기
오늘의 실습 목표
- 승인된 자신의 입력 또는 수업 제공 입력 가운데 하나를 안전하게 불러올 수 있습니다.
- 입력의 원본을 별도 변수와 지문으로 보존하고 처리 전후의 수량을 출력할 수 있습니다.
- 데이터 집계, 텍스트 빈도, 소리 RMS, 생성 매개변수 적용 가운데 질문에 필요한 처리 규칙 하나를 실행할 수 있습니다.
- 처리 값을 길이·시간·위치·크기·색 가운데 필요한 시각 요소에 연결한 핵심 화면을 만들 수 있습니다.
- 관찰 단위, 수집·제작 시점, 개인정보 점검과 값의 단위를 입력 옆에 기록할 수 있습니다.
- 화면에서 가리킬 근거를 포함한 관찰, 한계, 15주차 수정 두 가지를 구체적인 문장으로 기록할 수 있습니다.
- 새 런타임의 모두 실행에서 자동 검사 PASS를 받고 노트북과 PNG 또는 HTML을 제출할 수 있습니다.
자동 검사 PASS + 결과 파일 열림 + 출처 확인 + 교수 증거 확인 + 필수 파일 제출 = 즉시 귀가
0-5분의 공통 안내가 끝나면 각자 자신의 속도로 진행합니다. 자동 증거가 준비되는 즉시 30-45초 확인 대기열에 들어가고, 교수에게 질문·권한·관찰·한계·수정 행동·가독성을 한 화면에서 확인받아 teacher_gate = "confirmed"로 기록합니다. 새 런타임 최종 PASS, 열리는 PNG 또는 HTML, 제출 파일까지 확인한 학생은 수업 종료 시각을 기다리지 않고 귀가할 수 있습니다.
속도는 평가 기준이 아닙니다. 작업 속도와 남은 수업 시간은 평가에 반영하지 않습니다. 빠른 장식보다 원본 보존, 처리 값과 화면의 일치, 재실행 가능성, 책임 있는 자료 이용을 먼저 증명합니다.
- STEP 0준비사본·파일명·판정
- STEP 1카드질문·독자·출처
- STEP 2입력경로·모드·원본 보존
- STEP 3처리집계·빈도·RMS·매개변수
- STEP 4표현막대·선·도형
- STEP 5해석관찰·한계·다음 행동
- STEP 6저장PNG 또는 HTML
- STEP 7검증·제출새 런타임 PASS
종료 조건
재현되는 핵심 경로와 열리는 결과 파일
자동 검사는 입력 보존, 처리 값, 화면 요소, 파일 규격을 확인합니다. 교수는 질문과 입력의 대응, 자료 이용 권한, 승인된 범위, 실제 가독성을 확인합니다. 두 검토를 모두 통과해야 완료입니다.
WEEK 14 PROJECT PROTOTYPE COMPLETE먼저 내려받을 노트북과 결과 경로
원본 크기로 보기 ↗
막히면 제공 자료로 먼저 완전한 경로를 만듭니다
노트북에는 9행 가상 데이터, 교수자 창작 짧은 텍스트, 4초 합성 사운드, 위치·크기·색을 담은 5행 생성 매개변수가 포함되어 있습니다. input_mode = "provided"를 유지하면 외부 파일 없이 실행됩니다. 자신의 자료가 승인되지 않았거나 형식이 맞지 않으면 제공 자료로 전환해 같은 학습 목표를 수행합니다.
귀가 조건: 제출 전에 열다섯 가지 확인
귀가 조건 진행률완료 0/15
체크 상태는 이 브라우저에 저장됩니다. 체크 표시는 확인을 돕는 기록이며, 자동 검사와 교수 확인을 대신하지 않습니다.
STEP 0준비와 판정
STEP 1프로젝트 카드
STEP 2입력과 원본
STEP 3처리
STEP 4표현
STEP 5해석
STEP 6저장
STEP 7검증과 제출
자동 검사의 범위
자동 검사는 프로젝트의 의미와 미적 완성도를 대신 평가하지 않습니다. 입력 지문, 결측값, 처리 값과 화면 요소의 길이·위치·색 관계, 관찰 근거 포함 여부, 파일 존재·형식·크기를 확인합니다. 질문이 입력으로 답할 수 있는지, 권한 설명이 사실인지, 관찰과 한계가 결과에 맞는지, 두 수정이 실제 행동인지, 화면이 읽히는지는 교수가 별도로 확인합니다.
50분 진행 기준
- 0-5분미션 계약
귀가 조건, 네 경로, 제출 파일과 면담 큐를 확인합니다.
- 5-12분사본·카드
파일명을 바꾸고 STEP 1의 판정·메타데이터를 기록합니다.
- 12-22분입력·처리
원본을 보존하고 한 가지 처리 결과를 확인합니다.
- 22-32분핵심 시각화
처리 값을 막대·선·도형의 시각 요소에 연결합니다.
- 32-38분저장·육안 점검
PNG 또는 HTML을 직접 열어 잘림을 확인합니다.
- 38-44분증거 점검
기술 검사와 관찰·한계·행동 문장을 준비합니다.
- 44-48분마지막 확인·최종 실행
12분부터 병행한 확인을 마치고 모두 실행합니다.
- 48-50분제출·귀가
필수 파일을 제출하고 완료 확인 뒤 귀가합니다.
두 번의 긴 대기열을 만들지 않습니다
2교시 15분 안에 자기 자료 승인을 받지 못했다면 input_mode = "provided"와 approval_status = "provided"로, 이전 코드 재사용 승인을 받지 못했다면 reuse_status = "guided"로 각각 전환합니다. 제공 입력과 승인 코드를 함께 쓰는 조합도 가능합니다. 3교시에는 전원이 결과를 완성하는 동안 12분 이후부터 자동 증거가 준비된 순서대로 30-45초 최종 확인을 병행합니다. 30명도 최대 22.5분에 확인할 수 있으므로, 44분까지 기다렸다가 한꺼번에 줄을 서지 않습니다.
시간은 순서를 놓치지 않기 위한 기준입니다. 앞 단계가 빨리 끝나면 즉시 다음 단계로 이동합니다. 오류가 생기면 아래 문제 해결 항목에서 현재 STEP을 찾고, 그래도 해결되지 않으면 오류 문장 전체와 해당 STEP 번호를 교수에게 보여 줍니다.
STEP 0 · 노트북 사본과 제출 파일명 만들기
- 실습 노트북을 내려받아 Google Colab에서 엽니다.
- 파일 → Drive에 사본 저장을 선택합니다.
- 노트북 이름을
week14_학번_이름_prototype.ipynb로 바꿉니다. - 입력 판정은
approval_status와approval_note에, 코드 판정은reuse_status와reuse_note에 따로 옮깁니다. - 처음에는 STEP 0부터 STEP 7까지 한 번 실행해 제공 경로의 구조를 봅니다.
EDIT:문장 때문에 최종 검사가 실패하는 것은 정상입니다.
Drive 사본의 파일명에 실제 학번과 이름이 있고, 승인된 자기 경로 또는 바로 진행할 제공 경로가 정해져 있습니다.
Colab에서 노트북이 열리지 않을 때
Colab을 먼저 연 뒤 파일 → 노트북 업로드에서 내려받은 .ipynb를 선택합니다. 브라우저가 JSON 글자를 보여 주는 탭에서는 편집하지 않습니다.
STEP 0에서 패키지 설치가 오래 걸릴 때
노트북은 필요한 버전이 없을 때만 NumPy, pandas, Matplotlib, Pillow를 설치합니다. 설치가 끝날 때까지 다음 셀을 따로 실행하지 않습니다. 세션 다시 시작 안내가 나타나면 다시 시작한 뒤 모두 실행합니다.
한글 글꼴 설치 뒤에도 글자가 네모로 보일 때
STEP 0이 한글 글꼴 이름을 출력했는지 확인합니다. 이전에 그린 Figure는 자동으로 바뀌지 않으므로 런타임 → 세션 다시 시작 후 STEP 0부터 모두 실행합니다.
STEP 1 · 프로젝트 카드와 경로 선택
STEP 1은 오늘 수정하는 첫 번째 코드 셀입니다. 학번·이름, 입력 판정, 코드 재사용 판정, 경로·입력·출력 형식, 질문과 자료 메타데이터를 편집합니다. 따옴표, 변수 이름, 등호는 지우지 않고 따옴표 안의 값만 바꿉니다. 입력 판정과 코드 판정을 하나로 합치지 않으며, teacher_gate는 교수가 최종 의미 확인을 마치기 전까지 "pending"으로 둡니다.
student_id = "20261234"
student_name = "김프로토"
project_track = "data"
input_mode = "provided"
own_source_filename = ""
output_format = "png"
approval_status = "provided"
approval_note = "수업 제공 데이터의 범주별 합계와 막대 경로로 범위를 확정했다"
reuse_status = "guided"
reuse_note = "공통 STEP 3·4 코드를 수정하지 않고 그대로 사용한다"
teacher_gate = "pending"
project_question = "세 공간의 기록 합계는 어떻게 다른가?"
intended_audience = "학과 공간을 처음 이용하는 학생"
project_source = "Contents Programming Practice Week 14 교수자 제공 가상 자료"
usage_rights = "수업 실습과 제출을 위해 제공된 가상 자료"
reference_date = "2026-08-18 수업용 제작 자료"
privacy_check = "실제 개인을 포함하지 않은 교수자 창작 가상 자료임을 확인했다"
observation_unit = "한 행은 한 공간에서 한 번 집계된 기록값을 뜻한다"
value_unit = "기록 합계"
scope_decision = "이번 주에는 지도와 인터랙티브 필터를 구현하지 않는다"
processing_rule = "category가 같은 행의 value를 합산한다"
visual_rule = "공간 범주를 세로 위치에, 기록 합계를 막대 길이에 연결한다"
| 값 | 제공 입력 | 처리 규칙 | 기본 출력 |
|---|---|---|---|
data | category, value 열의 9행 가상 표 | 범주별 합계 | 막대 3개 |
text | 교수자 창작 영문 28토큰 | 정규화한 상위 단어 빈도 | 최대 막대 8개 |
sound | 8,000Hz·4초 합성 신호 | 50밀리초 프레임별 RMS | 159개 에너지 값의 선 |
image | x, y, size, color의 5행 매개변수 | 유효한 생성 매개변수 적용 | 위치·크기·색이 다른 원 5개 |
자신의 자료가 2교시 면담에서 승인되었다면 업로드하기 전에 복사본의 이름을 week14_학번_이름_source.확장자로 바꿉니다. input_mode = "own"으로 바꾸고 own_source_filename에도 그 표준 파일명을 정확히 적은 뒤 STEP 1부터 다시 실행합니다. 실행 뒤에 파일명만 따로 바꾸지 않습니다. 승인이 없거나 형식이 다르면 provided를 유지합니다.
| 경로 | 허용 파일 | 필수 구조 | 업로드 전 확인 |
|---|---|---|---|
| 데이터 | UTF-8 CSV | category, value 열; value는 0 이상의 수 | 개인정보 제거, 열 이름, 이용 조건 |
| 텍스트 | UTF-8 TXT | 분석할 짧은 본문 한 개 | 저작권 또는 직접 작성, 인코딩 |
| 사운드 | 모노 16-bit PCM WAV | 한 채널의 짧은 소리 | 직접 생성·녹음 또는 허가, 대화 제거 |
| 규칙 이미지 | UTF-8 CSV | x, y, size, color; 위치는 0-1, 색은 #RRGGBB | 생성 규칙·출처, 크기 범위, 캔버스 밖 좌표 |
project_track 오류가 날 때
"data", "text", "sound", "image" 가운데 하나를 소문자로 정확히 입력합니다. 한글 경로명이나 앞뒤 공백을 넣지 않습니다.
input_mode 오류가 날 때
외부 파일 없이 진행하면 "provided", 승인된 자신의 파일을 업로드했다면 "own"을 입력합니다. 자신의 자료가 준비되지 않았는데 own을 선택하지 않습니다.
approval_status와 reuse_status는 무엇이 다른가?
approval_status는 입력 파일의 판정입니다. 제공 입력은 provided, 자기 입력은 승인 뒤 approved 또는 scoped를 씁니다. reuse_status는 STEP 3·4 코드의 판정입니다. 공통 코드는 guided, 승인 재사용 코드는 approved 또는 scoped입니다. 따라서 제공 입력과 승인 재사용 코드를 함께 선택할 수 있습니다.
자신의 입력 파일명이 표준 이름과 다르다고 나올 때
학번 20261234, 이름 김프로토의 데이터 파일이라면 week14_20261234_김프로토_source.csv처럼 입력 유형에 맞는 확장자를 사용합니다. Colab 파일 패널에서 먼저 이름을 바꾸고, 같은 문자열을 own_source_filename에 적은 뒤 STEP 1부터 다시 실행합니다. 이렇게 해야 제출받은 노트북도 같은 파일을 다시 찾습니다.
질문 길이 또는 물음표 검사가 실패할 때
EDIT:를 지우고 15~70자의 한 줄로 작성합니다. 마지막은 ? 또는 ?로 끝냅니다. “무엇을 만들까?”보다 현재 입력의 차이·분포·반복·변화를 묻습니다.
자료 출처와 이용 근거의 차이는 무엇인가?
출처는 자료가 어디서 왔는지 설명하고, 이용 근거는 왜 분석·변형·제출할 수 있는지 설명합니다. “기관명과 원본 주소”는 출처이고, “CC BY 조건 확인”, “직접 제작”, “수업용 제공 자료”는 이용 근거입니다.
teacher_gate를 언제 바꾸는가?
STEP 0-6의 결과와 STEP 5 문장을 교수에게 보여 주고 질문·권한·관찰·한계·수정 행동·가독성을 확인받은 뒤에만 "confirmed"로 바꿉니다. 먼저 바꾸는 것은 교수 확인을 대신하지 못합니다.
STEP 2 · 승인된 입력을 불러오고 원본 보존하기
STEP 2는 선택한 경로와 입력 모드에 따라 입력을 불러옵니다. 제공 자료는 코드 안에서 만들어지며, 자신의 자료는 같은 세션에 업로드한 파일을 읽습니다. 이 셀은 원본 사본과 SHA-256 지문을 남깁니다. 지문은 파일 내용이 바뀌면 달라지는 긴 문자열로, 실행 중 원본이 그대로였는지 확인하는 표식입니다.
데이터STEP 2 PASS · data 원본 보존 · digest …
텍스트STEP 2 PASS · text 원본 보존 · digest …
사운드STEP 2 PASS · sound 원본 보존 · digest …
규칙 이미지STEP 2 PASS · image 원본 보존 · digest …
데이터 경로는 raw_data, 텍스트 경로는 raw_text, 사운드 경로는 raw_signal, 규칙 이미지 경로는 raw_image_params를 만들고 각각 raw_snapshot을 남깁니다. 뒤 셀에서 원본을 직접 바꾸면 최종 검사가 실패합니다.
STEP 2의 마지막 줄에 선택 경로와 원본 보존 PASS가 보이고, own 모드라면 업로드한 표준 파일명과 own_source_filename의 철자·확장자가 정확히 같습니다.
지정한 파일을 찾을 수 없다고 나올 때
Colab 왼쪽 파일 패널에 표준 이름의 원본 복사본이 보이는지 확인하고, 그 파일명을 own_source_filename의 따옴표 안에 붙입니다. Drive의 파일은 세션에 자동 업로드되지 않을 수 있습니다. 파일 패널에서 이름을 바꿨다면 STEP 1부터 다시 실행합니다.
CSV에 category와 value 열이 없다고 나올 때
파일의 첫 줄이 정확히 category,value인지 확인합니다. 자신의 원본 열 이름을 임의로 바꾸기 전에 복사본을 만들고, 면담에서 합의한 관찰 단위와 값이 맞는지 확인합니다. 시간이 부족하면 제공 자료로 전환합니다.
CSV의 빈 범주·결측값·무한대 때문에 멈출 때
빈 값을 문자열 nan이나 0으로 임의 변환하지 않습니다. 원본 복사본에서 누락 이유를 확인하고, 질문에 필요한 행을 책임 있게 보완할 수 없으면 제공 자료로 전환합니다. 막대 길이로 표현하는 공통 데이터 경로는 공백 범주, 결측 수치, inf, 음수를 모두 거부합니다.
TXT를 UTF-8로 읽을 수 없다고 나올 때
텍스트 편집기에서 복사본을 UTF-8로 다시 저장합니다. 원본을 덮어쓰지 않습니다. 인코딩 변환이 어렵거나 이용 권한이 불분명하면 제공 텍스트로 전환합니다.
WAV가 모노 또는 16-bit PCM이 아니라고 나올 때
원본을 보존한 뒤 오디오 편집 도구에서 별도 복사본을 모노 16-bit PCM WAV로 내보냅니다. 수업 시간 안에 변환하기 어렵다면 제공 사운드를 사용합니다.
이미지 매개변수의 좌표나 색 형식이 잘못되었다고 나올 때
x와 y는 0과 1 사이, size는 10과 180 사이, color는 #116e68처럼 여섯 자리 16진수인지 확인합니다. 열 이름은 x,y,size,color 순서로 둡니다.
STEP 3 · 처리 규칙 하나와 전후 수량 확인하기
STEP 3은 경로별로 하나의 안전한 시작 규칙을 실행합니다. reuse_status = "guided"이면 수정하지 않습니다. 2교시 면담에서 이전 주차의 개인 처리 규칙을 승인받아 approved 또는 scoped를 기록한 학생만 APPROVED REUSE ZONE의 자기 경로를 교체하고, 마지막에 processed_values라는 1차원 수치 증거를 남깁니다. 입력은 제공 자료여도 됩니다. 콘솔에는 입력 수량과 처리 결과 수량이 함께 출력되어야 합니다.
| 경로 | 입력 | 처리 | 기대 출력 |
|---|---|---|---|
| 데이터 | 9행, 세 범주 | 범주별 value 합산 | Archive 84, Studio 63, Screening 49 |
| 텍스트 | 28토큰 | 소문자 정규화와 빈도 순위 | record 8회, 상위 단어 최대 8개 |
| 사운드 | 32,000샘플, 4초 | 400샘플 프레임, 200샘플 이동의 RMS | 159개 에너지 값 |
| 규칙 이미지 | 위치·크기·색 매개변수 5건 | 범위와 색 형식을 확인해 도형 값으로 준비 | 크기 값 5개와 좌표 5쌍 |
data입력 9행 → 범주 3개
text입력 28토큰 → 상위 단어 7개
sound입력 32000샘플 → 에너지 구간 159개
image입력 5개 매개변수 → 도형 5개
데이터의 value를 숫자로 바꿀 수 없다고 나올 때
value 열에 “없음”, 쉼표가 포함된 문자열, 단위가 붙은 값이 있는지 확인합니다. 어떤 값을 결측으로 처리할지 임의로 정하지 말고 면담 범위를 다시 확인하거나 제공 자료로 전환합니다.
텍스트 결과에 조사나 일반 단어가 너무 많이 보일 때
이번 30% 경로는 토큰화와 빈도 연결이 작동하는지 확인하는 단계입니다. 불용어 목록은 15주차 보완 항목으로 기록할 수 있습니다. 지금 처리 코드를 크게 바꾸다 핵심 경로를 잃지 않습니다.
소리가 너무 짧아 에너지를 계산할 수 없다고 나올 때
현재 프레임은 약 50밀리초입니다. 입력이 이보다 짧으면 분석 구간이 만들어지지 않습니다. 더 긴 승인 파일을 사용하거나 제공 4초 신호로 전환합니다.
이전 주차 코드를 재사용했더니 최종 검사가 실패할 때
자신의 처리 결과가 processed_values라는 비어 있지 않은 1차원 숫자 배열로 남는지 확인합니다. 원래 분기 전체를 지우지 말고 승인받은 경로의 APPROVED REUSE ZONE만 교체합니다. 계약을 맞추기 어렵다면 공통 시작 규칙으로 돌아갑니다.
STEP 4 · 처리 값을 막대·선·도형의 시각 요소에 연결하기
STEP 4는 데이터와 텍스트 경로에서 processed_values를 막대 길이에, 사운드 경로에서 시간과 RMS를 선의 가로·세로 위치에, 규칙 이미지 경로에서 좌표·크기·색을 원의 위치·면적·색에 연결합니다. 기본 화면은 장식이 아니라 처리 규칙이 실제로 보이는지 확인하는 증거입니다.
# 데이터·텍스트 경로
visual_artists = axis.barh(
processed_labels,
processed_values,
)
# 사운드 경로
(visual_artist,) = axis.plot(
processed_times,
processed_values,
)
# 규칙 이미지 경로
visual_artist = axis.scatter(
processed_x,
processed_y,
s=processed_values ** 2 / 3,
c=processed_colors,
)
승인 재사용 학생만: 공개 어댑터 확인
공통 경로를 그대로 실행한다면 아래 변수 이름을 편집하지 않습니다. 승인받은 이전 코드를 STEP 4에 연결하는 학생만 확인합니다. 막대의 레이블과 길이는 처리 셀에서 만든 값이고, 선의 x와 y는 처리 시간과 에너지 값이며, 원의 위치·크기·색은 이미지 매개변수입니다. 최종 검사는 Matplotlib 안의 실제 값을 다시 꺼내 아래 공개 어댑터 쌍만 비교합니다.
| 경로 | 필수 증거 쌍 | 사용하지 않는 쌍 |
|---|---|---|
| 모든 경로 | mapping_source_values / mapping_visual_values | 없음 |
| 데이터·텍스트 | mapping_source_labels / mapping_visual_labels | 위치·색 쌍은 None |
| 소리 | mapping_source_positions / mapping_visual_positions | 레이블·색 쌍은 None |
| 이미지 | 위치 쌍 + mapping_source_colors / mapping_visual_colors | 레이블 쌍은 None |
visual_element_count는 mapping_visual_values의 길이에서 자동 계산됩니다. FINAL CHECK는 processed_labels, processed_times, processed_x 같은 경로 내부 변수나 Matplotlib artist를 직접 읽지 않습니다.
데이터·텍스트 경로는 막대 수와 처리 항목 수가 같고 0에서 시작합니다. 사운드 경로는 가로축이 초이고 빈 선이 아닙니다. 규칙 이미지 경로는 도형 수, x·y 위치와 크기가 처리 결과와 일치합니다.
그래프는 보이는데 순서가 예상과 다를 때
데이터는 작은 값에서 큰 값으로 정렬해 가로 막대가 아래에서 위로 읽히고, 텍스트는 상위 빈도를 선택한 뒤 표시 순서를 뒤집습니다. 값이 맞다면 정렬 방향은 오류가 아닙니다. 15주차에 독자의 읽기 흐름에 맞게 조정할 수 있습니다.
막대 수는 맞지만 값이 잘못 보일 때
STEP 4의 색상이나 글꼴이 아니라 STEP 3의 processed_values를 먼저 출력합니다. 콘솔 값과 막대 끝의 숫자가 다르면 시각화 변수를, 둘 다 예상과 다르면 입력과 처리 규칙을 확인합니다.
사운드 선이 거의 평평하게 보일 때
일정한 크기의 소리는 RMS 변화가 작을 수 있습니다. 빈 결과가 아니며 실제 입력 특성이라면 오류가 아닙니다. 선을 과장하려고 축을 임의로 잘라 결론을 만들지 말고, 관찰과 한계에 변화가 작다는 점을 기록합니다.
규칙 이미지의 원이 겹치거나 캔버스 밖으로 나갈 때
겹침이 의도인지 먼저 판단합니다. 의도가 아니라면 x, y, size 가운데 하나만 조정하고 원본 매개변수 CSV는 보존합니다. 좌표는 자동으로 0-1 범위를 검사하지만 큰 원의 가장자리는 육안으로 확인해야 합니다.
STEP 5 · 관찰, 한계, 15주차 행동 두 가지 작성하기
STEP 5는 오늘 수정하는 두 번째 코드 셀입니다. 먼저 화면에서 직접 가리킬 observation_evidence를 적고, 그 표현을 관찰 문장에 그대로 포함합니다. 한계에는 현재 단정할 수 없는 내용을 쓰고, 두 다음 행동에는 서로 다른 수정 대상과 동사를 넣습니다. 교수 확인 뒤 받은 피드백도 같은 셀에 기록합니다.
observation_evidence = "Archive 84"
main_observation = (
"Archive의 기록 합계는 84로 세 범주 가운데 가장 크다."
)
limitation_statement = (
"가상 기록에는 이용 인원과 공간 크기가 없어 이용률을 판단할 수 없다."
)
next_step_1 = "축 이름을 한국어로 바꾸고 기록 단위를 제목 아래에 추가한다."
next_step_2 = "세 막대의 색 대비를 확인하고 출처 영역을 별도로 배치한다."
teacher_feedback = "관찰 근거는 유지하고 기간 한계를 출처 가까이에 표시한다."
| 문장 종류 | 수정이 필요한 문장 | 사용 가능한 문장 | 차이 |
|---|---|---|---|
| 관찰 | 막대가 다르게 보인다. | Archive 합계 84는 Screening 합계 49보다 35 크다. | 화면에서 확인할 이름과 수치 포함 |
| 한계 | 데이터가 부족하다. | 관찰 기간이 없어 합계가 어느 기간의 기록인지 비교할 수 없다. | 빠진 정보와 불가능한 판단 명시 |
| 다음 행동 | 더 예쁘게 만든다. | 축 단위를 제목 아래에 추가하고 긴 레이블의 왼쪽 여백을 넓힌다. | 수정 대상과 동작이 구체적 |
관찰 문장 검사가 실패할 때
EDIT:를 지우고 20자 이상 한 줄로 씁니다. observation_evidence에 적은 수치·단어·시간·위치를 관찰 문장에 같은 철자로 포함합니다. “재미있다”, “아름답다”는 화면의 근거가 아닙니다.
한계와 오류는 같은 말인가?
오류는 코드나 데이터가 의도대로 작동하지 않는 문제입니다. 한계는 결과가 정확히 작동해도 현재 자료와 방법만으로 답할 수 없는 범위입니다. “파일이 열리지 않는다”는 오류이고 “이용자의 만족도를 알 수 없다”는 한계입니다.
다음 행동 두 문장을 다르게 썼는데 실패할 때
각 문장이 12자 이상인지, EDIT:가 남지 않았는지, 줄바꿈이 없는지 확인합니다. 두 문장은 정확히 같은 문자열이면 안 되며 서로 다른 수정 대상을 다루는 것이 좋습니다.
STEP 6 · PNG 또는 HTML을 저장하고 직접 열기
STEP 6은 학번과 이름을 안전한 파일명 조각으로 바꾸고 output_format에 따라 week14_학번_이름_preview.png 또는 week14_학번_이름_preview.html을 저장합니다. HTML은 외부 이미지 없이 열리도록 1600 × 1000 PNG와 질문·관찰·한계·출처를 한 문서에 포함하며, 화면 폭에 맞춰 이미지 크기가 줄어듭니다. 셀 출력만 보지 말고 왼쪽 파일 패널에서 결과를 직접 엽니다.
이번 HTML은 정적 증거 문서입니다
output_format = "html"은 같은 Matplotlib 미리보기 PNG를 설명과 함께 감싼 독립 문서를 만듭니다. 10주차 Folium 지도나 별도 인터랙티브 웹페이지를 자동으로 합치는 옵션은 아닙니다. 지도·복합 프로젝트는 이번 주 정적 증거 경로를 먼저 완성하고 인터랙티브 연결을 15주차 행동으로 기록합니다.
- 파일명이
week14_학번_이름_preview.png또는.html형식인지 확인합니다. - 결과가 빈 화면이 아니고 막대·선·도형 가운데 선택한 표현이 보이는지 확인합니다.
- 긴 범주·단어 레이블과 관찰·한계 문장이 잘리지 않는지 확인합니다.
- 막대 끝 숫자, 사운드 축 단위 또는 규칙 이미지의 도형 경계가 읽히는지 확인합니다.
- 다운로드한 PNG는 이미지 뷰어, HTML은 브라우저에서 네트워크 없이 열리는지 확인합니다.
파일 패널과 다운로드 폴더에서 같은 결과가 열리며, PNG 또는 HTML 안의 미리보기 크기는 정확히 1600 × 1000픽셀입니다. 글자 잘림이 있으면 저장을 반복하기 전에 Figure 여백과 문장 길이를 확인합니다.
파일명이 week14_--_preview.png처럼 보일 때
STEP 1의 학번과 이름이 실제 값인지 확인하고 STEP 1, STEP 6을 차례로 다시 실행합니다. 슬래시, 역슬래시, 물음표 같은 파일명에 사용할 수 없는 문자는 넣지 않습니다.
결과는 생겼지만 관찰 문장이 이전 내용일 때
STEP 5를 수정한 뒤 실행하지 않고 STEP 6만 실행하면 오래된 변수 값이 남을 수 있습니다. 가장 안전한 방법은 새 런타임에서 모두 실행해 최종 파일을 다시 만드는 것입니다.
결과 파일 용량이 너무 작거나 빈 화면일 때
STEP 4에서 Figure가 실제로 생성되었는지, STEP 6이 같은 figure 변수를 저장하는지 확인합니다. 셀 실행 순서가 섞였다면 새 런타임에서 모두 실행합니다.
STEP 7 · 기술 증거 점검, 교수 확인, 최종 모두 실행
teacher_gate = "pending"인 상태에서 STEP 0-6의 출력, 결과 파일, STEP 5 문장을 먼저 준비합니다.- 교수에게 아래 여섯 항목을 확인받고
teacher_feedback을 기록합니다. - 확인 지시에 따라
teacher_gate = "confirmed"로 바꿉니다. - 작업을 저장한 뒤 런타임 → 세션 다시 시작 → 모두 실행을 선택합니다.
- STEP 0부터 STEP 7까지 실행되는 동안 중간 셀을 따로 누르지 않습니다.
- 마지막 완료 문구, 선택 경로, 입력 모드, 출력 파일명을 확인하고 결과를 다시 엽니다.
교수 확인 전AUTOMATIC EVIDENCE READY · TEACHER CHECK REQUIRED
완료WEEK 14 PROJECT PROTOTYPE COMPLETE
경로TRACK · data / INPUT · provided
교수 확인질문-입력 / 권한 / 관찰-한계 / 다음 행동 / 가독성
FINAL CHECK 코드는 수정하지 않습니다. 오류 문장은 어느 조건이 충족되지 않았는지 알려 줍니다. 메시지를 읽고 해당 STEP으로 돌아간 뒤 수정하고, 마지막에는 다시 새 런타임에서 모두 실행합니다.
실행 순서 오류가 날 때
여러 셀을 따로 다시 실행하면 _run_order 목록이 기대 순서와 달라집니다. 세션을 다시 시작하고 STEP 0부터 모두 실행합니다. FINAL CHECK만 반복 실행하지 않습니다.
원본이 변경되었다는 오류가 날 때
raw_data, raw_text, raw_signal, raw_image_params를 직접 수정한 셀이 있는지 확인합니다. 정리나 변형에는 별도 작업 변수를 사용해야 합니다. 제공 자료 코드를 바꿨다면 원본 노트북 사본에서 다시 시작합니다.
화면에 매핑된 값이 처리 결과와 일치하지 않는다고 나올 때
그래프를 그릴 때 processed_values 대신 다른 변수를 사용했는지 확인합니다. 승인 재사용 경로라면 값 쌍과 함께 자신의 경로에 필요한 레이블·위치·색 증거 쌍을 모두 남겼는지, 사용하지 않는 쌍을 None으로 두었는지 확인합니다. 시각적 효과보다 처리 결과와 실제 화면 요소의 일치를 먼저 유지합니다.
미리보기 크기가 1600 × 1000이 아니라고 나올 때
STEP 4의 figsize=(8, 5)와 STEP 6의 dpi=200을 유지합니다. 두 값을 곱하면 1600 × 1000픽셀이 됩니다. HTML을 선택해도 문서 안에 포함된 PNG는 같은 크기여야 합니다.
teacher_gate가 pending이라는 오류가 날 때
정상적인 중간 상태입니다. 결과 파일과 STEP 1·5를 교수에게 보여 주고 의미 확인을 받은 뒤에만 confirmed로 바꿉니다. 자동 검사만 통과하려고 임의로 바꾸면 귀가 조건이 충족되지 않습니다.
교수 증거 확인 · 완성 순서대로 30-45초
긴 발표를 다시 하지 않습니다. 열린 PNG 또는 HTML과 STEP 1·5를 같은 화면에 준비하고, 아래 여섯 항목의 위치만 순서대로 가리킵니다. 교수는 확인 또는 한 항목 수정만 기록합니다. 30명 기준 15-22.5분이므로 결과가 준비된 12분 이후부터 제작과 병행합니다.
- 질문-입력: 현재 입력으로 질문에 답할 수 있는가?
- 이용 권한: 출처와 분석·변형·제출 근거가 확인되는가?
- 범위: 승인된 핵심 경로가 작동하고 확장 기능이 분리되었는가?
- 관찰·한계: 관찰 근거를 화면에서 가리킬 수 있고, 한계가 현재 자료의 범위를 정확히 제한하는가?
- 다음 행동: 15주차 수정 두 가지의 대상과 동작이 서로 다르고 실행 가능한가?
- 가독성: 화면의 막대·선·도형, 축·단위, 관찰과 한계가 실제로 읽히는가?
교수 확인에서 수정이 필요한 경우
프로젝트 전체를 다시 만들지 않습니다. “질문을 현재 입력으로 답할 수 있게 좁히기”, “외부 입력을 제공 자료로 바꾸기”, “근거 없는 관찰을 화면 수치로 교체하기”, “다음 행동의 수정 대상을 구체화하기”, “축 단위 추가”처럼 표시된 한 항목만 수정합니다. 피드백을 STEP 5에 기록하고 다시 30-45초 확인을 받은 뒤 teacher_gate를 변경해 새 런타임 모두 실행을 진행합니다.
제출 · 필수 파일 확인 후 즉시 귀가
필수 1 · 실행 결과가 남은 노트북week14_학번_이름_prototype.ipynb
필수 2 · 열리는 미리보기week14_학번_이름_preview.png 또는 week14_학번_이름_preview.html
조건부 3 · 자신의 입력을 사용한 경우week14_학번_이름_source.확장자
input_mode = "provided"이면 입력이 노트북 안에 있으므로 두 파일만 제출합니다. own이면 STEP 2가 실제로 읽은 week14_학번_이름_source.확장자 파일을 이름을 바꾸지 않고 그대로 함께 제출합니다. 노트북을 내려받기 전에 마지막 완료 출력과 그래프가 저장되어 있는지 확인합니다.
최종 귀가 확인
교수의 질문·권한·관찰·한계·행동·가독성 확인, 최종 자동 검사 PASS, PNG 또는 HTML 직접 열림, 필수 파일 제출이 모두 완료되면 즉시 귀가합니다. 선택 확장을 하지 않아도 불이익이 없고, 남은 시간은 평가에 반영하지 않습니다.
선택 확장 · 같은 입력의 두 번째 표현을 비교하기
필수 결과를 별도 파일로 보존하고 제출까지 마친 학생만 진행합니다. 같은 입력과 처리 결과를 다른 그래프나 시각 규칙으로 표현하되, 새 표현이 기존 결과에서 보이지 않던 무엇을 보여 주는지 비교합니다.
- 필수 PNG 또는 HTML을 덮어쓰지 않고 노트북 사본과 새 출력 파일을 만듭니다.
- 질문과 입력, 처리 값은 그대로 유지합니다.
- 막대 정렬, 점 표현, 색상 또는 두 번째 Axes 가운데 한 가지 표현만 바꿉니다.
- 두 결과의 장점과 놓치는 정보를 각각 한 문장으로 적습니다.
- 어느 표현을 15주차에 유지할지 근거 한 문장으로 결정합니다.
단순히 색을 바꾸거나 새 라이브러리를 설치한 것은 확장 완료로 보지 않습니다. 두 번째 표현이 새로운 비교를 가능하게 해야 합니다. 선택 확장은 귀가 조건과 추가 점수에 포함하지 않습니다.
15주차 연결 · 30%에서 70%로
15주차에는 오늘 승인된 질문과 핵심 경로를 유지하고 STEP 5에 기록한 두 수정 행동부터 실행합니다. 입력 전체에서 예외가 없는지 확인하고, 오류 안내, 축·단위·출처, 색상 대비, 정보 위계와 레이아웃을 보완해 70% 프로토타입으로 발전시킵니다.
주제를 다시 고르거나 기능을 무작정 늘리지 않습니다. 자료 이용 문제가 새로 드러나거나 핵심 구현이 불가능하다는 증거가 생긴 경우에만 변경 이유와 대체 범위를 교수와 다시 합의합니다. 오늘 제출한 노트북과 PNG 또는 HTML은 15주차 수정 전 상태를 비교하는 기준점으로 보존합니다.
실습 참고 자료
- Google Colab노트북 업로드, Drive 사본 저장, 런타임 다시 시작과 모두 실행에 사용하는 실습 환경
- Python 공식 문서 :
assert최종 검사에서 조건과 오류 메시지가 작동하는 원리 - pandas 공식 문서 :
DataFrame.groupby데이터 경로에서 같은 범주의 값을 묶어 합산하는 기준 - Matplotlib 공식 문서 :
savefig8 × 5인치 Figure를 200DPI의 1600 × 1000 PNG로 저장하는 방법