学习目标:
C++是一门复杂性很高的语言,这既体现在为处理不同粒度而衍生的纷繁复杂的语法,也体现在为配套不同语言机制(面向对象,模板等)而设计的各种规则。虽然这些复杂性让很多初学者望而生畏,但确实都是为了写出极致性能的代码而不得不做出的妥协。C++标准库中为了优化代码性能,各种C++语言层面的技巧都得到了广泛的应用,以至于C++语言的复杂性leak进了标准库中。作为C++ app的开发人员,竟然需要学习如何正确地使用标准库(e.g. Scott Meyers甚至写了<Effective STL>来提倡best practice for using STL)。
正确并且高效地使用STL几乎等于理解STL的实现方式。比如说,vector / map / unordered_map中当容器扩容/删除元素时,element iterator有时被invalidate而有时没有。与其记忆纷繁复杂valid / invalid的规则,不如自己根据STL的实现自己推导。
这个读书小组旨在理解STL的各种容器的实现细节:一方面加深小组成员对STL的理解,一方面提高小组成员阅读源代码的能力。
学习方式:
个人学习+小组讨论。本读书小组以Clang C++ impl为基础,分为两部分学习:前半部分由组长带大家复习C++语法/阅读较为简单的标准库src, 后半部分由学员阅读STL代码并present自己的理解。
1)学习任务:前半部分由组长准备学习材料;后半部分每周由学员作报告,梳理STL不同容器实现细节,分享心得。
2)每周报告:轮流由一位组员做报告,梳理重点内容,分享心得。
3)讨论答疑:每周报告后进行小组讨论,平时鼓励随时在微信群中交流,疑难问题也可以向高级会员群求助,助教会在期中和期末进行答疑。
4)表现打分:领队在学习结束后根据平时出勤、主讲表现、讨论等等评测所有小组成员。
其他:
1) 学分制:本期学习小组计入Qishi Credit(学分),为2个学分(请前往此处了解琪石综合评分)。
2) 打分制:学习小组临近结束,领队会给所有参与的同学做一个评估、打分。
学员组成:
助教:一名(已到位)
领队:一名(已到位)
组员:8人(含领队),不限专业,但要求对技术有热情,爱表达爱提问的,有独立思考和钻研的能力
报名要求:
注册并登录陆琪石网站https://www.qishicpc.com, 在Activities中选择进行报名。
正式组(免费):(需要面试才能进入)
正式组仅限高级会员和外卡会员报名(外卡购买详见此处,费用为50美元,有效期为365天,大多数付费活动五折优惠)。报名时请附上自己的简历和Cover Letter (简单说明为什么感兴趣、每周可投入时间等)。
旁听组(收费):(缴费即进场)
旁听组对所有会员开放,报名费一旦缴费成功确定报名,报名费概不退还。
课程时间:
2/11/2023 - 4/8/2023, 共九周
琪石学分: 2
部分学习大纲:
1)C++ object under the hood: how an object is created and destroyed
2)<type_traits>: what is SFINEA
3)<algorithm>
4)<memory>: how smart pointers are implemented
5)<vector>
6)<set> / <map>
7)<unordered_set> / <unordered_map>
8)<deque>
9)<list>
学习资料:
C++ lib implementation: https://opensource.apple.com/source/clang/clang-800.0.38/src/projects/libcxx/include/
This activity has full participants or has passed registration deadline.
...
Activity type: OnlineStudyGroups
...
Announce date: Sept. 23, 2022
Registration deadline: Jan. 15, 2023
Start date: Feb. 11, 2023
End date: April 8, 2023
...
Leader: Not disclose
Maximum participants: 8
Maximum Applicants: 30
9 people already applied
...
This activity is free
Copyright 2020 by Flash Kick In Consulting Inc. All Rights Reserved.