CS106L: Standard C++ Programming

课程简介

  • 所属大学:Stanford
  • 先修要求:最好掌握至少一门编程语言
  • 编程语言:C++
  • 课程难度:🌟🌟🌟
  • 预计学时:20 小时

我从大一开始一直都是写的 C++ 代码,直到学完这门课我才意识到,我写的 C++ 代码大概只是 C 语言 + cin/cout 而已。

这门课会深入到很多标准 C++ 的特性和语法,让你编写出高质量的 C++ 代码。例如 auto binding, uniform initialization, lambda function, move semantics,RAII 等技巧都在我此后的代码生涯中被反复用到,非常实用。

值得一提的是,这门课的作业里你会实现一个 HashMap(类似于 STL 中的 unordered_map), 这个作业几乎把整个课程串联了起来,非常考验代码能力。特别是 iterator 的实现,做完这个作业我开始理解为什么 Linus 对 C/C++ 嗤之以鼻了,因为真的很难写对。

总的来讲这门课并不难,但是信息量很大,需要你在之后的开发实践中反复巩固。Stanford 之所以单开一门 C++ 的编程课,是因为它后续的很多 CS 课程 Project 都是基于 C++的。例如 CS144 计算机网络和 CS143 编译器。这两门课在本书中均有收录。

课程资源

资源汇总

@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS106L - GitHub 中。