A Reflection on CS168

2026/4/29 627 words 3 min read

回顾

其实,在最开始学习 Computer Network 的时候,摆在我面前的选择有两个:
一个是 Stanford 的 CS144,另一个是 UCB 的 CS168。 起初,我是更倾向于 CS144 的。一方面,我本身主要在学习 C++。另一方面,这门课也被认为是学习 modern C++ 的一个很好的实践路径。
不过比较遗憾的是,当时由于环境配置等各种问题,始终没有顺利推进下去。
后来我看到了 CS168 sp25 的相关资料,发现它在自学友好性上做得非常好。当然,这里面也多少有一些怠惰的成分——我选择了一条难度相对更低、更容易启动的路径。
现在我完成的内容就都放在这个 repo 了。同时在这里推荐一个糅合 CS144 和 CS168 的自学者的 DIY 路径: NetworkDIY
那么现在我说一下我学习这门课程的感触。
这门课程的 Textbook 编写的非常好,整体风格明晰、简洁,讲解层次分明,没有刻意堆砌术语。而且配合着精美的图片,所谓“A picture is worth a thousand words.”,确实诚不我欺。
其次就是它把代码框架准备成 zip 文件,方便解压和下载。其中要完成的内容也在 project 部分有很详尽的解读,所以其实要完成的代码量不大,很适合入门。
我个人感觉设计最好的部分是 project2,它从 static route、forwarding、advertisement、Bellman-Ford update、timeout、poison、split horizon、triggered update 一层层加上去。官方还提供 simulator,让学习者可以看到可视化的网络。这个我觉得在任何一门课程中都可以说是一个优点,因为很多时候抽象的内容需要有一个直观的展示来让人建立直觉。

感谢

最后还是老生常谈,我很感谢UC Berkeley 的教授和研究团队能够开放这门优质的课程。
尽管在全球化的今天,许多课程与资料已经以不同形式对外开放,但在现实中,优质的教育资源依然在很大程度上集中于少数机构之中。正因如此,将完整课程无偿开放,使世界各地的学习者都能自学,本身就是一件难能可贵的事情。对此,我心怀由衷的敬意。