CS106L: Standard C++ Programming, Special Edition

发布时间 2023-05-16 22:36:33作者: 枫让泽戌

课程内容涉及 C++ 五大主题:C++ 介绍、Stream 和 Types、STL 四大模块、OOP 面向对象、高级特性(RAII、多线程、元编程)。本系列整合了 CS106L 课程公开的资料,系统完整的涵盖了 C++ 核心内容,方便学习。搭配《C++ Primer》,一起享用更佳!

C++ 课程自学总结

CS106L

  • 学习时间: 刷课一周,复习4天
  • 课程内容:CS106L是Stanford开设的C++语言课程,主要介绍了C++的现代特性,在基础语法上并不花时间,所以需要有一定的语言基础。CS106L是CS106B/CS106X的companion class,CS106B是以C++为基础的计算机导论课,讲了一些数据结构(?,笔者没上过,有误请指正?),只讲一些的C++,所以CS106L可以被视为一门正儿八经的语言课,而106b/x更多关注于语言以外的内容。
  • 适合学生:没有其他的语言基础的话学起来会相对更吃力一点,推荐有其他类C语言基础的同学上。Java和C++还是挺像的,class,operator,inheritance等部分和Java基本一致,只不过在语法上有所出入;Python的话和C like的语言就差异比较大了?学习C++之前还是建议学一学C,一些比较low level的部分基本与C一致

CS106L Standard C++ Programming

AUT AP1400-2

  • 该课程没有课程主页,只有GitHub上的作业repo:aut courseworks (github.com),但已经足够
  • 对于106L作业质量不佳的情况,笔者选择去做AUT的AP1400-2,但是这个coursework有一定的门槛,需要一点Docker的知识,看懂Dockerfile即可,但是不会也没事,直接手动build也行,可以加个AP1400-2的交流群,群主很热心,群文件里有环境配置的文档(感谢群主大大??)
  • 作业质量: 说实话AP1400-2的6个HW是我目前为止做的最舒服的HW,没有很长的spec,我做过AP1400-2,那里的coding很纯粹。 实现的东西很简洁也常见,但触及到的C++特性却基本上包含了笔者在106L以及Programming notes学到的内容,非常好的上手体验。每个HW需要花的平均时间大致为两到三天(笔者尽量多去写新特性,所以花费的时间可能比大部分人多)
  • HW具体内容:
    • 1.HW1相对比较无聊,实现的是一个algebra的库,用到的基本上都是线代的知识,虽然笔者做完了HW1,但还是只建议做HW1的一半,做一半大概就能熟悉了大致的实现过程,剩下的基本就是数学的加加减减
    • 2.HW2实现的是一个中心化的加密货币交易过程,里面一些概念相对比较难理解,但是基本上实现的东西还是不难的,最后一个mine的部分spec描述的不清楚,交流群的老哥也没去实现
    • 3.HW3实现的是一个BST,可能是笔者学DS过的时间比较久,写的比较磕磕绊绊,当然也可能是因为C++的memory allocation比较麻烦,笔者之前用Java实现的时候比较顺畅。虽然如此,但HW3是笔者收获最多的一个HW,个人认为最值得一做
    • 4.HW4实现的是uniquePtr和sharedPtr,接触的是template class,比较简单,UniquePtr和SharedPtr有非常多相似之处
    • 5.HW5接触的是继承和多态,应该是6个HW里最简单的,几个小时就可以做完
    • 6.HW6是用STL来解决四个问题,第一个问题接触到的functor很不错

Looking Ahead

streams abstraction
stringstream
state bits
i/o streams and buffering
[CS 106B Friday]file streams and the Stanford library
types:type inference,structures,initialization
error-checking and implementing simpio.h
manipulators overloading stream
sequence containers

Streams