cs-self-learning/docs/编程入门/CS106L.md
2021-11-30 23:48:07 +08:00

26 lines
No EOL
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CS106L: Standard C++ Programming
## 课程简介
- 所属大学Stanford
- 先修要求:最好掌握至少一门编程语言
- 编程语言C++
- 课程难度:🌟🌟🌟
- 预计学时20小时
我从大一开始一直都是写的C++代码直到学完这门课我才意识到我写的C++代码大概只是C语言 + cin/cout而已。
这门课会深入到很多标准C++的特性和语法让你编写出高质量的C++代码。例如auto bindinguniform initializationlambda functionmove semanticsRAII等技巧都在我此后的代码生涯中被反复用到非常实用。
值得一提的是这门课的作业里你会实现一个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)中。