网易云 微专业C++系统工程师
一、学前基础
1.曾经学过某种编程语言(C语言最佳)
2.了解基本的变量、类型、作用域、循环和控制流程;了解基本数据类型(整数、浮点、字符串、数组等)
3.知道如何编译和连结一个可运行程序
4.了解面向对象更佳(类、封装、继承、多态)
请在开班前自行预习免费基础课程:《程序设计入门—C语言》、《C语言程序设计进阶》
二、课程介绍
2.1 C++面向对象高级编程(上)
课程时长:3周
课程负载:2.5-3.5小时每周
内容类型:视频 文档 随堂测验 讨论
课程分类:程序设计
编程基础 编程语言 技术开发 C++本课程涵盖,C++对象模型、关键机制、优良编程风格、内存管理,让学员从一无所知到具备大家风范,让学员对于C++有更深入的理解和体会,彻底掌握C++的面向对象与底层运作。
2.2 C++面向对象高级编程(下)
课程时长:2周
课程负载:2-3小时每周
内容类型:讨论
课程分类**:程序设计
编程基础 编程语言 技术开发 C++C++语言博大精深,同时也暗藏各种陷阱,稍有不慎,便会错误百出。本课程主要分析C++开发过程中的常见陷阱,它们的幕后原理,以及如何避免这些陷阱的最佳编程实践。
2.3 STL与泛型编程
课程时长:5周
课程负载:3-5小时每周
内容类型:视频 文档 随堂测验 富文本 讨论
课程分类:程序设计 编程基础 技术开发
C++标准库是C++程序员不可或缺的生产工具和技术宝库。其中的大体量成份,我们称为STL (Standard Template Library/标准模板库),STL之外则是若干独立个件或用来与STL搭配的小零件。
2.4 C++设计模式
课程时长:3周
课程负载:2.5-3.5小时每周
内容类型:视频 文档 随堂测验 讨论
课程分类:程序设计
编程基础 技术开发
C++设计模式(Design Pattern)是软件开发设计经验的概括与提炼,它使得软件开发人员可以方便地复用已经被证明成功的软件设计方法与思想,是提高程序可读性、可维护性和可扩展性最有效的手段,也是当代优秀软件工程师必备的一项素质。课程从设计之道(松耦合设计思想)
和设计之术(重构与迭代式设计)两方面,通过大量的代码实践与演练,深入剖析经典GOF 23种设计模式。
三、课程体系
章节 | 内容 | Notes |
---|---|---|
(1)C++面向对象高级编程(上)(必修) | 1.1 C++编程简介 1.2 头文件与类的声明 1.3. 构造函数 1.4. 参数传递与返回值 1.5. 操作符重载与临时对象 1.6. 复习Complex类的实现过程 1.7. 三大函数:拷贝构造,拷贝复制,析构 1.8. 堆,栈与内存管理 1.9. 复习String类的实现过程 1.10. 扩展补充:类模板,函数模板,及其 1.11. 组合与继承 1.12. 虚函数与多态 1.13. 委托相关设计 |
Note1 |
(2)C++面向对象高级编程(下)(必修) | 2.1. 导读 2.2. Conversion Function 2.3. non-explicit one argument constructor 2.4. pointer-like classes 2.5. Function-like classes 2.6. namespace经验谈 2.7. class template 2.8. Funtion Template 2.9. Member Template 2.10. specialization 2.11. 模板偏特化 2.12. 模板模板参数 2.13. 关于C++标准库 2.14. 三个主题 2.15. Reference 2.16. 复合&继承关系下的构造和析构 2.17. 对象模型:关于vptr和vtbl 2.18. 对象模型:关于this 2.19. 对象模型:关于Dynamic Binding 2.20. 谈谈const 2.21. 关于New,Delete 2.22. 重载Operator new,operator delete... 2.23. 示例 2.24. 重载new(),delete()$示例 2.25. Basic_String使用new(extra)扩充申请量 |
Note2 |
(3)STL与泛型编程 | 3.1.认识headers、版本、重要资源 3.2.STL体系结构基础介绍 3.3.容器之分类与各种测试(一) 3.4.容器之分类与各种测试(二) 3.5.容器之分类与各种测试(三) 3.6.容器之分类与各种测试(四) 3.7.分配器之测试 3.8.源代码之分布 (VC, GCC) 3.9.OOP (面向对象编程) vs. GP (泛型编程) 3.10.技术基础: 操作符重载and模板(泛化, 全特化, 偏特化) 3.11.分配器 3.12.容器之间的实现关系与分类 3.13.深度探索list上 3.14.深度探索list下 3.15.迭代器的设计原则和Iterator Traits的作用与设计 3.16.vector深度探索 3.17.array&forward_list深度探索 3.18.deque&queue和 stack深度探索上 3.19.deque&queue和 stack深度探索下 3.20.RB-tree深度探索 3.21.set/multiset深度探索 3.22.map/multimap深度探索 3.23.hashtable深度探索上 3.24.hashtable深度探索下 3.25.hash_set/hash_multiset, hash_map/hash_multimap概念 3.26.unordered容器概念 3.27.算法的形式 3.28.迭代器的分类 (category) 3.29.迭代器分类 (category) 对算法的影响 3.30.算法源代码剖析 (11个例子) 3.31.仿函数/函数对象 3.32.存在多种Adapter 3.33.Binder2nd 3.34.not1 3.35.bind 3.36.reverse_iterator 3.37.inserter 3.38.ostream_iterator 3.39.istream_iterator 3.40.一个万用的hash function 3.41.Tuple用例 3.42.Type traits 3.43.Type traits实现 3.44.cout 3.45.moveable元素对于deque速度效能的影响 3.46.测试函数 |
Note3 |
(4)C++设计模式 | 4.1.设计模式简介 4.2.面向对象设计原则 4.3.模板方法 4.4.策略模式 4.5.观察者模式 4.6.装饰模式 4.7.桥模式 4.8.工厂方法 4.9.抽象工厂 4.10.原型模式 4.11.构建器 4.12.门面模式 4.13.代理模式 4.14.适配器 4.15.中介者 4.16.单件模式 4.17.享元模式 4.18.状态模式 4.19.备忘录 4.20.组合模式 4.21.迭代器 4.22.职责链 4.23.命令模式 4.24.访问器 4.25.解析器 4.26.设计模式总结 |
Note4 |
(5)C++新标准C++-14(选修) | 5.1.演进、环境与资源 5.2.Variadic Templates 5.3.Spaces in Template Expression、 nullptr and std::nullptr_t、 Automatic Type Deduction with auto 5.4.Unifrom Initialization 5.5.Initializer_list(上) 5.6.Initializer_list(下) 5.7.Explicit for ctors taking more than one argument 5.8.Range-based for statement 5.9.=default, =delete 5.10.Alias Template 5.11.Template template parameter 5.12.Type Alias 5.13.decltype 5.14.lambdas 5.15.Variadic_Templates_1 5.16.Variadic_Templates_2 5.17.Variadic_Templates_3 5.18.Variadic_Templates_4 5.19.Variadic_Templates_5 5.20.Variadic_Templates_6 5.21.Variadic_Templates_7&C++Keywords 5.22.标准库源代码分布 5.23.Rvalue references and Move Semantics 5.24.Perfect Forwarding 5.25.写一个move aware class 5.26.Move-aware class对容器的效能测试 5.27.容器—结构与分类_旧与新的比较 — 关于实现手法 5.28.容器array 5.29.容器Hashtable 5.30.Unordered 5.31.Hash function 5.32.Forward_list 5.33.一个万用的Hash Function 5.34.Tuple 5.35.shared_pointer 5.36.Type traits |
Note5 |
(6)系统设计与实践(选修) | 6.1.系统设计介绍 6.2.实战演练(短URL设计) 6.3.系统设计七剑客(上) 6.4.系统设计七剑客(下) 6.5.案例分析 6.6.搭建大规模可扩展系统(一) 6.7.搭建大规模可扩展系统(二) 6.8.搭建大规模可扩展系统(三) 6.9.搭建大规模可扩展系统(四) 6.10.大数据系统 6.11.海量数据处理方法 6.12.海量数据案例1 6.13.海量数据案例2 6.14.资料推荐与案例分析 |
Note6 |