留学学业指南鱼之跃 · 按学校规则查
课程

斯坦福 CS106B《编程抽象》:106A 之后,真正开始写「结构」

斯坦福CS106B编程抽象课程
所属课程:编程抽象(CS106B)· 斯坦福 · 本科 · 计算机科学 查看课程页 →

斯坦福 CS106B《编程抽象》是 CS106A 之后的第二门编程课,用 C++ 讲抽象、递归与数据结构;学校官网没有公布考核比例,评分可选字母等级或通过/不通过。

课程官网(学校官网):https://bulletin.stanford.edu/courses/1056451

CS106B 是一门什么课?

一句话:这门课从「会写代码」走到「会设计程序结构」——用 C++ 讲抽象、模块化、递归、数据结构与复杂度入门。

这是斯坦福大学(Stanford University)工程学院的本科课程,课程代码 CS106B,英文名 Programming Abstractions,中文通常叫「编程抽象」,也常被称作「斯坦福第二门编程课」。学校官网标注课程状态为 Active(在开)。

学校官网的学分写法是 Units Min 3 / Max 5,即可变区间 3–5 units;具体取值以学生选课登记为准。

从课程描述看,内容分几块:

整门课的主线是「抽象」:学的不只是语法,而是怎么设计出别人能直接用、自己也好维护的代码。递归是全课的核心思维工具,也是最容易卡住的地方;栈、队列、集合这类「容器」是第二门编程课的标配;链表、树、图让你第一次直接面对指针和动态结构;复杂度分析在这里只是入门,但会改变你写代码的方式。

和国内数据结构、程序设计课有什么不同?

最大的差别是:国内课常以理论讲解加手写算法为主,这门课以实现和接口设计为中心,要求把东西真正写出来并跑通。

考核怎么算?

学校官网只写了评分方式:可选字母等级(Letter),或 Credit/No Credit(通过/不通过);没有公布作业与考试的比例和构成。

学校官网的课程页在 Grading 一栏写的是 ROP - Letter or Credit/No Credit。除此之外,没有写作业、考试、项目各占多少,也没有写有没有期末。

从课程性质看,这类课大概率以系列编程作业累加为主,可能含期末机考或大项目收尾;但这是推断,学校官网没有给出任何比例,本文也不给具体数字。实际构成以课程网站大纲为准。

这个结构意味着两件事:第一,评分方式可选,不代表要求变低——项目作业仍要按规格完成;第二,比例不公开,就更不能按「期末突击」的思路准备,平时的作业和代码质量才是主要依据。

先修要求是什么?

学校官网写明的先修只有一条:CS106A 或同等水平(Prerequisite: 106A or equivalent)。

除此之外,学校官网还列出:

实际需要的基础,是会一门语言的基本控制流与函数(任意语言都可以过渡),C++ 语法会在课内从头教;零基础直接上会明显吃力。学校官网没有说明「equivalent」的具体认定标准,也没有规定必须学过哪种语言。

适合谁:已经学过一门入门编程课、想系统建立数据结构与递归思维的同学;打算继续修 CS107 等系统类课程的同学;转专业到计算机方向、想检验自己是否适合这条路的同学;国内已学过 C/C++ 和数据结构、想看看海外怎么教这些内容的同学。零基础的同学需要先补足 106A 同等水平,不建议直接上。

学完能做什么?

课程描述里的能力点可以归成五组:数据抽象与模块化、面向对象、基础数据结构、递归与递归数据结构、复杂度入门;核心是能设计并实现结构清晰的程序。

具体包括:

这些是课程描述与课程结构推出来的能力,学校官网没有另列「学习成果」条目。往后续走,这门课是算法课、系统编程课以及技术面试基础题的底子;学校官网也把 CS 107 / CS 107E 列为后续课。

难点与常见挂因

这门课难在「想」而不在「背」:递归要换一种相信方式,回溯要同时管状态和撤销,指针错误常常直接崩溃。

为什么中国学生容易在这里卡?

卡住之后会发生什么?

递归为什么是第一道坎?

递归和人的直觉相反:人习惯「一步一步把每件事做完」,递归要求你「假设子问题已经做完,只处理当前这一层」。第一次接触的人,会在脑子里把每一层都展开,越想越乱;真正写代码时又忍不住去跟踪每一层,结果把递归写成了循环。

这个坎过不去,后面的树、图、回溯都会受影响:它们都是递归结构,都是「把大问题拆成同类小问题」。所以递归不能靠背例题,要靠手画调用树、靠小输入逐层跟踪,直到你能解释「为什么可以相信子调用」。

具体难在哪:六处高频卡点

  1. 递归的「信任跳跃」。 写递归时要相信子调用已经正确,而不是在脑子里把每一层都展开;这个思维转换对多数人是第一道坎。
  2. 回溯类题目。 先试一条路,走不通就退回换一条;它要同时管状态、选择和撤销,任何一处没处理好,结果就不对。
  3. C++ 的内存与指针。 学校官网说「covering its basic facilities」,但动态结构(链表、树)要求你清楚对象在哪、谁负责释放;出错常常表现为崩溃而不是报错。
  4. 数据结构的取舍。 同一个需求用数组、链表、树、哈希各能做,难点不是写出来,而是说清为什么选这个。
  5. 抽象与实现的分离。 要学会只依赖接口写代码,这和「能跑就行」的习惯相冲突;接口没设计好,后面越写越乱。
  6. 复杂度分析。 要把代码翻译成数学量级,对数学表达不熟的同学会觉得抽象;只会背结论,遇到新代码就估不出来。

常见挂因与对应动作

留学生特别提醒

中国学生最容易在三处吃亏:把「能跑」当「写好」、英文规格读不全、以及不好意思去答疑。

怎么准备?

准备的关键是递归和指针:手画调用树、写清基础情形和递归步骤;遇到崩溃用调试器,不要靠猜。

中英术语速查

关于我们

鱼之跃做在读留学生的学业支持,服务分两块,界限很清楚:

辅导=老师授课:由 QS 前 200 院校的硕博老师把课程的知识点、推导链、作业要求讲透,按对口专业配课;覆盖同步辅导、论文辅导、考前辅导、预习。

护航=你的学业管家:排计划、理材料、理流程这些杂事都替你打点好,该提前准备的他先想到;你只管学,有事随时找,需要时都在。同地区的留学学姐,熟悉你所在学校的节奏。

学术问题上的申诉,我们做材料梳理与流程陪跑,不代写、不代考、不碰学术诚信边界,也不承诺任何成绩。

课程官网与核对说明

课程官网(学校官网):https://bulletin.stanford.edu/courses/1056451

本文涉及学校、课程代码、学分单位、课程内容、先行课与同时修读要求、评分方式的事实,均来自上述学校官网课程页;核对时间为 2026-10-29。文中「与国内课程差异、考核结构推测、先修判断、难点、适合谁、怎么准备、学完能力」等属于基于课程内容的分析与学习建议,不代表学校官方要求。

← 学业指南首页课程库