| 自动化
《C++程序设计》课程教学大纲
课程名称及编号: C++程序设计(CS032) |
学分 / 学时: 3/48 |
|
主讲教师(姓名、职称): 沈红斌、孟桂娥、张冬茉、张同珍、翁惠玉、姚莉秀、蔡云泽 |
授课语言: 中文 |
|
必修/选修: 必修 |
开课时间: 春季 |
|
适用专业:自动化、计算机科学与技术、测控技术与仪器、电气工程及其自动化、电子科学与技术、信息工程、信息安全、软件工程、微电子学 |
开课单位:电信学院计算机系 |
|
授课方式: 课堂教学+上机实验+大作业+其他拓展训练 |
考核方式: 闭卷期中考试+闭卷期末考试+期末上机考试+平时上机作业 |
|
先修课程: 高等数学(A)、 程序设计思想与方法 |
后修课程:数据结构 |
|
课程简介: C++程序设计是自动化专业必修的专业基础课。本课程主要以高级语言C++为媒介,介绍面向过程和面向对象两种程序设计方法。在各基本概念的介绍中,以应用需求为主线索,着重于学生计算思维的培养,提高学生解决复杂实际问题的能力。同时这门课程也是一门实践能力要求很强的课程,要求学生在作业和上机练习中都要具体编程实现,复杂程序设计和调试过程既能体现出学生对所学知识的掌握,也能很好地磨练学生锲而不舍、坚韧不拔的意志。 |
||
课程培养目标 : C++课程以课堂教学为主,辅之以上机实验、作业、课程答疑。为了提高学生的程序设计能力还要求学生利用美国官方程序设计竞赛网站(初学者平台-USACO和提高者平台-UVa)进行网上拓展程序训练。通过这些活动,达到对毕业要求的贡献为: 2.6.具有计算机技术应用的基本能力。 3.2.具有分析和解决电路与电子技术、计算机技术应用的基本能力。 8.2.能够采用合适的方法通过学习发展自身的能力 |
||
教学要求: 通过本课程的学习,锻炼了学生的如下能力: 知识应用能力:能够将数学、专业知识用于解决复杂的实际问题。 问题分析能力:能够应用数学和计算机思维和计算机编程技术, 识别、分析复杂工程问题,获得有效解决方案。 终身学习能力:具有自主学习和终身学习的意识,有不断学习和适应发展的能力。 |
||
撰写者: 张同珍,姚莉秀 发布时间: 2015年3月 |
||
一、课程性质和教学目标
课程性质:C++程序设计是计算机科学与技术、自动化、测控技术与仪器、电气工程及其自动化、电子科学与技术、信息工程、信息安全、软件工程、微电子学等专业必修的专业基础课。
教学目标:通过本课程的学习,使学生掌握程序设计的思想和方法、具有较强的应用计算机解决问题的技能。同时强调学生计算思维的培养,拓展学生解决复杂问题的能力。
本课程以高级语言C++为媒介,介绍了程序设计基本结构、基本要素、数据表达、流程控制、批量数据处理、函数、模块化等概念,完成了面向过程程序设计思想与方法的建立;介绍了数据封装、类的概念、操作符重载、组合继承、多态等概念,完成了面向对象程序设计方法的建立。在各概念的介绍中,以应用需求为主线索,着重在学生计算思维的培养,提高学生解决复杂实际问题的能力。同时这门课程也是一门实践能力要求很强的课程,要求学生在作业和上机练习中都要具体编程实现,复杂程序设计和调试过程既能体现出学生对所学知识的掌握,也能很好地磨练学生锲而不舍、坚韧不拔的意志。
二、课程教学内容及学时分配
教学内容 |
学时 |
课堂 教学 |
作业及 要求 |
内容 |
重点与难点 |
上机 实验 |
通过例子学习 |
3 |
3 |
章 节 习 题
|
C++程序的基本结构及组成C++程序的基本元素 |
什么是程序设计,如何学习程序设计 |
|
逻辑思维与分支程序设计 |
3 |
3 |
关系表达式、逻辑表达式、if语句和switch语句 |
正确使用分支语句,注意逻辑表达式的短路求值 |
|
|
C++的循环语句及利用循环实现的算法 |
2 |
2 |
C++的循环语句及利用循环实现的算法 |
三种循环结构,贪婪法和枚举法的应用 |
猜数字游戏 |
|
批量数据处理 |
2 |
2 |
数组、字符串、批量数据的常用操作 |
正确使用数组,字符串,常用的排序和查找算法 |
|
|
函数 |
6 |
6 |
函数的定义与使用、递归、基于递归实现的算法 |
多函数程序的执行过程、递归程序设计 |
21点游戏 |
|
间接访问 |
6 |
6 |
指针的概念及使用、指针及引用传递、变量的动态分配、多级指针、字符指针、指针数组、函数指针 |
指针传递、多级指针、字符指针 |
过滤无用词汇程序 |
|
数据封装 |
4 |
4 |
结构体类型的定义与使用、单链表的概念及实现 |
链接结构 |
|
|
模块化开发 |
2 |
2 |
结构化程序设计、模块划分、库的设计 |
如何利用结构化程序设计的思想设计一个较大型的程序 |
阅读和学习系统标准库接口文件 |
|
创建新的工具 |
4 |
4 |
面向对象的基本思想、类的定义、对象的定义与使用 |
定义类的意义 |
储蓄账户模拟 |
|
运算符重载 |
4 |
4 |
为什么要有运算符重载以及C++运算符重载的实现方法 |
几个特殊运算符的重载方法 |
Complex类的操作符重载 |
|
组合与继承 |
4 |
4 |
组合、继承与运行时的多态性 |
灵活应用组合与继承实现代码重用,用多态性实现系统维护与扩展 |
银行账号模拟 |
|
泛型程序设计 |
2 |
2 |
类模板的定义与使用 |
类模板的应用场合及应用过程 |
|
|
输入输出与文件 |
3 |
3 |
C++的输入输出过程、控制台输入输出、文件的输入输出 |
C++输入输出实现的特点 |
链表操作 |
|
异常处理 |
1 |
1 |
面向对象的异常处理的特点及C++异常处理的机制 |
C++异常处理的过程 |
|
|
容器与迭代器 |
2 |
2 |
容器与迭代器的概念及设计与实现 |
各类容器、各类迭代器的选择和使用 |
|
三、教学方法
C++课程以课堂教学为主,辅之以上机实验、作业、课程答疑。为了提高学生的程序设计能力还要求学生利用美国官方程序设计竞赛网站(初学者平台-USACO和提高者平台-UVa)进行网上拓展程序训练。
课程教学主要内容依据是本校教师编写的教材。该教材编写时参考了大量国外名校经典教材,内容编排合理,课后章节练习丰富而层次分明,既有简单的概念练习又有复杂的主题讨论、综合练习,适合本校的学生学习。在参考教材上,推荐了国内外优秀教材,有深有浅,适合具有不同学习基础的同学在不同学习阶段参考学习。整个教学过程如下:
课堂教学中首先总结上节课的内容要点、难点,承上启下引出本节课新的课程内容,尤其注重强调内容在课程整体内容框架中的位置。在此过程中,通过短小的例子说明新概念需求和应用,让学生在感性的认识下首先接触新概念的作用,然后再从理论上全面介绍新的概念。使学生们具有计算机技术应用的基本能力。
为了加强学生的参与意识和对课程内容的及时复习,在总结阶段,通过提问或书面作答的方式要求学生积极参与到课堂教学当中。同时锻炼了他们通过口头或书面表达自己的想法的能力。
之后首先要求学生做二方面的工作:1)授课内容的机上练习,通过感性的认识理解和巩固上课内容,2)章节作业的练习,通过对新知识的应用,加深对内容的理解和进一步掌握。在课后环节,每周保证2个晚上(6个小时)的助教答疑时间,解决同学们学习过程中出现的各种问题。这极好地培养了学生的终身学习能力,即同学们能够在不断地摸索过程中找到合适的方法通过学习发展自身能力,并且在自动化工程实践中,不断根据需要学习新知识和新技术,掌握正确有效的学习方法;
上机实验题目和大作业则更注重对知识的综合应用、同学之间的协作和相互讨论。使学生们具有一定的组织管理、表达和人际交往能力,在团队中具有发挥作用的能力和协作能力。
针对学生的不同层次,特别提出了学有余力且设计编程能力强的同学多在USACO和UVa平台上练习,多达300道的竞赛级综合练习提供了这部分学生的特殊需求。培养他们的国际视野和跨文化的交流、竞争与合作能力。
四、考核及成绩评定方式
课程考核方式:闭卷期中考试+闭卷期末考试+期末上机考试+平时上机作业
成绩评定方式:期中考试 20%,平时上机作业30%,期末上机考试20%,期末考试30%
五、教材及参考书目
教材:
[1] 翁惠玉. C++程序设计思想与方法(第2版). 北京:人民邮电出版社,2008.
参考书目:
[1] 翁慧玉. C++程序设计题解与拓展. 北京:清华大学出版社,2013.
[2] Bruce Eckel. Thinking in C++. 北京:机械工业出版社,2011.
[3] Stanley B. Lippman. C++ Primer. 北京:人民邮电出版社,2006.
[4] 谭浩强. C程序设计(第3版). 北京:清华大学出版社,2005.
[5] H.M.Deitel. C++大学教程(第5版). 北京:电子工业出版社,2008.
[6] 吴文虎. 程序设计基础(第2版). 北京:清华大学出版社,2011
课程组教师名单: 黄林鹏、孟桂娥、姚莉秀、张同珍、王群慧、陈英、陆朝俊、王英林、庄天红、丁宁、朱弘恣、沈红斌
大纲执笔: 张同珍,姚莉秀