课程名称 |
程序设计基础实验 |
Experiments of Programming |
开课单位 |
计算机学院 |
课程性质 |
必修课 |
课程类别 |
实践环节 |
课程代码 |
210731100801 |
学分 |
1 |
学时 |
22 |
适用专业 |
计算机科学与技术、软件工程、物联网工程、智能科学与工程、信息安全 |
先修课程 |
无 |
支撑课程 |
程序设计基础 |
授课语言 |
中文 |
一、课程简介
(一)课程中文简介
通过课程学习,使学生具备熟练使用C语言进行程序设计的能力,熟练掌握C语言的基本语法和程序设计的基本要素:数据存储、输入输出、流程控制、函数、数组、字符串、结构、文件等技术,掌握C标准模板库的使用,理解指针、递归、文件存储等程序设计的技巧,具备用计算机求解问题的基本能力,了解问题求解策略和计算思维各领域的发展方向。
(二)课程英文简介
Through the course learning, students are able to proficiently use C language for programming, master the basic syntax of C language and the basic elements of programming: data storage, input and output, process control, functions, arrays, strings, structures, files and other technologies, master the use of C standard template library, understand pointer, recursion, file storage and other programming skills, have the basic ability to solve problems with a computer, understand the problem-solving strategy and the development direction of computational thinking in various fields.
二、实验课程目标
本课程的目标包括:
CO1:能够在问题求解的过程中,领会问题的基本要素、选择合适的存储结构并解释问题求解的关键步骤,归纳程序设计的基本方法和核心要素,描述问题的求解过程。
CO2:能够在问题求解的过程中,熟练运用计算机程序设计语言的基本输入输出、存储类型、流程控制的基础模型和技巧,利用模块化程序设计方法,编写程序实现求解过程。
CO3:能够在问题求解的过程中,分析问题的基本规律,比较并选择恰当的数据存储类型与组织结构,识别和运用恰当的求解方法与步骤流程,编写程序实现并归纳测试样例加以测试。
课程目标与所支撑的毕业要求指标点的对应关系如下表所示。
适用专业 |
毕业要求内涵观测点 |
课程目标 |
计算机科学与技术 |
GR 3.2能够遵循软件设计方案,实现软件单元,特别是互联网应用软件、智能应用软件与游戏软件的单元实现。 |
CO1、CO2、CO3 |
软件工程 |
GR3.1能够综合运用计算机科学与技术专业涉及的工程设计概念、原则和方法,针对复杂工程问题提出合理的解决方案。 |
CO1、CO2、CO3 |
物联网工程 |
GR3.3 能够根据设计目标及系统设计,完成应用功能模块的软件、硬件设计与开发。 |
CO1、CO2、CO3 |
智能科学与技术 |
GR3.3综合利用人工智能领域的专业知识和新技术,在针对复杂工程问题的系统设计中体现创新意识。 |
CO1、CO2、CO3 |
信息安全 |
GR3.2明确满足需求的具体的研发目标并进行系统设计与开发。 |
CO1、CO2、CO3 |
三、实验内容与要求
(一)实验设计
验证性(58%)
验证性实验有七个:分别是熟悉C语言输入输出、掌握C数据类型和相关运算、理解C分支和循环结构、掌握C分支和循环结构、掌握C语言数组使用、掌握C语言字符串使用、掌握C指针。
综合性(25%)
综合性实验有三个:分别是理解问题求解的基本思路和自定义函数、使用数组(串)和指针、使用函数、数组和字符串和指针的案例。
设计研究性(17%)
设计研究型实验有二个:分别是掌握结构体和复杂数据组织方法、掌握递归和理解问题求解策略。
表2 实验内容与课程目标对应关系
实验课程目标 |
实验模块(可选) |
对应实验 |
CO1 |
|
实验1,2,3,5,10,11 |
CO2 |
|
实验3,4,5,6,7,8,9 |
CO3 |
|
实验6,7,8,9,10,11 |
(二)实验内容及要求
表3 实验内容与要求
实验编号 |
实验项目 |
学时数 |
实验内容 |
实验类型 |
实验要求 |
1 |
C语言基础 |
2 |
熟悉C语言输入输出 |
验证性 |
必做 |
2 |
数据存储与表示 |
2 |
掌握C数据类型和相关运算 |
验证性 |
必做 |
3 |
程序流程控制1 |
2 |
理解C分支和循环结构 |
验证性 |
必做 |
4 |
程序流程控制2 |
2 |
掌握C分支和循环结构 |
验证性 |
必做 |
5 |
简单问题求解的程序设计 |
2 |
理解问题求解的基本思路和自定义函数 |
综合性 |
必做 |
6 |
C语言数组 |
2 |
掌握C语言数组使用 |
验证性 |
必做 |
7 |
C语言字符串 |
2 |
掌握C语言字符串使用 |
验证性 |
必做 |
8 |
数据间接访问 |
2 |
掌握C指针 |
验证性 |
必做 |
9 |
数据的顺序组织 |
2 |
使用数组(串)和指针 |
综合性 |
必做 |
10 |
数据存储与程序组织结构 |
2 |
使用函数、数组和字符串和指针的案例 |
综合性 |
必做 |
11 |
组织复杂数据 |
2 |
掌握结构体和复杂数据组织方法 |
设计研究 |
必做 |
12 |
问题求解策略 |
2 |
掌握递归、理解问题求解策略 |
设计研究 |
选做 |
13 |
问题求解策略2 |
2 |
编写求解问题的复杂案例 |
设计研究 |
选做 |
14 |
程序设计思维 |
2 |
编写程序求解困难问题 |
设计研究 |
选做 |
四、实验设备与环境配置
1. 计算机:Intel Core2 Duo E4300 1.8GHZ、内存512MB、硬盘15GB以上。
2. 编译器:支持ISO C++ 98标准特性,如GCC、VC++7以上;或支持ISO C++ 11标准特性,如GCC 4.8.1、VC++ 2013以上。
3. 开发环境:Codeblocks 10.05以上,或Visual Studio 2008以上,或Xcode 4.1以上。
4. 实验题目及结果:学生在程序在线评测系统进行实验,使用系统题库,并由系统判定实验结果。
五、课程思政、创新创业元素
教学章节 |
知识点 |
思政元素案例 |
培养目标 |
备注 |
实验3 |
严谨治学 |
介绍软件运行安全性问题,包括内存溢出带来的程序问题,例如:1996年“阿丽亚纳-5”运载火箭将64位格式转化为16位格式导致内存溢出而引起火箭发射后爆炸的重大事故 1993年英特尔奔腾芯片的浮点数存在漏洞问题;被除数为0的千年虫问题等。 |
依赖科学技术的同时,更应该保持一丝不苟、严谨认真的学习和工作态度。 |
|
实验5 |
持之以恒 |
科大学者,智慧矿山开拓者卢新明教授,扎根高校沃土,三十多年如一日,潜心研究,孜孜不倦的案例-引出:生命不息,奋斗不止,生活就是在一个目标的实现和对下一个目标的追求间不断循环。 |
树立持之以恒,百折不挠,不断打磨专业技能的工匠精神。 |
|
实验6 |
精益求精 |
在解决C语言中的典型问题时,倡导一题多解,通过比较不同算法的执行效率,真正做到精益求精。 |
树立精益求精的工匠精神 |
|
六、主要参考资料
[1] 裘宗燕. 从问题到程序——程序设计与C语言引论, 2版[M]. 北京: 机械工业出版社, 2012.
[2] Brian W Kernighan, Dennis M Ritchie. C程序设计语言, 2版[M]. 徐宝文, 等译. 北京: 机械工业出版社, 2004.
[3] Eric S Roberts. C语言的科学和艺术[M]. 翁惠玉, 等译. 北京: 机械工业出版社, 2005.
[4] K N King. C语言程序设计:现代方法, 2版[M]. 吕秀峰, 等译. 北京: 人民邮电出版社, 2010.
[5] Kenneth A Reek. C和指针[M]. 徐波, 译. 北京: 人民邮电出版社, 2008.
[6] 谭浩强. C程序设计, 4版[M]. 北京: 清华大学出版社, 2012.
[7] 吴文虎, 等. 程序设计基础, 3版[M]. 北京: 清华大学出版社, 2012.
[8] Peter van der Linden. C专家编程[M]. 徐波, 译. 北京: 人民邮电出版社, 2008.
[9] Andrew Koenig. C陷阱与缺陷[M]. 高巍, 译. 北京: 人民邮电出版社, 2008.
[10] Eric S Roberts. C程序设计抽象思维[M]. 闪四清, 译. 北京: 机械工业出版社, 2012.
[11] S P Harbison, G L Steele. C语言参考手册, 5版[M]. 徐波, 译. 北京: 机械工业出版社, 2011.
[12] http://www.c-faq.com [OL].
[13] http://www.cprogramming.com [OL].
七、考核方式、方法及实验成绩评定方法
考核成绩可以采用五级制或百分制。课程成绩考核有两种:
方式一:由各次实验成绩考核组成。
方式二:包括课程实验(占80%-100%),期末考试占(0%-20%);
方式三:包括课程实验(占50%),课程作业占(50%)。
各次实验考核成绩由程序在线评测系统(Online Judge)根据实验中每题的完成情况按百分制给出。实验每题按百分制给出,其中通过测试样例数占比90%,完成时间占比10%。
(一)评分标准
表4 实验评分标准
考核 环节 |
<60 (不及格) |
60-69 (及格) |
70-79 (中等) |
80-89 (良好) |
90-100 (优秀) |
平时 |
在线评测系统成绩<60 |
在线评测系统成绩60-70 |
在线评测系统成绩70-80 |
在线评测系统成绩80-90 |
在线评测系统成绩90-100 |
期末考核(可选) |
视作一次实验(可选) |
视作一次实验(可选) |
视作一次实验(可选) |
视作一次实验(可选) |
视作一次实验(可选) |
(二)实验项目权重
表5 实验课程目标与实验项目对应关系
实验项目 |
目标1 |
目标2 |
目标3 |
C语言基础 |
10% |
|
|
数据存储与表示 |
20% |
15% |
|
程序流程控制1 |
20% |
10% |
|
程序流程控制2 |
|
15% |
|
简单问题求解的程序设计 |
10% |
15% |
10% |
C语言数组 |
10% |
10% |
15% |
C语言字符串 |
10% |
10% |
15% |
数据间接访问 |
|
10% |
10% |
数据的顺序组织 |
|
15% |
20% |
数据存储与程序组织结构 |
10% |
|
15% |
组织复杂数据 |
10% |
|
15% |
|
100% |
100% |
100% |
撰稿人:吴振寰
审核人:崔焕庆
批准人:崔宾格