본문으로 건너뛰기
개발 도구의 역할과 첫 실습

생성 수정

IBM * 레드햇 AX 과정 · 2강

개발 도구의 역할과 첫 실습

2026년 4월 28일(화) ~ 5월 1일(금)

이 강의 문제풀이 — 배운 내용을 주관식 문답으로 확인해보세요.풀어보기 →

7. 첫날 설치한 네 도구 — 각각 다른 범주

7.1 무작위로 고른 네 개가 아닙니다

개강 첫날 설치 목록은 Cursor · 옵시디언 · Git · GitHub였습니다. 역할이 하나도 겹치지 않는 네 개입니다. 각각 다른 범주에 속합니다.

도구속하는 범주이 범주의 정의같은 범주의 다른 것
Cursor에디터 (Editor)코드를 쓰고 고치는 곳VS Code, Zed, IntelliJ
옵시디언 (Obsidian)노트 앱 (Knowledge Base)생각을 .md 로 쌓아두는 곳Notion, Logseq
Git버전 관리 도구 (VCS)변경 이력을 기록하는 프로그램(사실상 없음)
GitHub원격 저장소 (Remote Repository)그 기록을 올려두는 서비스GitLab, Bitbucket

설치 링크:

7.2 핵심 경계 — 실행되는가, 읽히는가

Cursor와 옵시디언은 둘 다 글자를 편집합니다. 그래서 "같은 종류 아닌가" 싶습니다. 아닙니다. 다루는 대상이 다릅니다.

Cursor옵시디언
다루는 것실행될 것 (코드)읽힐 것 (문서)
파일.py, .js, .json.md
결과프로그램이 동작함사람이 이해함
축 5 위치Body 쪽 (구상·실행)Soul 쪽 (추상·의미)

⭐ "실행되는가 / 읽히는가" 가 이 둘을 가르는 축입니다.

7.3 CLAUDE.md 가 왜 .md 인가

개강 첫날 워크숍 영상에서 CLAUDE.md 라는 파일 이야기가 나왔습니다. AI에게 프로젝트의 규칙을 알려주는 파일입니다. "이 프로젝트는 이런 규칙으로 작업해라" 를 적어둡니다.

왜 .py 가 아니라 .md 인가 — 방금 그은 경계가 그대로 답입니다. 그건 AI가 읽을 문서이지 실행할 코드가 아니기 때문입니다.

마크다운을 쓰는 이유는 셋입니다.

이유설명
사람도 읽힘태그 없이 평문에 가까워 그냥 읽어도 이해됨
구조가 있음# 제목, - 목록, 표로 계층을 표현할 수 있음
버전 관리가 됨순수 텍스트라 Git이 어느 줄이 바뀌었는지 정확히 보여줌

⭐ 세 번째가 결정적입니다. .docx 나 .pdf 로 규칙을 적으면 Git이 "파일이 바뀌었다"까지만 알려줍니다. .md 는 어느 문장이 어떻게 바뀌었는지 보여줍니다. 규칙 문서야말로 이력이 중요합니다.

앞으로 다시 만납니다 마크다운(Markdown)과 마크업(Markup)의 차이 — 누구를 위한 이름표인가 — 는 3주차 에서 제대로 다룹니다. 그리고 AI에게 규칙 파일을 주는 이 방식은 나중에 하네스(Harness) 엔지니어링이라는 이름으로 다시 나옵니다. 요지는 에이전트 = 모델 + 하네스. LLM을 날것으로 쓰지 말고, 규칙 문서(가이드)와 검증 장치(센서)로 감싸라는 것입니다.

7.4 에디터 · IDE · 터미널

같이 헷갈리는 세 단어를 정리해 둡니다.

에디터 (Editor)IDE터미널 (Terminal)
무엇글자를 편집하는 프로그램편집 + 실행 + 디버깅 + 빌드를 통합글자 명령으로 컴퓨터를 다루는 창
영문—Integrated Development EnvironmentCLI (Command Line Interface)
예메모장, VimIntelliJ, Visual StudioPowerShell, bash
Cursor는✅ 에디터이면서✅ 확장 기능으로 IDE 역할도 함✅ 안에 터미널이 내장돼 있음

Cursor 안에서 터미널을 열면, 에디터와 터미널이 같은 폴더를 보고 있게 됩니다. 이게 중요한 이유는 뒤에서 나옵니다 — 명령은 현재 폴더 기준으로 동작하기 때문입니다.

터미널 생존 명령어 8개만 먼저 익혀둡니다.

명령뜻
pwd지금 어느 폴더에 있는지
ls (윈도우: dir)파일 목록
cd 폴더명폴더 이동
mkdir 새폴더폴더 생성
touch 파일 (윈도우: New-Item)파일 생성
rm 파일 (폴더는 rm -r)삭제 ⚠️
python 파일.py파이썬 파일 실행
git statusGit 상태 확인

💡 Tab 키 = 자동완성 / --help = 도움말 / ⚠️ rm -r 은 되돌릴 수 없습니다.


8. 실습 — 이번 주에 손으로 한 것

이 절은 순서대로 따라 하면 재현되도록 썼습니다. 막히는 지점에는 ⚠️ 로 표시해 두었습니다.

8.1 Cursor 설치

  1. 공식 홈페이지 접속 — 🔗 https://cursor.com/
  2. Download 클릭 (윈도우는 .exe, 맥은 .dmg)
  3. 받은 파일 실행
  4. 설치 완료

설치 후 두 가지 설정

하는 일방법
폴더에서 Cursor를 터미널로 열기작업 폴더 안에서 Cursor를 열면, 내장 터미널이 그 폴더를 기준으로 열림
파일 아이콘 테마 적용설정창의 해당 항목에 material 을 복사해 붙여넣고 화살표 아이콘 클릭

💡 아이콘 테마는 취향 문제로 보이지만, 파일 종류가 한눈에 구분되면 폴더 구조를 읽는 속도가 달라집니다. 앞으로 폴더가 수십 개로 늘어납니다.

8.2 크롬을 실습 환경으로 맞추기

브라우저를 그냥 쓰는 것과 작업 환경으로 세팅하는 것은 다릅니다.

  1. 크롬 설치 — 🔗 https://www.google.com/chrome/
  2. 북마크 바 표시: Ctrl + Shift + B
  3. AI 서비스(Claude / Gemini / ChatGPT)를 각각 열고 주소창의 별표(☆) 를 눌러 북마크
  4. 북마크할 때 이름을 지워서 아이콘만 남기기
  5. 북마크 바 빈 곳에서 우클릭 → [앱 단축키 표시]
  6. 드래그로 순서 변경

이름을 지우는 이유: 북마크 바의 가로 폭은 한정돼 있습니다. 이름을 지우면 아이콘만 남아 훨씬 많은 항목이 한 줄에 들어갑니다. 그리고 매일 쓰는 도구는 어차피 아이콘만으로 구분됩니다.

⭐ 세 개의 AI를 나란히 놓는 이유는 비교하며 쓰기 위해서입니다. 같은 질문을 셋에 던져보면 각 모델의 성격이 금방 드러납니다. 1.7절의 "직접 써봤는가"가 이것입니다.

8.3 Git 설치와 GitHub 가입

순서하는 일링크
1Git 설치 (설치 옵션은 기본값 그대로)🔗 https://git-scm.com/downloads
2GitHub 가입🔗 https://github.com
3설치 확인터미널에서 git --version

⚠️ 설치 직후 터미널에서 git 이 안 먹으면 열려 있던 터미널을 껐다 켭니다. 5.5절에서 본 것과 똑같은 원리입니다. 설치 프로그램이 PATH 를 고쳤지만, 이미 떠 있는 터미널은 모릅니다.

8.4 아나콘다 설치

가장 많이 막히는 단계입니다. 특히 경로와 환경변수입니다.

설치

  1. 🔗 anaconda.com/download 접속 → 설치 파일 다운로드
  2. Select Installation Type 에서 Just Me (recommended) 선택 → Next >
  3. Choose Install Location 의 Destination Folder를 C:\ProgramData\Anaconda3 로 지정

⚠️ 가장 흔한 함정: 설치 경로가 랜덤으로 다르게 잡히는 경우가 아주 많습니다. 화면에 뜬 경로를 반드시 눈으로 확인하고, 다르면 그 경로를 기억해 두세요. 아래 환경변수를 그 경로 기준으로 넣어야 합니다. 이 한 가지가 대부분의 conda 에러의 원인입니다.

설치 확인 — 해당 폴더에 아래 폴더들이 생겼는지 봅니다.

condabin  conda-meta  DLLs  envs  etc  include
Lib  Library  libs  Menu  pkgs  Scripts

환경변수 설정 — 시스템 변수(S) 에 4개를 새로 만듭니다.

변수 이름값
ANACONDA_HOME1C:\ProgramData\Anaconda3
ANACONDA_HOME2C:\ProgramData\Anaconda3\Scripts
ANACONDA_HOME3C:\ProgramData\Anaconda3\Library\bin
ANACONDA_HOME4C:\ProgramData\Anaconda3\Library\mingw-w64\bin

이어서 Path 를 선택 → 편집(I)... → 아래 4줄을 추가하고 확인.

%ANACONDA_HOME1%
%ANACONDA_HOME2%
%ANACONDA_HOME3%
%ANACONDA_HOME4%

💡 왜 변수를 4개 만들고 다시 Path에 넣는가 경로를 Path 에 직접 4줄 박아 넣어도 동작은 합니다. 하지만 나중에 아나콘다를 다른 곳으로 옮기면 4줄을 전부 고쳐야 합니다. 변수로 한 번 감싸두면 ANACONDA_HOME1 하나만 고치면 나머지가 따라옵니다. 이게 프로그래밍에서 말하는 한 곳에서만 정의하기의 첫 사례입니다.

PATH 가 하는 일 터미널에 conda 라고 치면, 컴퓨터는 PATH 에 적힌 폴더들을 위에서부터 차례로 뒤져서 conda 라는 실행 파일을 찾습니다. 어디에도 없으면 command not found 입니다. 즉 PATH 는 "명령어를 어느 폴더에서 찾을지 적어둔 목록" 입니다.

검증 — 터미널을 새로 열고 세 가지를 확인합니다.

conda --version
# → conda 24.1.2

conda env list
# → base    C:\ProgramData\Anaconda3

python --version
# → Python 3.11.7

⚠️ conda env list 결과에 base 만 있는 것이 정상입니다. 아직 가상환경을 안 만들었기 때문입니다.

8.5 가상환경 만들기

conda create -n venv python=3.13 -y
conda init

여기서 Cursor를 완전히 종료했다가 다시 실행합니다. (창만 닫는 게 아니라 프로그램 종료)

conda activate venv

성공 신호: 프롬프트 앞이 (base) 에서 (venv) 로 바뀝니다.

(base) C:\project>   →   (venv) C:\project>

⚠️ 에러가 나면 그 자리에서 바로 물어보세요. 환경 문제는 뒤로 미룰수록 원인이 겹쳐서 찾기 어려워집니다.

증상대부분의 원인
conda: command not found / 'conda'은(는) 인식되지 않습니다PATH 환경변수 등록 누락 (8.4)
conda activate 가 반응 없음conda init 후 에디터를 재시작하지 않음
환경은 만들어졌는데 프롬프트가 안 바뀜위와 같음
설치했는데 폴더가 안 보임설치 경로가 다른 곳으로 잡힘

8.6 판다스가 이 환경에서 동작하는지 확인

가상환경을 만들었으면 거기서 실제로 라이브러리가 import 되는지 확인해야 합니다. 이 확인을 건너뛰면, 나중에 코드가 안 돌 때 코드 문제인지 환경 문제인지 구분이 안 됩니다.

준비

  1. 프로젝트 안 apps 폴더에 titanic_starter.py 를 만듭니다.
  2. 같은 폴더에 Titanic-Dataset.csv 를 둡니다.

코드

from pathlib import Path
import pandas as pd

csv_path = Path(__file__).parent / "Titanic-Dataset.csv"
df = pd.read_csv(csv_path)
print(df.head())
print(df.shape)
줄하는 일
from pathlib import Path경로를 다루는 표준 도구를 불러옴
import pandas as pd판다스를 pd 라는 이름으로 불러옴
Path(__file__).parent이 파이썬 파일이 있는 폴더
/ "Titanic-Dataset.csv"그 폴더 안의 CSV 파일 경로
pd.read_csv(...)CSV를 읽어 DataFrame(2차원 표)으로 만듦
df.head()앞에서 5행만 보기
df.shape(행 수, 열 수)

⭐ Path(__file__).parent 를 쓰는 이유가 중요합니다. 그냥 "Titanic-Dataset.csv" 라고만 쓰면, 파일을 어느 폴더에서 실행했느냐에 따라 찾기도 하고 못 찾기도 합니다. __file__ 기준으로 쓰면 어디서 실행하든 같은 파일을 가리킵니다. ("실행하는 위치 기준"과 "파일이 있는 위치 기준"의 차이 — 이건 나중에 .env 파일에서 다시 문제가 됩니다.)

실행 — (venv) 가 붙은 터미널에서:

python apps\titanic_starter.py

정상 출력

   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
...
[5 rows x 12 columns]
(891, 12)

출력 읽는 법

보이는 것뜻
PassengerId Survived Pclass ... Fare Cabin Embarked열 이름들
...데이터가 길어서 가운데 열을 생략한 것 (에러 아님)
[5 rows x 12 columns]head() 가 보여준 5행 × 전체 12열
(891, 12)전체가 891행 12열

검증 — CSV를 에디터로 열어 첫 데이터 행을 봅니다.

1 / 0 / 3 / Braund, Mr. Owen Harris / male / 22 ...

터미널 출력의 첫 줄(0 1 0 3 ...)과 일치하면 성공입니다. PassengerId=1, Survived=0, Pclass=3 이 그대로 보입니다.

⭐ 이 확인이 뜻하는 것: 파이썬이 설치됐고, 가상환경이 활성화됐고, 그 환경에 판다스가 있고, 파일 경로가 맞다 — 네 가지가 한 번에 검증된 것입니다.

8.7 깃허브에 코드 올리기

저장소 만들기

  1. github.com/[내아이디] 접속 → Repositories 탭 → 초록색 New 버튼
  2. 입력값:
항목값
Repository nameexample-cloud (is available. 표시 확인)
VisibilityPublic
TemplateNo template
Add READMEOff
.gitignore없음
License없음
  1. Create repository 클릭

⚠️ README·gitignore·license를 전부 끄는 이유: 이것들을 켜면 GitHub가 원격에 커밋을 하나 먼저 만듭니다. 그러면 아직 커밋이 없는 내 로컬과 이력이 어긋나서, 첫 push 가 거부됩니다. 빈 저장소로 만들어야 아래 6줄이 그대로 통합니다.

올리기

저장소를 만들면 나오는 …or create a new repository on the command line 코드 블록을 복사한 뒤, README.md 부분을 지우고 . 으로 바꿔 실행합니다.

git init
git add .
git commit -m "첫번째 커밋"
git branch -M main
git remote add origin https://github.com/[내아이디]/example-cloud.git
git push -u origin main

성공 신호

* [new branch]      main -> main
branch 'main' set up to track 'origin/main'
  • 첫 줄: 원격에 main 이라는 가지가 새로 생겼다
  • 둘째 줄: 앞으로 로컬 main 은 원격 origin/main 을 따라간다 (이게 -u 의 효과)

에러가 나면 — 대부분 신원 정보가 없어서입니다.

git config --global user.name "사용자이름"
git config --global user.email "이메일주소"

설정한 뒤 git commit 부터 다시 실행합니다.

8.8 도메인 구입

배포는 아직 멀었지만, 내 이름의 주소를 하나 확보합니다. (4.6절의 이유)

  1. 도메인 등록 서비스(가비아)의 도메인 검색창(www. 뒤 입력란)에 원하는 이름을 입력하고 검색
  2. 검색 결과에서 원하는 도메인(예: example.cloud) 행의 선택 클릭 → 우측 "도메인 장바구니"에 담김 → 하단 신청하기
  3. 1 신청 정보 입력 단계

    ⚠️ "도메인 1" 카드의 기간 드롭다운이 기본 3년 입니다. 반드시 1년 으로 바꾸세요. 이걸 놓치면 3년치가 결제됩니다. 가장 많이 놓치는 지점입니다.

  4. ⑤ 결제 금액 계산 확인 — 프로모션 도메인의 경우 예를 들면 이런 구성입니다.
항목금액
도메인 1 (정가)50,000원
할인−47,500원
부가세250원
결제 예상 금액2,750원

확인 후 다음 단계 5. (선택) "새로운 기기에서 로그인 되었습니다" 확인 메일이 오면 예, 맞습니다. 클릭. 메일이 없으면 그대로 진행 6. 소유자 정보 인증

  • 이메일 에 회원가입 시 쓴 주소 입력 → 인증 메일 발송
  • 메일함에서 [가비아] 인증번호를 안내해 드립니다. 를 열어 인증번호 확인
  • 입력란에 넣고 확인 (⚠️ 제한시간 약 3분)
  • 소유자명(영문) 은 Hong.Gil-dong 형식 (성.이름)
  1. 2 서비스 비용 결제 → 완료 화면에 결제가 성공적으로 완료되었습니다. 표시

💡 첫 해 프로모션 가격과 갱신 가격은 다릅니다. 1년 뒤에는 정가로 갱신됩니다. 그래서 기간을 1년으로 줄여 두고, 실제로 쓸지 1년 뒤에 다시 판단하는 편이 낫습니다.

8.9 막힐 때 — 에러를 전달하는 법

이번 주부터 계속 쓰게 될 기술입니다. 명령어를 외우는 것보다 상황을 설명하는 능력이 중요합니다.

❌ 이렇게 말하면✅ 이렇게 말하면
예"안 돼요" / "오류남""가상환경 만들고 conda activate venv 를 실행했는데 아무 반응이 없어요"

전달할 4요소

#요소예
1상황아나콘다 설치 후 가상환경을 만드는 중
2실행한 명령conda activate venv
3오류 메시지 원문CommandNotFoundError: Your shell has not been properly configured...
4원하는 결과프롬프트가 (venv) 로 바뀌는 것

⭐ 3번은 요약하지 말고 그대로 복사해서 붙여넣으세요. 에러 메시지의 정확한 문구가 원인을 특정하는 가장 강한 단서입니다. "에러가 났다"는 정보가 거의 없지만, CommandNotFoundError 라는 단어 하나면 원인이 좁혀집니다.


9. 이 주의 읽을거리와 그 맥락

이 주에 함께 본 자료들입니다. 각각 왜 개강 주에 나왔는지가 중요합니다.

9.1 Claude Code 창시자 Boris의 30분 워크숍

한국어 자막이 있는 30분짜리 워크숍 영상입니다. 다룬 내용은 넷입니다.

주제요지
코드베이스 Q&A새 프로젝트에 투입됐을 때, 코드를 읽는 대신 AI에게 물어서 온보딩 시간을 단축
CLAUDE.md 계층 설계프로젝트 규칙을 문서로 적어두되, 폴더 계층마다 다른 규칙을 둘 수 있음
claude -p (SDK)AI 호출을 Unix 유틸리티처럼 파이프에 끼워 쓰기
SSH + tmux 병렬 세션원격 서버에서 여러 세션을 동시에 띄워 병렬로 작업

왜 개강 첫날에 이게 나왔는가 — 이 수업이 무엇을 목표로 하는지를 첫날 보여주기 위해서입니다. 목표는 "AI에게 코드를 받아 쓰는 것"이 아니라 "AI를 도구로 쓰는 개발 환경 자체를 구성하는 것" 입니다.

네 주제 중 뒤의 둘(claude -p, SSH+tmux)은 지금 당장은 이해되지 않아도 됩니다. 다만 "AI는 채팅창 안에만 있는 게 아니다" 는 감각만 가져가면 됩니다.

이 영상에 나온 CLAUDE.md 방식은 나중에 하네스 엔지니어링이라는 이름으로 이 수업의 큰 줄기가 됩니다.

9.2 IBM의 AI 정의 정리

AI / 머신러닝 / 딥러닝 / 생성형 AI / AI 에이전트, 약한 AI vs 강한 AI, 그리고 윤리·거버넌스까지 이어지는 개념 계층 자료입니다.

왜 이 자료인가: 1장 전체가 이 자료의 구조를 따라갑니다. 중요한 것은 개별 정의가 아니라 정의들이 계층으로 배열되어 있다는 사실 자체입니다. IBM 같은 회사가 개념 계층 문서를 공들여 만드는 이유는, 경계가 흐려지면 계약과 규제가 성립하지 않기 때문입니다. "우리 제품은 AI입니다"와 "우리 제품은 생성형 AI입니다"는 법적으로 다른 문장이 되어 가고 있습니다.

9.3 Red Hat AI

🔗 https://www.redhat.com/ko/products/ai

오픈소스 기반의 AI 솔루션 플랫폼입니다.

왜 이 주에 나왔는가: 1.6절의 "API로 부르기 ↔ 로컬에서 돌리기" 축의 기업판입니다. 기업이 자기 데이터를 외부 AI 서비스에 보내지 않고 자기 인프라 안에서 AI를 돌리려 할 때 쓰는 종류의 제품입니다. 축 2(로컬 ↔ 원격)가 개인의 편의 문제가 아니라 기업의 보안·규제 문제가 되는 지점입니다.

9.4 「바퀴를 재발명하지 않기」

🔗 https://blex.me/@baealex/바퀴를-재발명하지-않기

왜 이 주에 나왔는가: 6.4절에서 다뤘습니다. 같은 날 import pandas 를 처음 실행했기 때문입니다. import 한 줄을 치는 순간이 "남이 만든 것을 내 것에 들여놓는" 첫 경험입니다. 그 순간에 이 글이 배치된 것입니다.

9.5 EBS 《위대한 수업》 AI 시즌

제프리 힌튼, 얀 르쿤, 스튜어트 러셀 등의 라인업을 소개하는 쇼츠 영상입니다.

왜 이 주에 나왔는가: 개강 주는 동기를 만드는 주이기도 합니다. 그리고 이 세 사람의 이름은 1장의 계층과 직접 이어집니다. 힌튼과 르쿤은 딥러닝을 지금의 모습으로 만든 사람들이고, 러셀은 AI 안전·거버넌스를 대표하는 사람입니다. IBM 자료의 마지막 계층(윤리·거버넌스)이 왜 계층의 일부인지가 여기서 설명됩니다.

9.6 네이버 국가대표 AI 탈락 — 표절 논란

국가대표 AI 사업에서 한 기업이 탈락했고, 핵심 장치에 외부(중국산) 기술을 사용한 것이 드러나 표절 논란이 일었다는 보도입니다.

왜 이 주에 나왔는가 — 뉴스 자체가 아니라 질문 때문입니다.

"무엇을 가져다 쓰고, 무엇을 직접 만드는가?"

같은 주에 배운 "라이브러리를 import 해라(바퀴를 재발명하지 마라)"와 정면으로 부딪히는 사례입니다. 그래서 이 뉴스가 6.5절의 경계표를 만드는 계기가 됩니다.

⭐ 개강 첫 주에 이 질문을 받아두는 것이 중요합니다. 앞으로 라이브러리를 수십 개 설치하게 됩니다. 그때마다 "이건 가져다 쓰는 쪽인가, 직접 만드는 쪽인가"를 자동으로 묻게 되면, 4개월 뒤 클린 아키텍처를 배울 때 그 원 그림이 이미 머릿속에 있게 됩니다.


부록 A. 용어 사전

용어영문상위 범주정의
인공지능Artificial Intelligence (AI)—사람의 지적 작업을 기계가 수행하게 하는 것 전부
머신러닝Machine Learning (ML)AI규칙을 사람이 적지 않고 데이터에서 스스로 찾아내는 AI
딥러닝Deep Learning (DL)머신러닝신경망을 여러 층 쌓아 특징까지 스스로 찾는 머신러닝
생성형 AIGenerative AI딥러닝라벨이 아니라 새 콘텐츠를 만들어내는 딥러닝
AI 에이전트AI Agent시스템 형태목표를 위해 스스로 계획하고 도구를 쓰는 시스템
에이전트 루프Agent Loop동작 방식생각 → 계획 → 실행 → 확인 → 수정의 반복
챗봇Chatbot시스템 형태대화와 응답만 하는 시스템 (도구를 쓰지 않음)
약한 AINarrow AIAI의 성질정해진 한 가지 일만 하는 AI (현존하는 전부)
강한 AIGeneral AI (AGI)AI의 성질사람처럼 아무 일이나 하는 AI (아직 없음)
특징FeatureML 개념판단의 근거가 되는 입력 속성 (나이·성별 등)
라벨LabelML 개념맞혀야 하는 정답 값
지도학습Supervised LearningML 분류정답이 주어진 데이터로 학습하는 방식
분류Classification지도학습 문제답이 끊어진 범주인 문제
회귀Regression지도학습 문제답이 이어진 숫자인 문제
이진 분류Binary Classification분류 문제답이 정확히 두 개인 분류 문제
다중 분류Multi-class Classification분류 문제답이 셋 이상인 분류 문제
One-vs-RestOvR기법다중 분류를 이진 분류 여러 개로 분해하는 방법
토큰TokenAI 개념AI가 글을 읽고 쓰기 위해 나눈 글자 조각
컨텍스트 윈도Context WindowAI 개념AI가 한 번에 펼쳐놓고 볼 수 있는 작업 공간의 크기
RAGRetrieval-Augmented Generation기법필요한 부분만 검색해서 컨텍스트에 넣는 방식
벤치마크Benchmark평가모델 성능을 재는 표준 시험
가상환경Virtual Environment격리 기법프로젝트마다 독립된 파이썬 패키지 집합을 갖게 하는 장치
컨테이너Container격리 기법앱 + OS 라이브러리까지 격리하는 방식 (Docker)
가상 머신Virtual Machine (VM)격리 기법OS 전체를 통째로 격리하는 방식
의존성 지옥Dependency Hell문제 상황프로젝트 간 라이브러리 버전이 충돌해 해결이 불가능해지는 상태
아나콘다Anaconda파이썬 배포판파이썬 + 데이터 도구 + conda 를 묶어 배포하는 것
condaconda관리 도구아나콘다의 환경·패키지 관리자
base 환경baseconda 환경아나콘다 설치 시 만들어지는 전역 기본 환경
패키지Package코드 단위가져다 쓰는 코드 부품
의존성Dependency관계내 프로젝트가 꼭 기대고 있는 부품
환경변수Environment VariableOS 설정프로그램이 참조하는 시스템 수준의 설정값
PATHPATH환경변수명령어를 어느 폴더에서 찾을지 적어둔 목록
셸Shell프로그램명령을 받아 OS에 전달하는 프로그램 (PowerShell, bash)
터미널Terminal인터페이스글자 명령으로 컴퓨터를 다루는 창
CLICommand Line Interface인터페이스글자 명령 방식의 인터페이스
에디터Editor프로그램글자를 편집하는 프로그램
IDEIntegrated Development Environment프로그램편집·실행·디버깅·빌드를 통합한 개발 환경
라이브러리Library코드 묶음내가 호출해서 쓰는, 남이 만든 코드
프레임워크Framework코드 묶음그쪽이 나를 호출하는 구조 중심의 뼈대
제어의 역전Inversion of Control (IoC)원리호출의 주도권이 내 코드에서 프레임워크로 넘어가는 것
판다스pandas라이브러리표 형태 데이터를 다루는 파이썬 라이브러리
데이터프레임DataFrame자료구조행과 열로 된 2차원 표 (pandas의 핵심 타입)
시리즈Series자료구조열 하나. 1차원
CSVComma-Separated Values파일 형식쉼표로 열을 구분한 표 데이터 파일
캐글Kaggle플랫폼데이터셋과 머신러닝 경진대회를 제공하는 사이트
GitGit버전 관리 도구내 컴퓨터에서 변경 이력을 기록하는 프로그램
GitHubGitHub원격 저장소 서비스Git 저장소를 인터넷에 호스팅하는 웹 서비스
저장소RepositoryGit 단위코드와 그 전체 이력이 모여 있는 단위
커밋CommitGit 개념변경 사항을 하나의 기록으로 확정하는 것
스테이징StagingGit 개념커밋에 포함할 파일을 골라두는 중간 단계 (git add)
브랜치BranchGit 개념본줄기에서 갈라져 나온 작업 가지
mainmainGit 브랜치기본 줄기. 최종본
원격RemoteGit 개념내 컴퓨터 밖에 있는 저장소
originoriginGit 별칭첫 번째 원격 저장소에 붙이는 관습적 별명
pushpushGit 동작로컬 기록을 원격으로 올리기
pullpullGit 동작원격 기록을 로컬로 가져오기
PRPull Request협업 절차합치기 전에 검토를 요청하는 것
도메인Domain네트워크사람이 읽을 수 있는 인터넷 주소
로컬Local위치내 컴퓨터 안
원격·클라우드Remote / Cloud위치남의 컴퓨터 안
마크다운Markdown표기법사람이 읽고 쓰기 쉬운 문서 형식 (.md)
마크업Markup표기법태그로 구조를 표시하는 기계용 표기 (HTML)
CLAUDE.md—설정 문서AI에게 프로젝트 규칙을 알려주는 마크다운 파일
하네스Harness방법론모델을 규칙 문서와 검증 장치로 감싸 통제하는 체계
옵시디언Obsidian노트 앱생각을 .md 파일로 쌓아두는 지식 관리 도구
CursorCursor에디터AI가 내장된 코드 에디터
추상Abstract축 5무엇을 할지만 정하고 어떻게는 정하지 않은 것
구상Concrete축 5실제로 어떻게 할지까지 정해진 것
고급 언어High-level Language언어 분류사람 쪽에 가까운 언어 (어렵다는 뜻 아님)
저급 언어Low-level Language언어 분류기계 쪽에 가까운 언어
기계어Machine Code언어0과 1로 된, 기계만 읽는 명령
불 대수Boolean Algebra수학참/거짓 두 값만 다루는 대수 체계

부록 B. 스스로 확인하기

먼저 답해보고, 막히면 옆의 절을 펼치세요.

#질문답이 있는 곳
1머신러닝과 딥러닝은 대등한 두 개인가, 하나가 다른 하나에 속하는가?1.1
2AI 에이전트가 AI 계열의 포함 관계에 들어가지 않는 이유는?1.3
3ChatGPT는 강한 AI인가? 왜 그런가?1.4
4이진 분류가 "가장 기초"인 이유는 쉬워서인가?2.3
5타이타닉 데이터에서 맞혀야 하는 컬럼과 그 값의 종류는?2.5
6"고급 언어"의 '고급'은 무슨 뜻인가?3.2
7Git과 GitHub 중 인터넷이 없어도 되는 쪽은?4.1
8첫 push 6줄 중 인터넷이 필요한 줄은 몇 개인가?4.2
9git config --global 의 --global 은 어느 축인가?4.4
10도메인을 개강 이틀 만에 사는 이유는?4.6
11가상환경·컨테이너·VM을 격리 강도 순으로 놓으면?5.2
12가상환경을 안 만들면 무슨 문제가 생기는가?5.3
13conda init 후 에디터를 재시작해야 하는 이유는?5.5
14라이브러리와 프레임워크를 한 문장으로 구분하면?6.2
15"바퀴를 재발명하지 마라"의 세 가지 이유 중 가장 약한 것은?6.4
16무엇을 가져다 쓰고 무엇을 직접 만드는지 판별하는 한 줄은?6.5
17Cursor와 옵시디언을 가르는 축은?7.2
18CLAUDE.md 가 .md 인 이유 세 가지는?7.3
19Path(__file__).parent 를 쓰는 이유는?8.6
20새 저장소에서 README를 끄고 만드는 이유는?8.7

부록 C. 자주 하는 실수

실수바로잡기
"머신러닝과 딥러닝은 다른 두 기술"❌ 딥러닝은 머신러닝의 부분집합입니다
"AI 에이전트는 제일 발전한 AI"❌ 축이 다릅니다. 기술의 종류가 아니라 시스템의 형태입니다
"ChatGPT는 아무거나 하니까 강한 AI"❌ "텍스트 생성"이라는 한 가지 일을 하는 약한 AI입니다
"이진 분류는 쉬워서 기초"❌ 분해되지 않는 최소 단위라서 기초입니다
"분류와 회귀는 난이도 차이"❌ 답이 끊어져 있는가 이어져 있는가의 차이입니다
"고급 언어 = 어려운 언어"❌ 사람 쪽에 가깝다는 뜻입니다. 어려운 쪽은 저급(기계어)입니다
"HTML은 프로그래밍 언어"⚠️ 마크업 언어입니다. 판단·반복·분기가 없습니다
"확장자를 바꾸면 형식이 바뀐다"❌ 확장자는 힌트일 뿐입니다
"Git = GitHub"❌ Git은 내 컴퓨터의 프로그램, GitHub는 그 결과를 올리는 서비스입니다
"git add 하면 깃허브에 올라간다"❌ add 는 올릴 목록을 고르는 것입니다. push 해야 올라갑니다
"commit 했으니 끝"⚠️ commit은 로컬 기록입니다. GitHub에는 아직 없습니다
"첫 push가 거부됨"⚠️ 저장소를 만들 때 README/gitignore/license를 켠 것이 원인인 경우가 많습니다
"커밋이 안 됨"⚠️ git config --global user.name / user.email 을 설정하지 않은 것입니다
"설치했는데 conda: command not found"⚠️ PATH 환경변수 등록 누락입니다
"conda activate 했는데 안 먹어요"⚠️ 대부분 conda init 후 터미널·에디터를 재시작하지 않은 것입니다
"아나콘다 폴더가 안 보여요"⚠️ 설치 경로가 랜덤으로 달라진 것입니다. 실제 경로를 확인하세요
"가상환경은 Docker랑 같은 것"⚠️ 격리 수준이 다릅니다. venv=패키지, Docker=OS 라이브러리까지
"가상환경 안 만들어도 되지 않나"⚠️ 프로젝트가 둘만 돼도 버전 충돌이 납니다
"ModuleNotFoundError 는 코드 오류"❌ 대부분 환경 문제입니다. 활성화 → 설치 순으로 확인
"CSV 경로를 파일명만 써도 된다"⚠️ 실행하는 폴더에 따라 못 찾습니다. Path(__file__).parent 를 쓰세요
"출력에 ... 이 나오면 에러"❌ 가운데 열이 생략된 것입니다. 정상입니다
"도메인 기간은 기본값 그대로"⚠️ 기본이 3년입니다. 1년 으로 바꾸세요
"AI가 준 코드가 안 돌아간다"⚠️ 코드가 아니라 필요한 패키지가 없는 것인 경우가 많습니다
"AI에게 '안 돼요'라고 물어본다"⚠️ 상황 + 명령 + 오류 원문 + 원하는 결과 4가지를 주세요
"1등 벤치마크 모델이 최고"⚠️ 내 작업과 시험 종목이 다를 수 있습니다. 직접 써보세요

부록 D. 날짜별 색인

이 장의 내용이 실제 수업에서 어느 날 다뤄졌는지입니다.

날짜다룬 내용이 장의 절
4/28 (화)개강. Claude Code 창시자 Boris 워크숍(코드베이스 Q&A, CLAUDE.md 계층, claude -p, SSH+tmux), 옵시디언 설치, 깃허브 가입, Git 설치, Cursor 설치 4단계, EBS 《위대한 수업》 AI 시즌1.6, 7.1~7.4, 8.1, 8.3, 9.1, 9.5
4/29 (수)크롬 설치·북마크 바 세팅, IBM의 AI 정의 계층(AI/ML/DL/생성형/에이전트, 약한 AI vs 강한 AI), Red Hat AI, 이진 분류, 가비아 도메인 구입, Cursor 터미널 열기·아이콘 테마1.11.7, 2.12.4, 4.6, 8.18.2, 8.8, 9.29.3
4/30 (목)캐글 타이타닉 데이터, 아나콘다 설치와 환경변수, conda create/init/activate 가상환경, 판다스 import 확인, 깃허브에 코드 업로드, 「바퀴를 재발명하지 않기」, Human/Machine·Soul/Body 축2.5, 3.13.4, 4.14.5, 5.15.6, 6.16.4, 8.4~8.7, 9.4
5/1 (금)네이버 국가대표 AI 탈락 — 핵심 장치 외부 기술 사용 표절 논란6.5, 9.6

부록 E. Gemini / NotebookLM 프롬프트

복습 문제 받기

이 1주차 교재만 근거로 7문제를 내줘. 비전공자 기준으로.
"AI 계열의 포함 관계"와 "Git vs GitHub"는 반드시 포함해줘.
답은 바로 주지 말고, 내가 답한 다음에 채점하고
틀린 이유를 교재의 어느 절을 근거로 설명해줘. 교재에 없는 내용은 꺼내지 마.

인포그래픽 ① — AI 계열의 포함 관계

「1.1 다섯 단어는 대등하지 않습니다」와 「1.3 AI 에이전트는 이 계열이 아닙니다」를 합쳐
인포그래픽 1장으로 만들어줘.
- AI ⊃ 머신러닝 ⊃ 딥러닝 ⊃ 생성형 AI 를 동심원(또는 중첩 상자)으로
- 각 층 옆에 "종차" 한 줄씩 (무엇이 새로 추가되는가)
- AI 에이전트는 그 동심원 밖에 따로 두고 "축이 다름"을 화살표로 표시
- 약한 AI / 강한 AI 는 아래쪽에 별도 축으로
- 전문용어는 한글(영문) 병기

인포그래픽 ② — 다섯 개의 판별 축

「0. 이 장의 판별 축」 표를 인포그래픽 1장으로 만들어줘.
- 축 5개를 가로 막대 5줄로, 왼쪽 끝이 0 오른쪽 끝이 1
- 각 막대 아래에 이번 주 사례를 하나씩 (AI⊃ML / Git↔GitHub / base↔venv / 0↔1 / 자연어↔기계어)
- 오른쪽 여백에 "이 축이 다시 나오는 곳"을 작은 글씨로
- 축 5(추상↔구상)를 가장 굵게 강조 — 교재 전체에서 가장 많이 쓰이는 축

인포그래픽 ③ — 첫 push 6줄과 로컬/원격 경계

「4.2 첫 push 6줄의 의미」를 세로 흐름도로 만들어줘.
- 왼쪽에 "내 컴퓨터(로컬)" 영역, 오른쪽에 "GitHub(원격)" 영역을 세로 띠로 나누고
- git init / add / commit / branch -M / remote add / push 를 순서대로 배치
- 6줄 중 5줄이 로컬 안에서 끝나고 마지막 push만 경계를 넘는다는 것을 굵은 화살표로
- 각 명령 옆에 "몇 번 하나(1번/매번)"를 배지로 표시

막힐 때

1주차에서 "___" 가 이해가 안 돼.
이 교재의 판별 축 5개(포함관계 / 로컬↔원격 / 전역↔격리 / 0↔1 / 추상↔구상)만
써서 다시 설명해줘. 교재에 없는 새 비유는 만들지 마.

미국식 분류로 다시 정리하기

이 교재에 나온 비유(작업 일지와 온라인 사무실, 도구상자와 작업장, 레시피)를 전부 걷어내고,
"이것은 무엇의 한 종류인가 / 형제 개념과 무엇으로 갈리는가" 형식으로만
머신러닝·딥러닝·생성형 AI·이진 분류·가상환경·라이브러리·프레임워크를 다시 정의해줘.

환경 문제 진단 받기

나는 1주차 교재의 8.4~8.6 절차를 따라 하는 중이야.
지금 상황은 [상황], 실행한 명령은 [명령], 오류 메시지 원문은 [원문],
내가 원하는 결과는 [결과] 야.
교재 부록 C의 "자주 하는 실수" 표에 해당하는 항목이 있는지 먼저 확인하고,
없으면 그 다음에 다른 원인을 추정해줘.

다음 장 연결 확인

이 교재에서 "앞으로 다시 만납니다"라고 표시된 부분을 전부 찾아서,
이번 장의 어떤 개념이 몇 주차에 어떤 이름으로 다시 나오는지 표로 정리해줘.
컬럼은 "1주차의 개념 / 다시 나오는 주차 / 그때의 이름" 으로.