EXPLORE THE CURRICULUM
Level 1 · 코드와 시스템 이해
Python과 C로 직접 만들며 컴퓨터 내부를 이해합니다.
이 레벨의 시작점 Level 0의 기본 조작에 익숙한 분 · Step 41–95
55 개의 수업
선택 초기화L1Python 프로그래밍Step 41–5515 수업
- 041 파이썬 환경 세팅과 첫 코드 — 작업대를 세우는 날파이썬을 설치하고 python --version으로 PATH 등록까지 확인한다
- 042 자료형 심화 — 값을 담는 네 가지 바구니리스트를 만들고 인덱스로 꺼내고 append로 추가한다
- 043 조건문과 반복문 — 판단하고 반복하는 코드if/elif/else로 조건에 따라 다르게 행동하는 프로그램을 쓴다
- 044 함수와 모듈 — 부품을 만들어 조립하다def와 return으로 함수를 정의하고 호출한다
- 045 파일 입출력 — 기억하는 프로그램 만들기with open()으로 파일을 만들고, 쓰고, 읽는다
- 046 예외처리와 디버깅 — 넘어져도 다시 일어나는 프로그램오류 메시지(트레이스백)를 아래부터 읽어 원인과 현장을 찾는다
- 047 ★ 프로젝트: 가위바위보 — 설명서 없이 완성하는 첫 게임코딩 전에 다섯 줄 설계(할 일, 입력, 출력, 규칙, 사고)를 종이에 적는다
- 048 정규표현식 — 모양으로 찾는 자석d, w, ., +, *, {n,m}의 뜻을 설명하고 패턴을 조립한다
- 049 ★ 프로젝트: 비밀번호 도구 — 첫 번째 보안 도구를 만든다비밀번호 강도가 조합 수(곱셈)로 결정됨을 숫자로 설명한다
- 050 인코딩 탐구 — 글자와 숫자 사이의 다리문자가 컴퓨터 안에서 숫자로 저장되는 원리를 ord/chr 실험으로 확인한다
- 051 표준 라이브러리 — 파이썬에 이미 들어 있는 도구 상자표준 라이브러리가 무엇인지 설명하고, 필요한 모듈을 찾아 import한다
- 052 클래스와 객체지향 — 데이터와 동작을 한 상자에클래스(설계도)와 인스턴스(물건)의 관계를 설명한다
- 053 pip와 가상환경 — 세계의 도구를 내 방에 들이는 법pip과 PyPI가 무엇인지, 의존성이 무엇인지 설명한다
- 054 알고리즘 훈련 1 — 문제를 코드로 번역하는 근육백준에 가입하고 문제를 읽고 코드를 제출해 채점받는 전체 순환을 돌린다
- 055 ★ 프로젝트: 로그 분석기 — 기록 더미에서 발자국을 골라내라로그(log)가 무엇이고 왜 보안 분석의 기본 재료인지 설명한다
L1C와 컴퓨터 내부Step 56–7015 수업
- 056 C 시작 — 기계가 직접 아는 언어로해석 언어(파이썬)와 컴파일 언어(C)의 차이를 설명한다
- 057 C 제어문과 함수 — 같은 생각, 다른 표기C의 if, for, while을 파이썬과 대응시켜 쓴다
- 058 포인터 1 — 주소를 손에 쥐는 날모든 변수가 메모리의 주소에 산다는 사실을 %p 출력으로 확인한다
- 059 포인터 2: 배열 — 붙어 있는 칸들의 법칙배열이 "메모리에 붙어 있는 칸들"임을 주소 출력으로 확인한다
- 060 메모리 구조 — 실행 중인 프로그램의 지도실행 중인 프로그램의 메모리가 네 영역(코드/데이터/힙/스택)으로 나뉨을 설명한다
- 061 malloc과 free — 힙에서 빌리고 반납하라malloc으로 실행 중에 필요한 만큼 메모리를 빌리고, sizeof와 함께 쓴다
- 062 실험: 버퍼 오버플로우 — 넘친 입력의 행선지버퍼가 무엇이며, 왜 넘치는지 설명한다
- 063 컴파일 과정 — 네 명의 일꾼이 바톤을 넘긴다gcc hello.c -o hello 한 줄 뒤의 네 단계(전처리, 컴파일, 어셈블, 링크)를 순서대로 말한다
- 064 어셈블리 첫 만남 — 내 코드의 최종 실체어셈블리어가 무엇인지(기계어의 인간 판독판) 설명한다
- 065 CPU와 레지스터 — 실행의 심장 박동을 보다CPU가 계산을 메모리가 아닌 레지스터에서 하는 이유를 설명한다
- 066 실행 파일의 구조 — 아이콘 속의 설계도실행 파일이 "설명서(헤더) + 용도별 구역(섹션)"으로 이루어져 있음을 설명한다
- 067 운영체제의 역할 — 모든 부탁은 커널에게커널이 무엇이고 왜 프로그램이 하드웨어를 직접 못 건드리는지 설명한다
- 068 프로세스의 실체 — fork 실험프로세스와 PID, PPID를 설명하고 ps와 pstree로 관찰한다
- 069 가상 메모리 — 모든 프로세스의 달콤한 착각가상 주소와 물리 주소의 차이, 그리고 둘을 잇는 페이지 테이블의 역할을 설명한다
- 070 프로젝트 — C로 메모리 관찰 도구 만들기자기 자신의 메모리 주소 지도를 그려 주는 C 프로그램 memmap을 완성한다
L1웹의 기본 구조Step 71–766 수업
- 071 HTML/CSS 기초 — 웹페이지의 뼈대와 옷빈 파일에서 시작해 제목·문단·링크·이미지·목록·입력창이 있는 웹페이지를 손으로 만든다
- 072 JavaScript 기초 — 웹페이지를 살아 있게 하는 언어파이썬과 비교해 JS 기초 문법(let/const, function, console.log)을 쓴다
- 073 HTTP 완전 이해 — 웹의 대화 규칙python -m http.server로 내 컴퓨터에 실습용 웹서버를 띄운다
- 074 requests 라이브러리 — 파이썬으로 웹과 대화하기POST와 쿠키를 이해하는 연습용 서버(lab.py)를 파이썬으로 직접 만든다
- 075 BeautifulSoup 크롤링 — HTML에서 원하는 것만 뽑기BeautifulSoup(문자열, "html.parser")로 HTML 문자열을 탐색 가능한 구조로 바꾼다
- 076 크롤러와 자동화 — 매일 혼자 일하는 수집기python -m http.server로 로컬 연습 사이트를 띄울 수 있다
L1네트워크 도구 만들기Step 77–859 수업
- 077 소켓 통신 1 — TCP echo 서버와 클라이언트소켓이 "프로그램과 프로그램 사이의 통신 끝점"임을 코드로 설명한다
- 078 소켓 통신 2 — 멀티 클라이언트 채팅 서버스레드가 "같은 프로세스 안에서 메모리를 공유하는 실행 흐름"임을 설명한다
- 079 포트 스캐너 — 열린 문을 찾아내는 정찰기포트 스캔의 원리가 "접속 시도(connect)"임을 직접 만든 도구로 설명한다
- 080 Scapy 입문 — 패킷 수작업 공방패킷이 Ethernet/IP/TCP/데이터로 겹쳐진 다층 구조임을 show() 출력으로 읽는다
- 081 nmap 완전 정복 — 정찰의 표준 도구nmap의 주요 옵션(-sT/-sS/-sV/-O/--script)을 상황에 맞게 고른다
- 082 프로젝트 — 네트워크 지도와 위험도 평가자산(asset), 공격 표면(attack surface), 위험도 세 용어를 정의하고 실습에 적용한다
- 083 Wireshark 1 — 캡처와 필터, 네트워크의 현미경네트워크 인터페이스를 골라 캡처를 시작하고 멈춘다
- 084 Wireshark 2 — 프로토콜 파헤치기와 이상 탐지TCP 3-way 핸드셰이크를 실제 캡처에서 세 패킷으로 찾아낸다
- 085 프로젝트 — HTTP vs HTTPS 비교 보고서로컬에 평문 웹 서버를 열고, 요청/응답이 패킷에 글자 그대로 실리는 것을 캡처로 증명한다
L1개발 도구와 통합 프로젝트Step 86–9510 수업
- 086 Git 기초 — 코드의 타임머신저장소, 커밋, 스테이징이라는 세 개념으로 Git의 작동 구조를 설명한다
- 087 GitHub 원격 저장소와 포트폴리오 — 백업이자 전시장로컬 저장소와 원격 저장소의 관계, push와 pull의 방향을 설명한다
- 088 브랜치와 merge — 평행우주와 합치기브랜치와 HEAD의 실체가 "커밋을 가리키는 화살표"임을 설명한다
- 089 마크다운 문서화 — 나만의 개인 위키마크다운 핵심 문법 일곱 개로 기술 문서를 작성한다
- 090 프로젝트 — XOR 파일 암호화/복호화 도구XOR의 복원 성질(A ⊕ K ⊕ K = A)을 파이썬 ^ 연산으로 보여 준다
- 091 리눅스 복습 — OverTheWire Bandit 0~10SSH로 원격 서버에 접속하고 종료할 수 있다 (ssh 사용자@주소 -p 포트)
- 092 SQL 기초 1 — 데이터베이스와 대화하기 (CRUD)sqlite3에 진입해 표(테이블)를 만들고 나올 수 있다
- 093 SQL 기초 2 — JOIN과 파이썬 연동두 테이블을 ON 조건으로 JOIN해 조회할 수 있다
- 094 Flask 맛보기 — 웹 서버를 직접 만든다Flask로 라우트 2개 이상의 서버를 띄울 수 있다
- 095 Level 1 종합 프로젝트 — 네트워크 감시 도구 완성하기요구사항 명세만 보고 완성품을 만들 수 있다