AI NATIVE COMPANY

AX4U ACADEMY / SELF STUDY

명령을 따라 치고,
내 말로 설명하기.

CLI → Git/GitHub → Python → 행렬. 처음엔 그대로 실행하고, 다음엔 출력이 왜 그렇게 나오는지 설명해 보세요.

AX4U 자율 기초학습 자료입니다. 경남 AI올인원 공식 교재·기관 제휴 과정이 아니며 수료·합격을 보장하지 않습니다. 시험·과제에서 AI 사용 허용 범위는 해당 운영기관에 확인하세요. AI에게 정답을 맡기기 전에 먼저 종이에 예측을 적어 보세요.

준비부터 시작하기 ↓

BEFORE YOU START

준비와 실행 환경

아래 셸 명령은 Linux의 Bash 터미널 기준입니다. Windows PowerShell 또는 CMD에 그대로 붙여 넣지 마세요. Windows에서는 Microsoft WSL 공식 안내를 따라 Ubuntu 등 Linux 환경을 열고, 그 안에서 실행하세요. 기존 파일을 덮어쓰지 않도록 새 연습 폴더에서만 작업합니다. macOS는 명령이 비슷해도 여기서는 검증 대상이 아닙니다.

Git은 Git 공식 설치 안내, Python은 Python 공식 다운로드, GitHub 계정은 GitHub 공식 계정 안내를 참고하세요. 설치·로그인은 이 페이지가 대신하지 않습니다. 터미널에서 git --version, python3 --version으로 확인하고 없으면 공식 안내로 돌아갑니다. sudo, 위험 삭제 명령은 사용하지 않습니다.

01 / LINUX BASH

CLI · 내가 서 있는 폴더 알기

개념

터미널은 명령을 글자로 입력하는 창입니다. pwd는 현재 위치, ls는 목록, cd는 폴더 이동입니다. 상대 경로 notes/day1.txt는 지금 있는 폴더를 기준으로 해석됩니다. 대소문자를 구별합니다.

직접 따라하기 · 복사 명령

Linux Bash에서 줄마다 실행하세요. mkdir가 이미 존재한다는 오류가 나면 다른 연습 폴더 이름을 고르세요. 기존 파일을 덮어쓰지 마세요.

mkdir ax4u-foundations-practice
cd ax4u-foundations-practice
pwd
mkdir notes
printf '첫 기록\n' > notes/day1.txt
ls notes
cat notes/day1.txt

예상 결과: pwd 끝이 /ax4u-foundations-practice, ls notes는 day1.txt, cat은 첫 기록. 작업 시작 위치에 따라 앞쪽 경로는 다릅니다.

작은 과제

notes 안에 day2.txt를 만들고 ls notes로 두 파일을 확인해 보세요. 먼저 어떤 출력이 나올지 적습니다.

자기검증 · 해설 보기

printf '둘째 기록\n' > notes/day2.txt 후 ls notes에 day1.txt와 day2.txt가 나옵니다. >는 기존 파일을 덮어쓰므로 새 이름에만 사용하세요. No such file or directory라면 pwd와 ls로 현재 위치와 이름을 확인하세요. Permission denied라면 권한이 있는 연습 위치로 옮기고 무작정 sudo를 붙이지 마세요.

참고영상: 시골사는개발자 · 리눅스 명령어 모음 | 초중급 개발자를 위한 기본 명령어 강좌 ↗

02 / VERSION CONTROL

Git · 바뀐 이유를 남기기

개념

Git은 로컬 변경 기록, GitHub는 원격 저장소 서비스입니다. clone은 복제, status는 상태 확인, add는 다음 기록 대상 지정, commit은 로컬 기록, push는 원격 전송입니다. README는 동료에게 목적·실행법을 전합니다. push 전에는 공개될 내용과 비밀값이 없는지 확인하세요.

직접 따라하기 · 복사 명령

첫 단원에서 만든 연습 폴더로 이동한 상태에서 실행합니다. git init은 여기서 만든 새 폴더에서만 사용합니다. git commit이 신원 설정을 요청하면 공식 설정 안내를 확인하세요.

git init
printf '# 내 기초 연습\n\nCLI 기록을 직접 설명합니다.\n' > README.md
git status
git add README.md
git diff --cached
git commit -m "docs: add practice README"
git status

예상 결과: 첫 status에서 README.md와 notes/가 추적되지 않은 항목으로 보이고, README add 후 그 파일만 staged됩니다. commit 후에도 notes/는 미추적 상태로 남습니다. Git 버전과 초기 브랜치 이름에 따라 표현은 다릅니다.

작은 과제

README에 연습 목표 한 문장을 추가한 뒤 git status, git diff를 보고, 변경을 다시 기록하세요. 협업에서는 다른 사람의 작업을 덮지 않도록 먼저 변경 내역을 살피고, 작은 커밋에 이유를 적고, PR에서 검토를 요청합니다.

자기검증 · 해설 보기

printf '\n내 목표: 오류를 읽고 스스로 고친다.\n' >> README.md는 끝에 덧붙입니다. git add README.md → git diff --cached → git commit -m "docs: explain goal" → git status. 아무 변화가 없다면 지금 폴더와 README 위치를 확인하세요. 개인 토큰·비밀번호는 커밋하지 않습니다.

GitHub로 이어가기 (본인 저장소에서만)

공식 안내로 본인 명의의 빈 저장소를 만든 뒤 표시된 HTTPS 주소를 확인하세요. 아래는 예시 주소이므로 그대로 실행하지 마세요. 본인이 접근 권한을 가진 저장소에서만 clone/push하고 인증은 GitHub 공식 인증 안내를 따릅니다. 비밀번호를 명령에 넣지 마세요.

git clone https://github.com/YOUR-NAME/YOUR-EMPTY-REPO.git
cd YOUR-EMPTY-REPO
git status
# 이 폴더의 README.md를 편집한 후:
git add README.md
git commit -m "docs: explain my practice"
git push

예상 결과: 실제 저장소 URL과 권한·원격 브랜치가 맞으면 push 후 GitHub 페이지에 README 변경이 나타납니다. 예시 주소는 실제 저장소가 아니므로 실패하는 게 정상입니다. 원격 변경과 충돌하면 무작정 강제 push하지 말고 동료와 조율하세요.

참고영상: 유노코딩 · 깃과 깃허브가 처음인 당신에게 #1 Git & Github 소개, 강의 소개 ↗

03 / PYTHON 3

Python · 값을 바꾸며 흐름 추적

개념

변수는 값을 이름에 연결합니다. if는 조건, for는 반복, def는 함수 정의입니다. list는 순서 있는 값, dict는 키로 찾는 값입니다. 오류 메시지의 마지막 줄과 파일·줄 번호를 먼저 읽고 그 줄의 입력을 확인하세요.

직접 따라하기 · 복사 코드

Linux Bash에서 python3을 입력해 >>> 프롬프트가 보이면 아래 Python 코드만 붙여 넣으세요. 종료는 exit(). 또는 새 practice.py에 저장해 python3 practice.py로 실행합니다.

scores = [72, 88, 95]
student = {"name": "봄", "scores": scores}

def passed(score):
    if score >= 80:
        return "통과"
    return "다시 연습"

for score in student["scores"]:
    print(student["name"], score, passed(score))

예상 결과: 봄 72 다시 연습, 봄 88 통과, 봄 95 통과가 한 줄씩 출력됩니다. 80과 비교하는 것은 점수 각각입니다.

작은 과제

점수 80을 리스트 끝에 추가하고 출력을 먼저 예측하세요. 함수의 경계를 >= 90으로 바꾸면 어느 줄이 바뀌나요?

자기검증 · 해설 보기

scores.append(80)을 반복문 전에 넣으면 네 번째 줄은 봄 80 통과입니다. 90 이상으로 바꾸면 88과 80은 다시 연습입니다. KeyError: 'scores'는 dict 키 철자를, IndentationError는 들여쓰기를, NameError는 변수 이름을 확인하세요. 오류를 지우기보다 원인 줄을 찾습니다.

참고영상: 나도코딩 · 파이썬 코딩 무료 강의 (기본편) ↗

04 / MATRIX SHAPE

행렬 · 행과 열부터 세기

개념

행은 가로, 열은 세로. A = [[1,2,3],[4,5,6]]은 2행 3열, shape (2, 3)입니다. 덧셈은 같은 위치끼리 더하므로 모양이 같아야 합니다. 행렬곱 A(2×3) @ B(3×2)는 안쪽 3이 맞고 결과는 2×2입니다. @는 Python 기본 list 사이에는 바로 쓰지 않습니다.

직접 따라하기 · 종이 계산 후 코드

먼저 첫 번째 결과 원소를 손으로 계산한 뒤 아래 Python 3 코드를 실행하세요. 외부 패키지는 필요 없습니다.

A = [[1, 2, 3], [4, 5, 6]]
C = [[10, 20, 30], [40, 50, 60]]
B = [[7, 8], [9, 10], [11, 12]]
added = [[A[i][j] + C[i][j] for j in range(3)] for i in range(2)]
product = [[sum(A[i][k] * B[k][j] for k in range(3))
            for j in range(2)] for i in range(2)]
print("shape:", (len(A), len(A[0])), (len(B), len(B[0])))
print("sum:", added)
print("product:", product)

예상 결과: shape: (2, 3) (3, 2)
sum: [[11, 22, 33], [44, 55, 66]]
product: [[58, 64], [139, 154]]. 첫 칸은 1×7 + 2×9 + 3×11 = 58입니다.

작은 과제

B 첫 열만 골라 A의 둘째 행과 곱한 결과를 종이에 적으세요. C 대신 B를 더할 수 있는지도 shape로 설명하세요.

자기검증 · 해설 보기

둘째 행 × 첫 열 = 4×7 + 5×9 + 6×11 = 139. A와 B는 각각 (2,3), (3,2)이므로 덧셈 불가. 곱셈은 덧셈과 달리 안쪽 차원이 같아야 합니다. 다른 크기의 행렬은 이 고정 범위 코드에 넣지 말고 우선 shape와 인덱스를 다시 설계하세요.

참고영상: 3Blue1Brown 한국어 · 제1장: 벡터란 무엇인가? ↗ → 제3장: 선형변환과 행렬 ↗ (직관 보충용; 코드 절차는 이 페이지 기준).

05 / IN YOUR OWN WORDS

자기 말 설명 연습

개념

출력을 맞혔다면 다음 단계는 왜 그런지 말하는 것입니다. AI가 써 준 해설을 외우는 대신 화면을 닫고 소리 내어 설명해 보세요.

직접 따라하기 · 설명 틀

각 주제마다 “입력 → 처리 → 예상 출력 → 틀렸을 때 확인할 것” 네 문장을 손으로 적거나 말로 녹음해 보세요. 설명을 듣는 사람이 pwd와 git status의 차이, 리스트와 dict의 차이, 행렬곱 결과 크기를 되물으면 답해 봅니다.

내가 입력한 것은: ______
이 명령/코드가 읽는 대상은: ______
예상한 출력과 이유는: ______
실제 결과가 다르면 확인할 것은: ______

예상 결과: 외운 정의가 아니라 자기 예제의 입력과 출력에 맞는 네 문장. 답은 사람마다 다를 수 있습니다.

작은 과제

첫 단원의 파일 이름을 바꿨다고 상상하고 cat notes/day1.txt 오류의 원인을 설명하세요. 이어 A×B 결과가 왜 2×2인지 종이에 그려 보세요.

자기검증 · 해설 보기

현재 폴더 기준 notes/day1.txt가 없거나 이름이 바뀌면 파일을 찾을 수 없다는 오류가 납니다. pwd와 ls notes로 진단하세요. A는 2행, B는 2열이고 안쪽 3이 같아서 곱의 결과는 2행 2열입니다. AI를 썼다면 어디를 참고했고 스스로 검산한 것은 무엇인지 표시하세요.

영상과 자료를 사용하는 방법

영상은 각 제작자의 독립 자료이며 AX4U 또는 어떤 기관의 공식 강의·제휴 콘텐츠가 아닙니다. 영상 제목·채널은 공개 YouTube oEmbed에서 확인했습니다. 강의 내용 전체의 정확성이나 자막은 별도 검증하지 않았습니다. 링크가 바뀌거나 재생이 제한될 수 있습니다. 이 페이지의 명령을 직접 실행하고 영상은 이해가 막힐 때 보충으로 활용하세요.

Academy 다른 코스 보기 ↗