---
name: lab-scaffolding
description: "실습설계자(lab-designer)가 사용하는 실습 스캐폴딩 전문 스킬. 실습 난이도 조절, 스타터 코드 설계, 캡스톤 프로젝트 구조, 자기 주도 학습 유도 전략을 제공한다. '실습 설계', '프로젝트 과제', '스캐폴딩', '핸즈온 랩' 등에 활용한다."
---

# Lab Scaffolding — 실습 스캐폴딩 방법론

lab-designer 에이전트가 실습과제와 프로젝트를 설계할 때 활용하는 전문 지식.

## 왜 스캐폴딩인가

학습자에게 "프로그램을 만들어보세요"라고 던지면 90%가 포기한다. **스캐폴딩(비계)**이란 학습자가 혼자 할 수 없는 것을 점진적으로 도와주다가, 능력이 쌓이면 지원을 줄여가는 전략이다.

## 실습 유형 5단계 피라미드

```
          ╱╲
         ╱ 5 ╲  ← 캡스톤 프로젝트 (자유)
        ╱─────╲
       ╱   4    ╲  ← 미니 프로젝트 (가이드 최소)
      ╱───────────╲
     ╱      3       ╲  ← 챌린지 (힌트 제공)
    ╱─────────────────╲
   ╱        2          ╲  ← 가이드 실습 (단계별 안내)
  ╱─────────────────────╲
 ╱          1            ╲  ← 따라하기 (코드 워크스루)
╱───────────────────────────╲
```

### 단계별 설계

| 단계 | 학습자 자율성 | 지원 수준 | 실습 형태 |
|------|------------|---------|----------|
| **1. 따라하기** | 0% | 100% 가이드 | 강사 코드를 그대로 따라 입력 |
| **2. 가이드 실습** | 20% | 80% 가이드 | 스타터 코드 + 빈칸 채우기 |
| **3. 챌린지** | 50% | 힌트만 제공 | 요구사항 → 힌트 → 검증 |
| **4. 미니 프로젝트** | 80% | 명세서만 | 기능 요구사항 → 자유 구현 |
| **5. 캡스톤** | 95% | 멘토링만 | 주제 선택 → 설계 → 구현 → 발표 |

## 스타터 코드 설계

### 스타터 코드 원칙

1. **실행 가능 상태**: 스타터 코드는 그 자체로 에러 없이 실행되어야 한다
2. **TODO 마커**: 학습자가 작성할 부분을 명확히 표시
3. **보일러플레이트 제거**: 학습 목표와 무관한 코드는 미리 작성
4. **점진적 공개**: 초반에는 많은 코드 제공 → 후반에는 빈 파일만

### 스타터 코드 템플릿

```python
"""
실습: [실습 제목]
학습 목표: [이 실습에서 연습할 기술]
예상 소요 시간: XX분
난이도: [1~5]
"""

# === 이미 작성된 코드 (수정하지 마세요) ===
import flask
app = flask.Flask(__name__)

# === TODO 1: [구체적 지시] ===
# 힌트: [관련 개념이나 사용할 메서드]
# 예상 코드 라인 수: X줄


# === TODO 2: [구체적 지시] ===
# 힌트: [관련 개념이나 사용할 메서드]


# === 테스트 ===
# 아래 코드가 에러 없이 실행되면 성공입니다
if __name__ == "__main__":
    # 자동 검증 코드
    pass
```

## 캡스톤 프로젝트 설계

### 캡스톤 구조 템플릿

```
## 캡스톤 프로젝트: [제목]

### 개요
[프로젝트의 목적과 최종 산출물 설명]

### 학습목표 매핑
이 프로젝트는 다음 학습목표를 통합적으로 평가합니다:
- [LO1]: [학습목표]
- [LO2]: [학습목표]
- ...

### 기능 요구사항
#### 필수 기능 (Must Have)
1. [기능 1]
2. [기능 2]
3. [기능 3]

#### 선택 기능 (Nice to Have) — 보너스 점수
1. [추가 기능 1]
2. [추가 기능 2]

### 마일스톤
| 주차 | 산출물 | 체크포인트 |
|------|--------|----------|
| 1주차 | 설계 문서 + 와이어프레임 | 멘토 리뷰 |
| 2주차 | 핵심 기능 프로토타입 | 동작 데모 |
| 3주차 | 전체 기능 구현 | 코드 리뷰 |
| 4주차 | 테스트 + 문서화 + 발표 | 최종 제출 |

### 평가 루브릭
[assessment-engineering 스킬의 루브릭 참조]

### 참고 리소스
- [관련 강의 레슨 링크]
- [공식 문서 링크]
- [예제 프로젝트 (참고만, 복사 금지)]
```

### 캡스톤 주제 설계 규칙

1. **실생활 문제**: 학습자가 실제로 쓸 수 있는 것을 만들게 한다
2. **적정 규모**: 2~4주에 완성 가능한 크기
3. **학습목표 통합**: 과정에서 배운 모든 핵심 기술을 사용해야 한다
4. **확장 가능**: 필수 기능은 쉽고, 보너스 기능으로 난이도 조절
5. **포트폴리오 가치**: 완성물이 학습자의 이력서에 올릴 수 있는 수준

## 난이도 조절 테크닉

### 동적 난이도 조절

| 상황 | 전략 |
|------|------|
| 학습자가 막힘 | 힌트 1(방향) → 힌트 2(구체적) → 힌트 3(코드 일부) → 정답 |
| 학습자가 너무 쉬움 | 추가 제약 조건 부여, 최적화 도전 |
| 학습자 수준 차이 큼 | 필수/선택 과제 분리, 상급자에게 멘토 역할 |

### 힌트 시스템 설계

```
[힌트 없이 시도] → 5분 후
[힌트 1: 방향성] "이 문제는 ~개념을 사용합니다" → 5분 후
[힌트 2: 접근법] "~메서드를 찾아보세요" → 5분 후
[힌트 3: 코드 스켈레톤] "구조는 이렇습니다: ..." → 5분 후
[정답 코드 + 해설]
```

## 실습 환경 권장사항

| 과정 유형 | 권장 환경 | 이유 |
|----------|---------|------|
| 프로그래밍 입문 | 브라우저 IDE (Replit, Google Colab) | 설치 없이 즉시 시작 |
| 웹 개발 | GitHub Codespaces / Gitpod | 일관된 환경 보장 |
| 데이터 분석 | Google Colab / Kaggle Notebooks | GPU 접근, 데이터셋 제공 |
| 시스템/인프라 | Docker + 스크립트 | 재현 가능한 환경 |
