系统课程1730 小时

通用编程基础

先学会把问题写成输入、状态变化和输出,再理解程序如何使用系统与网络,最后进入具体语言和项目。

适合谁
第一次系统学习编程、还分不清代码和程序的读者
学完以后
能读懂一段小程序,说明它接收什么、改变什么、怎样验证结果。
课程目录

从基础到实战

建议按顺序学习。每一节都建立在前面的概念之上。

基础

先建立程序、变量、控制流、函数和运行环境的共同语言。

能把一个生活任务拆成输入、步骤、状态和输出。

  1. 1
    第一次写程序:从变量、判断到函数的 12 个共同概念

    用一个记账程序讲清源代码、运行、变量、类型、表达式、判断、循环、函数、对象、错误、测试和版本控制,并对照 Python、Java 与 JavaScript。

    48 分钟阅读
  2. 2
    电脑到底在做什么:从输入、内存到程序运行的第一张地图

    用一个文件处理任务串起 CPU、内存、磁盘、操作系统、进程和网络,帮零基础读者建立可排障的计算机心智模型。

    34 分钟阅读
  3. 3
    开发环境第一课:文件、路径、终端、环境变量与依赖到底是什么

    从打开一个项目文件夹开始,讲清目录、绝对与相对路径、终端与 Shell、命令结构、进程、端口、环境变量、PATH、依赖、包管理器和虚拟环境。

    36 分钟阅读
  4. 4
    命令行的第一套工具:目录、管道、重定向与退出码

    从路径和标准输入输出开始,学会组合命令、搜索日志、写安全脚本,并理解每条命令如何把结果交给下一条。

    36 分钟阅读
  5. 5
    Git 是什么:从三个状态到第一次提交与分支

    先用生活中的存档理解 Git、仓库、提交和分支,再完成一次安全提交、分支合并、冲突处理与误操作恢复。

    38 分钟阅读
  6. 6
    调试的完整闭环:从复现条件到最小修复

    建立可迁移的排障习惯:记录现象、构造最小复现、提出可证伪假设、用日志和断点验证,再补回归测试。

    35 分钟阅读
  7. 7
    列表、字典和集合:数据结构决定程序怎样查找和改变

    用通讯录和库存两个例子理解数组、链表、栈、队列、映射与集合,学会按访问方式选结构并写出复杂度理由。

    46 分钟阅读
进阶

用调试、测试、错误处理、网络和操作系统边界让程序可解释。

能解释一次请求或进程在哪些地方等待、失败、释放资源。

  1. 8
    测试从哪里开始:把应该能用写成可执行的证据

    解释断言、单元测试、集成测试、fixture、边界与回归,带着一个小函数和一个 HTTP 接口建立第一套测试习惯。

    36 分钟阅读
  2. 9
    错误处理与输入校验:让程序在坏数据面前保持可解释

    区分预期业务拒绝、程序缺陷和外部故障,设计校验顺序、异常边界、错误码、重试与日志,避免静默失败。

    45 分钟阅读
  3. 10
    浏览器打开网页经历了什么:DNS、连接、HTTP 与状态码

    用一次页面请求串起 DNS、TCP/TLS、HTTP 请求响应、Cookie、缓存和错误状态,学会在 Network 面板里定位慢与错。

    40 分钟阅读
  4. 11
    一次请求怎样到达服务器:DNS、TCP、TLS 与 Socket

    沿着浏览器请求拆解域名解析、连接建立、TLS、HTTP 与端口,练习用分阶段证据定位网络慢、超时和连接失败。

    47 分钟阅读
  5. 12
    操作系统给程序的三件礼物:进程、文件和权限

    从启动一个脚本开始理解系统调用、进程生命周期、文件描述符、路径、权限和信号,并完成一份可排障的 Linux 运行记录。

    43 分钟阅读
深入

进入对象协作、进程并发和更复杂的系统边界。

能指出一次并发任务在哪些地方等待、失败或丢失状态。

  1. 13
    类、对象与组合:把不断增长的业务规则放在正确的位置

    从订单折扣和通知渠道开始理解类、对象、封装、接口、组合与继承,练习把变化隔离在小模块中。

    48 分钟阅读
  2. 14
    进程、线程和异步:三种‘同时做事’的边界

    用图片处理与接口请求解释进程、线程、事件循环、并行和并发,学会按 CPU、IO、共享状态与资源上限选模型。

    47 分钟阅读
实战

先交付有输入校验、测试和版本记录的小工具,再把同一套边界扩展到可观测、可恢复的阅读服务。

完成一个可运行的小项目,并留下运行说明、失败案例和一次恢复演练。

  1. 15
    Python 小项目:从参数、文件到一个可复用的命令行工具

    带小白完成一个支出统计 CLI:参数解析、类型转换、CSV 读取、错误提示、模块拆分和可测试输出。

    52 分钟阅读
  2. 16
    测试从哪里开始:用 pytest 给小项目建立安全网

    从第一个断言开始,理解单元测试、夹具、参数化、临时目录、模拟依赖和失败诊断,把测试变成日常开发工具。

    47 分钟阅读
  3. 17
    计算机系统实战项目:带预算、限流、观测与恢复的阅读服务

    从 KBase 的 Markdown 目录出发,交付一个可观测、可限流、可取消、可恢复的阅读服务项目,并用证据证明容量、资源和故障边界。

    65 分钟阅读