中英对照拯救 ICS 课:第一个能跑的 Python,一路通到 AI
第一章 ICS 课上我到底在听什么?先把「课堂」立成一张图
如果你也正上着 ICS 课(ICS 的全称是 Introduction to Computer Science,计算机科学导论),最扎心的感觉大概是这样:老师嘴里一个接一个蹦英文词,binary、algorithm、data structure、loop、function……每个字单独听都懂,连起来却不知道这节课在讲哪、这些词跟哪些词是一伙的。
先松一口气:你听不懂,很可能不是因为笨,而是因为你手里缺一张「地图」。这门课不是一堆互不相干的名词,而是一条有固定顺序的线索。CS50x,哈佛那门官方明说「三分之二的学生从没碰过 CS」的计算机导论,是其中一个很有代表性的样板。把它的学期顺序摊开看,你会一眼认出你课堂上的每一步都落在哪一格。CS50x
图注:一门典型 CS 导论的大致顺序:先讲计算机怎么把世界表示成数字,再讲怎么一步步解题、用什么结构装数据,接着才落到 C/Python 这类编程语言,最后在课程末尾收进一节 AI。不同学校的 ICS 大纲完全不同,这只是参照坐标,不是铁律。
这条线上,你最该先抓住的一格是「数据表示」。因为它是理解后面一切(包括 AI)的根基,而且它的答案只有一句话:计算机底下只有 0 和 1。
CS50x 的 Lecture 0 就是这么开场的:计算机只会说 0 和 1,我们用 bit(二进制位,binary digit 的缩写)表示「开/关」,用 8 个 bit 拼成一个 byte 去表示一个数。那字母怎么办?于是有了 ASCII,一种把字母映射到数字的标准,比如字母 A 就被定成数字 65。图像又怎么办?每个像素(pixel)的颜色用红绿蓝(RGB)三个字节表示,图像不过是一堆 RGB 值的集合。CS50x
这里有个特别巧的对照,值得你亲手想一遍。同一串三个数字 72 73 33,如果被当文本读,恰好拼出三个字母。
图注:同一串 0/1 编码,喂给「字符读取器」读出的是 HI!,喂给「图像读取器」却是一种浅黄色。角色、图、声音、视频在最底层都是 0 和 1,差别只在于谁来解释它们。这条要记住,第五章会用它解释 AI 的输入。
现在回到你课上那些词:abstraction(抽象)是把一个大问题一步步拆小的过程;algorithm(算法)是一套解某问题的分步指令;data structure(数据结构)是存放这些数据的容器。你会发现它们各安其位地排在那条顺序线上,而不是孤零零该背的定义。
最后留个钩子:多数导论把这门课推到最后时,会留一整周给「AI」。CS50x 就有独立的一节 Artificial Intelligence,词面上摆着 Machine Learning、Deep Learning、Neural Networks、Large Language Models 这些名字。CS50x 问题来了:这一节课尾的 AI,跟前面那些二进制、算法,到底是什么关系?这正是整篇东西要替你填上的那个空。
第二章 光听懂不够——让一环真的跑起来
第一课上那些当名词听的「编程语言」,光理解是隔靴搔痒。你得亲手让其中一环跑起来,才会真的相信这件事。这一章的目标极小:在你自己电脑上装好 Python,并敲出第一行能输出文字的代码。
先回答最实际的疑问:装哪个版本? 去 https://www.python.org/downloads/,看页面顶部的下载按钮,认准上面标着的 Python 3.14.7(发布于 Aug. 5, 2026)。我 2026-09-08 去查的时候,3.14.7 就是官方标注的当前 stable(稳定正式版)。页面上同时排着 3.13、3.12 这些老数字,那是给有兼容性需求的老用户看的,你第一次装不用往下翻。另外页面上方还会看到一句「想帮忙测试 Python 3.15 的开发版吗?」,记住 3.15 至今还是 prerelease(预发布),官方连候选发布都还在轮换,千万别把它当正式版装。版本号是随时会变的活数据,你读到这里时,以 python.org/downloads 顶部此刻标的 stable 行号为准。python.org
图注:从下载页到第一行输出的五步。Windows 认 64 位安装器
python-3.14.7-amd64.exe,macOS 认.pkg(universal2 同时支持 Apple Silicon 和 Intel Mac)。图注数据对应 2026-09-08 抓取的官方下载页。
具体怎么选安装包?Windows 端的稳定入口写着 「Windows installer (64-bit)」,对应的就是 python-3.14.7-amd64.exe,几乎现在所有电脑都是 64 位,选它就对了;macOS 端点显眼的 Download Python 3.14.7,会得到一个 .pkg 文件,双击装进系统即可。装完,Python 会自带一个叫 IDLE 的小工具,双击它就能开始敲代码。
装好后开始第一行。打开你的终端(Windows 叫命令提示符或 PowerShell,macOS 叫终端/Terminal),输入 python3 回车,你会看到提示符变成 >>>,这就是 Python 的交互模式:凡是以 >>> 开头、每次敲一行的东西,都会立刻给你结果。这个「在提示符后一句句敲、立刻执行」的交互解释器(interactive interpreter),正是 Python 官方文档的说法。Python Glossary 现在,在这个提示符后敲你的第一行:
>>> print("Hello, world")
Hello, world
屏幕真的喷出了那行字,你就完成了「装上 Python 并跑出第一行」这个里程碑。print(...) 是 Python 的「打印函数」,作用是把括号里的字原样显示出来。装完如果在终端打 python3 却报「不是内部或外部命令/command not found」,多半是装的时候没装好 64 位版本,回头重装一遍即可。
这一章就到此为止,别再往下走。IDE(编辑器)怎么选、pip 怎么装包、venv 隔离环境是什么,这些工程话题现在统统不用管,先把「我能跑起来」这个正反馈拿到手,比什么都重要。
第三章 当名词的 if / loop / function,在代码里长什么样
现在你的 Python 能跑了。这一章把第一章地图上那几个当名词挂着的词,一个一个变成你能照打、能看到输出的代码。术语一律保留英文原名,中文学到的只是「直觉」,方便你对上课堂和教材。
变量与最基本的两种容器
第一章说过 abstraction,最小的一种抽象就叫 variable(变量):用 = 给一个名字装一个值,之后就能拿名字去算。
width = 20 # 把 20 赋给名字 width
height = 5 * 9 # = 是 assignment(赋值),不是数学里的"等于"
width * height # 用名字去算 → 900
注意 = 是赋值,== 才是比较「相等吗」,两个不能混。在交互模式里,赋值这行不会打印任何东西,它是把计算留到你真正用这个名字时才发生。如果拿一个从没赋过值的名字去用,会报 NameError。Python Tutorial
你写下的每个值,在 Python 里都是个 object(对象),int、str、list 是三种最常打交道的类型。它们的差别,其实一句话能讲清——int 整数想多大就多大(任意精度,跑 2**100 不会爆);str 字符串是不可变(immutable)的 Unicode 码点序列,也就是写好的文字排成一串后不能原地改某一格,想改只能整个换绑一个新字符串;而 list 是可变(mutable)序列,能把一串东西按顺序装进去,还能在原表上就地改。Built-in Types
图注:极简类型备忘。
str不可变(改要换新绑定),list可变(能在原表上 s[i]=x 或 append)。实用提醒:别拿 float 判绝对相等,0.1+0.2 不会恰好等于 0.3。
list 你后面会反复用到,先亲手照打一遍:下标(index)从 0 开始数,所以 square_numbers[0] 取到第一个元素 1;改第 3 格用 square_numbers[2] = 25;在末尾追加用 .append。
square_numbers = [1, 4, 9, 16]
square_numbers[0] # → 1(按下标取)
square_numbers.append(36) # 追加到末尾
print(square_numbers) # → [1, 4, 9, 16, 36]
提前埋个伏笔:一个 list 就是一串能按顺序取的东西,这个「能当容器装一行行东西」的直觉,第四章会直接拿它当地图上的 dataset(数据集)来用。
三种控制流:if 分支、for 循环、while 循环
课上你听到 conditionals(条件)、loop(循环),在代码里长这样。if 从上往下选第一条成立的分支执行:
x = 42
if x < 0:
print('Negative changed to zero')
elif x == 0:
print('Zero')
elif x == 1:
print('Single')
else:
print('More') # x=42,落到这里 → More
for 负责「按顺序把序列里的每个元素走一遍」。这里先认识 range,它生成一个等差数列,终点永不被包含。官方原样:for i in range(5) 会依次打印 0、1、2、3、4(5 不在里面)。
for i in range(5):
print(i)
# 输出: 0 1 2 3 4(每行一个)
while 则是「只要条件仍为真就一直重复」。官方的经典首示例是斐波那契:
a, b = 0, 1
while a < 10:
print(a)
a, b = b, a + b
# 输出: 0 1 1 2 3 5 8
缩进不是可选的排版,而是 Python 分组语句的方式:换行决定一句在哪结束,缩进决定哪些行属于同一个块(body)。上面 while 体和函数体的缩进都不是装饰。Python Tutorial
函数:把「输入→输出」打包
最后是 function(函数),它是你通向 AI 的关键脚手架。def 定义一个可复用的块:括号里声明输入参数(真实调用时叫 arguments),函数体做加工,return 把结果交还给调用处。
def fib2(n): # 返回一个 list:斐波那契到 n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a + b
return result
f100 = fib2(100) # 调用:把 100 喂进去
f100 # 输出 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
把 def fib2(n) 读成「给它一个输入 n,它还你一个输出的 list」——记住函数等于「输入换输出」这件事,第四章的 inference(推理)几乎就是它的放大版。
第四章 课堂末那节 AI,那些词到底在说什么
现在,你课堂进度条最后那节「AI」,终于可以摊开来讲了。先给你四个最常听到又被混用的词定个位:它们不是并列的四个同义词,而是一个套一个的范围。
Artificial Intelligence(人工智能,AI)是最大的圈,这门宽技术领域的总称;Machine Learning(机器学习,ML)是 AI 的一个子集,特点是从数据里学规律;Deep Learning(深度学习,DL)是 ML 里专门用多层神经网络学的那一部分;Neural Network(神经网络,NN)是构成 DL 的骨架。套在一起就是:AI ⊃ ML ⊃ DL ⊃ NN。IBM
图注:四个词是从大到小一层套一层的范围,不是并列。中间「深」(深度学习)指的就是神经网络藏了很多层:只有一层隐藏的叫浅网络,藏了不止一层、能自己从原始数据里挑特征的,才是深度学习。至于到底几层算深,各家说法不一,你只需记住「层多 + 自动找特征」这个直觉。
神经网络到底是什么
如果神经网络是骨架,它长什么样?一句话:它是一层一层格子串成的流水线。最左边是输入层,把数据放进来;中间若干隐藏层负责加工;最右边是输出层给出答案。每个格子带一个权重(weight,决定它对上游信号有多当回事)和一个阈值(threshold,判断门槛),只有当信号算下来超过阈值,这个格子才激活、把结果传给下一层,不够门槛就静默。最后输出层给出的就是预测。
dataset、example、feature、label:把数据说清楚
AI 不是凭空变魔法,它吃的是数据。Google 的 ML 词库给了这四个词最干净的定义。dataset(数据集) 是一堆原始数据的集合,最常见的形态就是一张表(电子表格)或一个 CSV 文件。example(样例) 是 dataset 里的一行。这一行的每一格按列分类:feature(特征) 是喂给模型当输入的那一列变量,label(标签) 是监督学习里这一行要它预测的「答案」。
看这张表就明白——这也正是你在第三章会敲的那个 Python list 的样子:
| 楼层数(feature) | 面积㎡(feature) | 建成年份(feature) | 售价(label) |
|---|---|---|---|
| 3 | 120 | 2015 | ¥345万 |
| 1 | 58 | 2020 | ¥179万 |
| 2 | 89 | 2018 | ¥284万 |
图注:教学示意图:一张表里,一行 = 一个 example;左侧若干列 = feature(输入),最后一列 = label(要预测的答案)。如果把最后一列整个摘掉,每一行就退成 unlabeled example(无标签样例),正好拿去给训练好的模型做预测。这张「row=example、列=feature/label」的表格直觉是教学重构,不是 google 词库逐字的表格。ML Glossary
数据要切成三份:train、validation、test
现在关键来了:一堆数据不能一股脑全喂给模型。你得先把它切成互斥的三份——training set(训练集)、validation set(验证集)、test set(测试集),一个样例只进其中一份。为什么要这么切?CS50x 那门导论第一课教过的一种直觉在这复用得上:你不能拿自己背过的卷子自评。
图注:数据→切三份→训练→验证/测试→推理的五步主流程。train 在带标签的数据上反复调参数,validation 在训练途中把关,test 用没参与训练的数据做最终考核,最后把训练好的模型拿去对新输入做预测,这一步叫 inference。
下面这张是从 Google ML Crash Course 官方课程页取的「好的切分长这样」示意,帮你把「一份数据集被切成三份互斥子集」看到眼睛里:

图注:一条原始数据集被垂直切成三份互斥子集:training(大块)、validation、test。图上没有比例数字,也不承担 train→infer 全流程,只负责说明「为什么数据要切片、三份各自独立」。MLCC
这三份各自干嘛?train(训练):在带标签(labeled)的例子上反复跑,让模型比较自己的预测和真实 label,按差(这个差叫 loss)一点一点修参数,直到在训练集上表现最好。validation(验证):在训练还没结束时,先拿没练过的数据初步试一下,防止模型把它背过的训练数据背到「过拟合」(overfitting,即记住训练数据却对没见过的数据预测不准)。test(测试):验证显示模型看起来不错后,再用一套从头到尾没参与过训练和调参的数据做最终考核。这三关都过后的,是一个能对新输入做预测的函数/模型。MLCC
训练 vs 推理:一个是「学」,一个是「用」
这一对词特别容易混。train / training(训练) 是「学」:拿带标签的数据,反复比对预测和答案、把误差一点一点调小,最终定下一整套参数。MLCC
inference / inference(推理) 是「用」:模型已经训练好了,现在给一个没有标签的新输入,让它吐出一个预测。回到第三章:你那个 def fib2(n) 函数,把 100 喂进去回来一个 list,这种「给输入、还输出」的形状,就是 inference 最朴素的样子——只不过训练好的模型里那套参数,是在成千上万条数据上「学」出来的,而不是人写的。所以一句话分清:train 是反复调参造出这个函数,inference 是把造好的函数拿来对新输入算一次。
第五章 原来第一天课,我就已经在学 AI 了
前面四章你可能越读越觉得分岔:ICS 课堂一个词,AI 一步一个词。现在把它们缝合起来。回头看第一章那张底图——你会发现,AI 的每一步,其实都在用你课堂前几周就学过的东西。
先看 binary(二进制)。第一章说过,字符是 ASCII 映射的 65、图像是三个字节一组代表的 RGB,一切在最底层都是 0 和 1。而第四章说的 AI,「喂给模型的输入」在最底层也正是那些 0 和 1 的编码——一个神经网络吃的数据,追到最下面不过是你在 ICS 第一课见的那些码点。所以「数据表示」不是一门独立的旧课,它是 AI 每次预测要用的数字表示形式。CS50x
再看 algorithm(算法)。第一章的定义是「解决一个问题的一步步指令」。而第四章的 train 那一步,正是一场「反复」——拿一个又一个 labeled example,比较模型预测和真实答案,按差一点一点更新参数,直到误差做小。这个「反复比较→更新」的循环,就是算法这两个字在 AI 里的落地。你第三章写的 while 循环体,恰恰就是这种「跑一遍、比一次、改一点」的反复块的最小代码形态。
然后是 data structure(数据结构) 和 function。你第三章亲手造的那个 Python list,按顺序装着一行行数据——在第四章的语境里把它读成「一个迷你 dataset,一行是一个 example」,第几格就是取哪一列,是完全顺的。这里要诚实地说清楚:这是教学类比,Python 的类型系统里 list 并没有「表格/行」的语义,只是把 list「按下标取、追加」这套能跑的直觉拿来本地演练 AI 的 dataset。Built-in Types
图注:「缝合桥」——课堂上学的二进制、算法、list、函数,换成 AI 的名字就是模型输入、训练调参、迷你数据集、推理算子。两列之间不是两套新知识,是你已经跑过的那台电脑上的同一批东西。
还有个提醒值得记住:决定一个模型成不成,更多时候不取决于你用多酷炫的算法,而在于数据本身的质量和大小。Google 那个训练流程模块开篇就一句话 Data trumps all——数据大于一切。MLCC
所以回到那种「ICS 课跟 AI 是两回事」的错觉:二元、算法、数据结构、函数,不是与你 AI 无关的老古董,它们正是 AI 每次预测用的数字表示、训练时反复执行的更新逻辑、装着几行样例的容器——所谓 AI 术语,很多不过是把你已经跑过的 ICS 底料换了个更炫的名字。
第六章 下节课还跟得上吗?一张按周能走的路
读到这里你已经拿到了能听懂课堂、能装能跑 Python、能对上 AI 词的底子。剩下的问题是:这门课下节课还在继续,我怎么不掉队?给你一份按周推进、全部免费的官方路线,照着走就行。
图注:按周行动包。三周三条主线并进:听不懂课堂就回 CS50x 补课,学完语法就回 python.org 官方文档重跑最小代码,学 AI 词就翻 Google 官方词库与 Crash Course 对原句。全部官方免费入口,别用盗版转载。
具体怎么用。第 12 周:回到第一章那张 CS50x 地图,它是免费的随进度课程,不听这课的也可以一节节补。第 23 周:用 https://docs.python.org/3/tutorial 官方 Tutorial 巩固我们刚敲过的 variable、if、for、while、function、list,输出都是官方复核过的,照打即可。第 4 周起:把 Google 的 Machine Learning Glossary 和 ML Crash Course 当对照字典,把 dataset、feature、label、training、validation、test、inference 这些词,逐一翻到官方原句上对上。
三件小事让你续学不悬空:第一,中英对照你已经会了,每个概念都留着英文原名,课堂教材是英文你也能对上中文直觉。第二,你能用一个 Python list 演练迷你 dataset,亲手把「一行 = 一个 example」的感觉做出来。第三,Python 的版本号会随时间变,任何时候装都以 python.org 顶部当前的 stable 行为准,别用预发布或已过时的版本。python.org
回头看第一章那张底图:当时它只是帮你认识课堂的一句话地图;现在你亲手跑过中间的每一步,这张图就真正成了你自己的坐标系。ICS 课不再是听天书,而是一条你已经有地图、有绳梯、能一格一格往上走的真实的路。
参考文献
本专题引用的核心官方资料如下,建议深入学习时阅读原文(均为免费官方来源,避免第三方转载):
- Download Python(python.org 官方下载页) — https://www.python.org/downloads/
- The Python Tutorial(Python 3.14 官方文档) — https://docs.python.org/3/tutorial/
- Built-in Types(Python 3.14 官方 Reference) — https://docs.python.org/3/library/stdtypes.html
- Python Glossary(Python 3.14 官方词表) — https://docs.python.org/3/glossary.html
- CS50x 2026 — Introduction to Computer Science(Harvard,CS 导论代表性样本) — https://cs50.harvard.edu/x/syllabus/
- AI vs. ML vs. DL vs. Neural Networks(IBM 概念说明,仅取通用定义) — https://www.ibm.com/think/topics/ai-vs-machine-learning-vs-deep-learning-vs-neural-networks
- Google Machine Learning Glossary — Fundamentals — https://developers.google.com/machine-learning/glossary/fundamentals
- Google ML Crash Course(Datasets, generalization, and overfitting 模块) — https://developers.google.com/machine-learning/crash-course/overfitting