Chapter ICS 划重点10 topics

CS 划重点

10 个主题,从命令行到数据库。把「读懂代码、改得动代码、知道程序在跑什么」打牢。

§ 1

提问的智慧

把'提问'放在所有 CS 知识的第一位。读完之后,向 AI 提问、向人提问都会更有章法。

学到什么程度

通读一遍 Github 经典文章《How To Ask Questions The Smart Way》。重点是学会:如何描述问题、如何给上下文、如何展现你已经做过的尝试。

收益不止是技术论坛。AI 时代,提示词提问本质是同一件事,给足上下文、说清意图、展示你已排查的步骤。

§ 2

环境、工具与命令行

以 MIT Missing Semester 为主,扩展《命令行的艺术》。这是 VibeCoder 跨过 vibe coding 阶段的第一道门槛。

需要掌握的核心模块:

学到什么程度
  • Git / Version Control。分支、merge / rebase、推送、版本回退。能在终端里独立操作,不是 AI 帮我点按钮
  • SSH。公钥/私钥原理,能在终端独立连上 Linux 服务器,知道连接过程中发生了什么。
  • Tmux。终端复用器。能在服务器上跑进程、detach / attach 切换会话。
  • Shell。Linux 哲学:每个工具做一件事,管道串起来。能写出 ls | grep epub | wc -l 这样的命令链。
  • Vim。兜底编辑器。i 进入、esc 退出、:wq 保存退出、:q! 强退。
  • Makefile。知道 target / dependency / command 三个概念,不需要写复杂构建。
  • Docker。理解 image 与 container 的区别。能跑起容器、写 Dockerfile。
  • 环境配置。AI 配环境时看它的 CoT,能看懂在做什么就行。
§ 3

编程语言

C / C++ / Python / Java 等大学基础课会教的内容。目标不是学新语言,是*读懂*不同范式的代码。

学到什么程度

知道所有编程语言都有的概念:数组、循环、判断、函数。能读懂常见语法。

  • Python 是解释性语言。慢,先变成字节码再用解释器逐条执行,没有直接编译成机器码。
  • C / C++ 是编译型。直接编译成机器码。
  • OOP(类、继承、多态)知道概念就行——这是经典基础,但实际工程中常常被过度使用。

不用重新学。选哪种语言取决于,不是语言本身。

§ 4

数据结构与算法

所有代码人绕不过的部分。但不应试的话,*不是*手撕 LeetCode 难题。目标:AI 写完你*抄一遍*,至少看懂在写什么。

必须会(数学基础)
  • 模运算(a * b) % 9 = ((a % 9) * (b % 9)) % 9 这种基本法则。
  • 时间复杂度 / 空间复杂度。必须学会。O(n)、O(n²)、O(n log n) 是常用档位。
  • 摊还分析。了解概念:有些操作单次很贵但平均下来很便宜。
扫一眼就能过的
  • 表、栈、队列、优先队列,知道有这些东西,大概是啥,不用会写。
  • 算法设计思路:贪婪、分治、动态规划、搜索、排序、树、图
补充:找工作的同学

想面试转行的同学需要自己刷 LeetCode、上点难度。不转开发的话,知道概念即可。

§ 5

软件工程

要懂的不是技术细节,是*术语*。遇到项目里有人提到这些词,能在 30 秒内讲清楚是什么。

学到什么程度
  • 黑盒 / 白盒测试。黑盒不关心内部逻辑,只测输入输出;白盒看代码内部来测。
  • Unit Testing。一次只测一个小功能(一个函数、一个模块)。
  • CI / CD。每次提交自动跑测试 / 自动部署。
  • A / B Testing。同时上线两个版本,看哪个效果更好。
  • Infrastructure as Code。写配置文件告诉服务器该装什么,不手装。

当词典查。做项目时再深入。让专业开发去搞。

§ 6

体系结构、操作系统、系统

这一节的核心是*会用 GDB 跟 AI 一起 debug*。理解「每条指令只做一件事」就够。

学到什么程度
  • 体系结构。CPU 只有少量寄存器,每条指令只做一件事(改一个寄存器的值或一块内存)。编译器把高级语言翻译成这些基本指令。
  • 边界意识。知道计算机能写什么不能写什么。要浇花得有根线连到机械臂上,计算机自己不会长出手。
  • 进程 / 线程 / 内存。一个进程有一块内存,里面可以有很多线程。线程共享内存,但各自有独立的寄存器。
  • 二进制、电路、汇编。知道基本概念。
  • 文件系统、IO、死锁。知道在干啥。
并行与分布式
  • Raft。分布式共识算法。核心要求是至少一半以上服务器在线系统才能工作。
  • 并发编程。deadlock、各种 lock、multithread、context switch。
  • 编译原理。上下文无关语法:你可以挑出其中一小段,只要这段本身符合语法规则,外面的东西不受影响。

知道 Raft 的「过半存活」原则、知道并发经典问题。不需要自己实现分布式系统或编译器。

建议
实践方法
写点代码然后用 GDB 跟 AI 一起学,看里面发生了什么。AI 不一定能直接操作 GDB,你操作完截图问它就行。
§ 7

计算机网络

了解网络结构与协议通信方式。实践:装 Wireshark 抓包。

必须会的核心概念
  • TCP vs UDP。TCP 可靠(有重传),UDP 快速(不保证送达)。
  • 丢包率、延迟、带宽。三个指标知道是什么、怎么影响体验。
  • IPv4、IPv6。知道有两个版本,IPv6 地址更长。
  • 端口号。同一个 IP 上不同服务的区分方式。
  • 局域网地址10.x.x.x192.168.x.x 是经典段。
学到什么程度

用 TCP 写一个小聊天程序,能和另一台机器(或同一台机器的另一个端口)建立连接、互相发消息。能通就算过关。

实践方法
装一个 Wireshark,发一个请求抓包看里面发生了什么。一个包可能只有 1000 多字节,每个包都可能会丢,程序要设计得即使丢包也不该直接出问题。
§ 8

数据库系统

会用就行。不需要深入数据库引擎实现。

学到什么程度
  • CRUD。增删改查基本功。
  • 索引。为什么有索引查询就快(O(n) 变成 O(log n) 或 O(1))。
  • ORDER BY。排序;多列排序是第一列相等再看第二列。
  • Group By。分组聚合。
  • 聚合函数。求和、计数等。

能用 SQLite 写点小练习,知道这些操作在底层大概是怎么执行的。

§ 9

Web 开发

Web 开发的最小可读懂面:HTML 负责结构、CSS 负责样式、JS 负责交互,再加一个前端框架(React 或 Vue)。

学到什么程度
  • 三件套。CSS / HTML / JS 各自负责什么(结构、样式、交互)。
  • 一个前端框架。React(生态大、复杂)或 Vue(简单一点)。

AI 时代不需要自己从零手写,但要能看懂框架生成的代码,知道组件、状态、路由这些基本概念。

§ 10

数学相关

偏工程的可跳过。希望和各种算法打交道的、CS 科班还是得学。下面是数学相关需要知道的核心点。

扫一眼
  • 微积分。导数 = 变化率;积分 = 累积。能算基本求导 / 积分(比如 x³ 积分是 1/4 x⁴)。
  • 线性代数。找 3B1B 视频看线性变换。
  • 信息论。编码、压缩、通信;信息熵 H(X) = -Σ p(x) log p(x)
  • 图论。无向图、有向图、连通性、最短路、树、环。
  • 密码学。对称 / 非对称 / 签名 / 密钥交换。知道公钥私钥和对称加密的区别,不需要自己实现。
  • 信号与系统。傅立叶变换基本概念:信号拆成不同频率正弦波叠加。
  • 图形学。三角形是渲染最低单位;3D → 2D 是投影。