EXPLORE THE CURRICULUM
Level 1 · Code & systems
Build with Python and C, and explore how computers work.
Before you begin Comfortable with Level 0 fundamentals · Step 41–95
55 lessons
Reset filtersL1Python programmingStep 41–5515 lessons
- 041 Setting Up Python and Your First Code — The Day You Build Your WorkbenchInstall Python and verify the PATH registration with python --version
- 042 Data Types in Depth — Four Baskets for Holding ValuesCreate lists, retrieve by index, and add with append
- 043 Conditionals and Loops — Code That Decides and RepeatsWrite programs that act differently based on conditions with if/elif/else
- 044 Functions and Modules — Building and Assembling PartsDefine and call functions with def and return
- 045 File Input/Output — Making Programs That RememberCreate, write, and read files with with open()
- 046 Exception Handling and Debugging — Programs That Get Back Up When They FallRead an error message (traceback) from the bottom up to find the cause and the scene
- 047 ★ Project: Rock-Paper-Scissors — Your First Game Completed Without a ManualWrite a five-line design (task, input, output, rules, accidents) on paper before coding
- 048 Regular Expressions — A Magnet That Finds by ShapeExplain the meaning of d, w, ., +, *, {n,m} and assemble patterns
- 049 ★ Project: Password Tool — Building Your First Security ToolExplain with numbers that password strength is determined by the combination count (multiplication)
- 050 Exploring Encoding — The Bridge Between Letters and NumbersVerify with ord/chr experiments the principle that characters are stored as numbers inside a computer
- 051 The Standard Library — The Toolbox Already Inside PythonExplain what the standard library is, and find and import the module you need
- 052 Classes and Object Orientation — Data and Behavior in One BoxExplain the relationship between a class (the blueprint) and an instance (the thing)
- 053 pip and Virtual Environments — How to Bring the World's Tools into Your RoomExplain what pip and PyPI are, and what a dependency is
- 054 Algorithm Training 1 — The Muscle That Translates Problems into CodeRun the whole cycle of signing up for Baekjoon, reading a problem, submitting code, and getting judged
- 055 ★ Project: Log Analyzer — Pick the Footprints Out of the Pile of RecordsExplain what a log is and why it's the basic material of security analysis
L1C & computer internalsStep 56–7015 lessons
- 056 Starting C — In the Language the Machine Knows DirectlyExplain the difference between an interpreted language (Python) and a compiled language (C)
- 057 C Control Flow and Functions — Same Thinking, Different NotationWrite C's if, for, and while by matching them to their Python counterparts
- 058 Pointers 1 — The Day You Hold Addresses in Your HandConfirm with %p output that every variable lives at an address in memory
- 059 Pointers 2: Arrays — The Law of Adjacent SlotsConfirm with address output that an array is "slots stuck together in memory"
- 060 Memory Layout — The Map of a Running ProgramExplain that a running program's memory is divided into four regions (code/data/heap/stack)
- 061 malloc and free — Borrow from the Heap and Return ItBorrow as much memory as you need mid-run with malloc, used together with sizeof
- 062 Experiment: Buffer Overflow — Where the Overflowing Input GoesExplain what a buffer is and why it overflows
- 063 The Compilation Process — Four Workers Passing the BatonRecite in order the four stages behind gcc hello.c -o hello (preprocessing, compilation, assembly, linking)
- 064 First Encounter with Assembly — The Final Form of My CodeExplain what assembly language is (the human-readable edition of machine code)
- 065 CPU and Registers — Seeing the Heartbeat of ExecutionExplain why the CPU computes in registers instead of memory
- 066 The Structure of an Executable — The Blueprint Inside the IconExplain that an executable consists of "a manual (header) + purpose-specific regions (sections)"
- 067 The Role of the Operating System — Every Request Goes to the KernelExplain what the kernel is and why programs can't touch hardware directly
- 068 The True Nature of a Process — The fork ExperimentExplain processes, PIDs, and PPIDs, and observe them with ps and pstree
- 069 Virtual Memory — Every Process's Sweet IllusionExplain the difference between virtual and physical addresses, and the role of the page table connecting them
- 070 Project — Building a Memory Observation Tool in CComplete the C program memmap, which draws a map of its own memory addresses
L1How the web worksStep 71–766 lessons
- 071 HTML/CSS Basics — A Web Page's Skeleton and ClothesStarting from an empty file, build by hand a web page with a title, paragraphs, links, images, lists, and inpu…
- 072 JavaScript Basics — The Language That Brings Web Pages to LifeWrite basic JS syntax compared with Python (let/const, function, console.log)
- 073 Understanding HTTP Completely — The Web's Rules of ConversationLaunch a practice web server on your computer with python -m http.server
- 074 The requests Library — Talking to the Web with PythonBuild your own practice server (lab.py) in Python that understands POST and cookies
- 075 Crawling with BeautifulSoup — Pulling Only What You Want from HTMLTurn an HTML string into a navigable structure with BeautifulSoup(string, "html.parser")
- 076 Crawlers and Automation — A Collector That Works by Itself Every DayLaunch a local practice site with python -m http.server
L1Network toolsStep 77–859 lessons
- 077 Socket Communication 1 — A TCP echo Server and ClientExplain in code that a socket is "a communication endpoint between program and program"
- 078 Socket Communication 2 — A Multi-Client Chat ServerExplain that a thread is "a flow of execution sharing memory inside the same process"
- 079 The Port Scanner — A Scout That Finds Open DoorsExplain, with a tool you built yourself, that the principle of port scanning is "attempting a connection (conn…
- 080 Introduction to Scapy — The Handmade Packet WorkshopRead from show() output that a packet is a multi-layer structure stacked as Ethernet/IP/TCP/data
- 081 Mastering nmap — The Standard Tool of ReconnaissanceChoose the right nmap option (-sT/-sS/-sV/-O/--script) for the situation
- 082 Project — Network Map and Risk AssessmentDefine the three terms — asset, attack surface, and risk — and apply them in practice
- 083 Wireshark 1 — Capture and Filters, the Microscope of NetworksPick a network interface and start and stop a capture
- 084 Wireshark 2 — Dissecting Protocols and Detecting AnomaliesFind the TCP 3-way handshake as three packets in a real capture
- 085 Project — HTTP vs HTTPS Comparison ReportOpen a plaintext web server locally and prove with a capture that requests/responses ride in packets letter fo…
L1Developer tools & projectsStep 86–9510 lessons
- 086 Git Basics — A Time Machine for CodeExplain Git's operating structure with the three concepts: repository, commit, staging
- 087 GitHub Remote Repositories and Your Portfolio — Both Backup and ShowcaseExplain the relationship between local and remote repositories, and the directions of push and pull
- 088 Branches and merge — Parallel Universes and MergingExplain that the true nature of a branch and HEAD is "an arrow pointing to a commit"
- 089 Markdown Documentation — Your Own Personal WikiWrite technical documents with the seven core pieces of markdown syntax
- 090 Project — XOR File Encryption/Decryption ToolDemonstrate XOR's restoration property (A ⊕ K ⊕ K = A) with Python's ^ operator
- 091 Linux Review — OverTheWire Bandit 0–10Connect to and exit a remote server over SSH (ssh user@address -p port)
- 092 SQL Basics 1 — Talking to a Database (CRUD)Enter sqlite3, create a table, and exit
- 093 SQL Basics 2 — JOIN and Python IntegrationJOIN two tables with an ON condition and query them
- 094 A Taste of Flask — Building Your Own Web ServerLaunch a server with two or more routes using Flask
- 095 Level 1 Comprehensive Project — Completing a Network Watchdog ToolBuild a finished product from a requirements specification alone