北京邮电大学慕课下载: C++程序设计(面向对象进阶)
类型:公开课
主讲人: 崔毅东,男,北京邮电大学副教授、硕士研究生导师。
研究方向:大数据分析及人工智能应用、移动互联网产品工程及用户体验设计等。
承担课题:作为主研人曾参研国家自然科学基金项目1项、国家973、863、CNGI项目5项以及多项企业合作项目。2016年以来承担或在研的相关研究项目包括某市轨道交通关键设备智能诊断大数据系统、面向自动化测试的智能算法及系统、特殊污染自动巡检关键技术、电力物资智能管理关键技术等。 自2015年起,在网易云课堂计算机课程体系中开设“C++程序设计入门(上/下)”大规模在线公开课。
发表论文:在国际/国内会议及期刊上发表SCI检索论文5篇,EI检索论文20余篇;申请及已授权国内发明专利近30项,国际发明专利3项。
荣誉与奖励:自2009年起,指导北京邮电大学大学生创新竞赛多项,其中国家级3项;获2012年北京邮电大学大学生创新性实验计划项目“优秀指导教师”。所指导的学生团队曾获得2012年湾云杯全国云计算应用大赛二等奖、2011年谷歌开发大赛北京赛区二等奖/全国赛区三等奖、2009年Nokia创新大赛优胜奖等奖项。所参加的教改项目“C++程序设计资源库”获北京邮电大学2006年教学成果二等奖。2010年被评为北邮十大“我最喜爱的教师”之一。
学院介绍:北京邮电大学(Beijing University of Posts and Telecommunications),简称北邮,位于北京市,是中华人民共和国教育部直属、工业和信息化部共建的全国重点大学,位列国家“双一流”建设高校、“211工程”、“985工程优势学科创新平台”,为北京高科大学联盟、中国人工智能教育联席会、CDIO工程教育联盟创始成员,入选国家“111计划”、“2011计划”、中国政府奖学金来华留学生接收院校、教育部第一批卓越工程师教育培养计划高校、国家建设高水平大学公派研究生项目、教育部首批“新工科”研究与实践项目、全国首批深化创新创业教育改革示范高校、一流网络安全学院建设示范项目高校、国家大学生文化素质教育基地、全国邮政行业人才培养基地。北京邮电大学创建于1955年,原名北京邮电学院,是中华人民共和国第一所邮电高等学府,隶属原邮电部。 1960年,被国务院确定为全国重点高校。1993年,更名为“北京邮电大学”。2000年,划入教育部直属高校行列。
课程介绍:
为什么要学这门课程?
学C语言后想进阶学C++;
学Java后想了解C++这个同门大佬;
听说C++ 11/14/17/20被称为“Modern C++”,想看看它和“Classic C++”有啥不同;
想学习编码规范以写出【好看】的代码。
这门课程要求:
你已有编程基础,知道数据类型、分支循环、数组等语言要素;
你已经写过代码,想看看C++能否多快好省地编程序。
这门课程不适合:
从未接触过编程(可以先学C语言入门);
希望用三行代码改变世界(建议去学Python);
认为Java能搞定一切(奇迹和灾难都在JVM中);
非IT专业但听说编程是职场必备能力(可以先学解释型语言,更易入门)。
必须要学C++的理由:
做人工智能研究,想要深入底层;比如TensorFlow的核心是用C++写的;
做游戏开发,包括端游和网游后台,以发挥计算机的全部性能,需要C++;
做智能硬件、嵌入式或硬件驱动开发;C++会提供更多工具,生产效率更高;
你喜欢。
必须要学本课程的理由:
学了C++,但是希望学习C++11~C++20等新标准的特性及编程范式;
学了C++,但是还在用typedef,或者认为 for(auto i : array)是写错了;
定义变量时轮流使用26个英文字母,不够的话再加上下划线 (⊙_⊙)?
课程内容更新安排:
第一期课程主要介绍C++基础及C++11~17的功能性增强;
第二期课程补充一些C++17的基础特性
第三期课程继续补充C++11~17中一些较难理解的特性,并选择少量C++20的新增特性
第四期课程继续补充C++课下实验内容,供学有余力同学参考使用
本期课程补充C++20中的一些特性
授课目标:
通过这门课程,希望能够让你:
初步掌握C++的面向对象编程方法;
能初步使用 C++11/14/17/20 标准中 “Modern C++” 的思想写代码
了解并应用编码规范
预备知识:
学过C语言,了解数据类型、分支循环、函数、数组、指针;
或者
学过Java,但需要额外补学C/C++的指针(指针定义、解引用、指针作为函数返回值和参数)
或者
学过Python,但需要额外补学C/C++的数据类型、数组、指针
课程列表:
第1单元:C++概览
第01节:C++编程范式与现代C++标准
第02节:学习C++:参考书和编程环境
第03节:Visual Studio集成开发环境
第04节:Eclipse CDT集成开发环境
第05节:如何快速学习本课程?
第06节:常见问题解答
第1单元课前测试:C语言水平评估 (英文题目;选做)
作业1:测试你的C++编译器支持的标准
第1单元测验
第2单元:C++程序基础
第00节:单元导学
第01节:C++源代码和编码规范
第02节:Aloha World代码示例
第03节:名字空间
第04节:编译C++程序
第05节:处理错误
第06节:输入和输出
第2单元作业2:在线编程-名字空间
第2单元作业1:在线编程-输入与输出
第2单元测验
第3单元: C语法的增强及对应的C++11特性
第00节:单元导学
第01节:引用、[C++11]空指针与动态内存分配
第02节:数据类型与转换、[C++11]列表初始化
第03节:[C++11]自动类型推导:类型系统、auto与decltype
第04节:简化的C++内存模型
第05节:常量与指针
第06节:特殊函数:重载、默认参数值与内联
第07节:[C++11]基于范围的for循环
第08节:[C++17]带有初始化器的if和switch语句
第3单元测验
第3单元作业1:在线编程-引用作为函数参数
第3单元作业2:在线编程-重载函数
第4单元: 对象和类(基础)
第00节:单元导学
第01节:用类创建对象
第02节:对象拷贝以及分离声明与实现
第03节:对象指针、对象数组以及函数参数
第04节:抽象、封装与this指针
第05节:[C++11]类数据成员的初始化
第06节:string类以及[C++11]std::array类
4.1. 在线编程-解析整数范围
4.2. 在线编程-【选做】解析有干扰字符的整数范围
4.3. 在线编程-遍历对象数组
第4单元测验
第5单元: 对象和类(高级)
第00节:单元导学
第01节:[C++11]断言与常量表达式
第02节:代理构造、不可变对象与静态成员
第03节:析构、友元与深浅拷贝
第04节:vector类和[C++14]字符串字面量
第05节:例子
第06节:[C++17]结构化绑定
第5单元测验
5.1. 在线编程-代理构造函数1
5.2. 在线编程-代理构造函数2
第6单元: 继承和多态
第00节:单元导学
第01节:继承与构造
第02节:名字隐藏与重定义
第03节:覆写与运行时多态
第04节:抽象类与动态类型转换
1. 在线编程-继承中的构造函数
2. 在线编程-继承中的析构函数和静态成员
3. 在线编程-多态和纯虚函数
第6单元测验
Lab1
第00节:单元导学
第01节:Project 1 – Classes & Objects
第02节: Project 2 – Inheritance, Ctor, Dtor & Static Member
第7单元:文件输入输出流
第01节:[C++17]文件系统(filesystem)
第02节:文件I/O流的基本用法
第03节:格式化输出与I/O流函数
第04节:二进制输入输出
第05节:随机访问文件
第00节:单元导学
第7单元测验
7.1. 互评作业-打开关闭文件并判断文件是否存在
第8单元:运算符重载
第00节:单元导学及准备知识
第01节:运算符重载与平面向量类
第02节:重载二元运算符和数组下标运算符
第03节:重载一元运算符
第04节:重载流操作运算符与类型转换运算符
第05节:重载赋值运算符及其它总结
第8单元测验
8.1 在线编程-关系运算符重载
8.2 在线编程-数组下标运算符重载
第9单元:异常处理
第00节:单元导学
第01节:异常处理概览
第02节:异常匹配与内建异常类
第03节:自定义异常类与多重捕获
第04节:[C++11]noexcept与异常传播
第05节:重抛异常与异常的使用场景
单元作业说明
第9单元测验
1. 在线编程-创建复数类,重载流运算符
2. 在线编程-修改复数类,重载加减法运算符
3. 在线编程-在复数的运算中,练习异常处理
第10单元:模板初步
第00节:单元导学
第01节:模板与泛型编程
第02节:函数模板
第03节:排序示例与泛型化
第04节:类模板
第05节:模板参数与模板继承
第10单元测验
10.1 在线编程-创建数组类模板
第11单元:标准模板库介绍
第00节:单元导学
第01节:标准模板库基础
第02节:STL容器
第03节:STL迭代器
第04节:容器的更多用法
1. 在线编程-vector 与 sort
Lab2
第00节: 单元导学
第01节: Project 3
第02节: Project 4