# 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编译器。这两门课在本书中均有收录。 ## 课程资源 - 课程网站:http://web.stanford.edu/class/cs106l/ - 课程视频:https://www.youtube.com/channel/UCSqr6y-eaQT_qZJVUm_4QxQ/playlists - 课程教材:http://web.stanford.edu/class/cs106l/full_course_reader.pdf - 课程作业:具体内容见课程网站,我做的时候一共是两个: - (1)实现一个WikiRacer的小游戏 - (2)实现HashMap ## 资源汇总 我在学习这门课中用到的所有资源和作业实现都汇总在[这个Github仓库](https://github.com/PKUFlyingPig/CS106L)中。