《C语言程序设计》课程教学大纲
一、课程基本信息
课程代码:COMP2508
课程名称:C语言程序设计
课程英文名称:C Language Programming
课程所属单位:数学与计算机学院计算机基础教研室
课程面向专业:非计算机工科专业
课程类型:必修
先修课程:无
学时学分:总学时64 (其中理论学时:32),学分4
二、课程性质与目标
《C语言程序设计》是高等学校非计算机工科专业的通识必修课程,既具有高级语言的优点,又具有低级语言的许多特点,涉及到C语言语法、程序设计方法、计算机算法等内容,是现今应用最为广泛的一种结构化程序设计语言,是非计算机专业学生计算机应用能力水平二级考试的主要语种之一。学习本课程除了让非计算机工科专业学生掌握程序设计基本知识,学会编写简单的C语言程序,提高使用计算机解决本专业实际问题的能力,以适应计算机在各学科中越来越广泛的应用及对人才在计算机知识和能力方面的需求外,还对培养非计算机工科专业学生的逻辑思维能力、计算思维能力、创新能力起到重要作用。
根据国家对高校培养目标要求及我校学生特点,对本课程制定了以下教学目标:
1.掌握C语言的基本知识,能够根据化工专业范式,编写程序展示设计结果。(支撑毕业要求指标点3.4)
2.理解程序设计常用算法,了解C语言在化工专业进行数据分析与处理的原理、方法,并理解其局限性。(支撑毕业要求指标点5.1)
3.掌握阅读、理解、编写、调试C语言程序的方法,能够使用C语言收集、处理、分析数据。(支撑毕业要求指标点5.2)
4.理解结构化、模块化程序设计方法,培养学生计算思维能力,提高学生应用计算机解决化工领域实际问题的能力。(支撑毕业要求指标点5.3)
以上课程目标和毕业要求指标点对应关系如表1所示。
表1 课程目标和毕业要求指标点对应关系
毕业要求指标点 |
指标点表述 |
课程目标 |
设计/开发解决方案3.4 |
3.4能够应用设计报告、说明书、工程图或计算机程序等化工专业范式展示设计结果 |
课程目标1 掌握C语言的基本知识,能够根据化工专业范式,编写程序展示设计结果。 |
使用现代工具5.1 |
5.1了解化工专业常用现代分析和测试仪器、信息技术工具、数据分析、工程设计和模拟软件的使用原理和方法,并理解其局限性 |
课程目标2 理解程序设计常用算法,了解C语言在化工专业进行数据分析与处理的原理、方法,并理解其局限性。 |
使用现代工具5.2 |
5.2能够针对复杂化工工程问题,恰当选择并正确使用仪器、信息资源、软件开展分析、计算或设计工作 |
课程目标3 理解阅读、编写、调试C语言程序的方法,能够使用C语言收集、处理、分析数据。 |
使用现代工具5.3 |
5.3能够针对特定技术需求,开发或选用现代工具实施预测或模拟,并能够理解其局限性。 |
课程目标4 理解结构化、模块化程序设计方法,培养学生计算思维能力,提高学生应用计算机解决化工领域实际问题的能力。 |
三、课程教学内容与要求
第1章 程序设计和C语言
基本要求
初步了解C语言程序的基本构成和C语言程序的运行过程。
教学内容
C语言的历史背景及特点,了解C语言的基本概念、语法和数据类型的特点。
简单的C程序介绍,了解C程序的基本结构与书写格式。
运行C程序的步骤与方法,掌握调试程序的基本方法及上机操作步骤。
重难点内容
C语言程序的结构与书写规则。(重点、难点)
C语言上机调试的过程。(重点、难点)
简单的C语言程序的编写与运行。(重点)
第2章 数据类型、运算符与表达式
基本要求
掌握C语言的基本数据类型及其使用,掌握C语言运算符与表达式。
教学内容
C语言的基本数据类型。
变量的定义方法及在内存中的存放。
C语言的运算符的种类、功能、运算优先级、结合性。
C语言表达式的运算过程。
不同类型数据间的转换与运算。
重难点内容
常量、变量的定义与使用。(重点)
运算符的优先级及结合方向。(难点)
自增自减运算。(重点、难点)。
第3章 顺序结构程序设计
基本要求
掌握格式化输入、输出函数的使用。
教学内容
C语言语句。
格式输出函数printf()的语法形式以及不同的输出格式。
格式输入函数scanf()的语法形式以及不同的输入格式。
字符输入函数getchar()与字符输出函数putchar()的使用。
重难点内容
输入输出函数及其调用。(重点)
格式化修饰符的使用。(难点)
第4章 选择结构程序设计
基本要求
要求学生能熟练使用if的三种语句形式及switch语句实现选择结构程序设计。
教学内容
关系运算符与逻辑运算符及其表达式。
if语句三种形式。
条件运算符及条件表达式。
switch语句。
选择结构的嵌套。
重难点内容
if语句的三种形式及switch语句。(重点)
选择结构的嵌套。(难点)
第5章 循环结构程序设计
基本要求
要求学生能熟练使用循环语句三种形式实现循环结构程序设计。
教学内容
循环结构的三种实现形式。
循环辅助控制语句。
循环的嵌套。
常用基本算法:穷举法、二分法、迭代法、素数判断、求阶乘、求和等。
重难点内容
三种循环语句的语法及其应用。(重点)
辅助控制循环语句及它们控制的范围。(难点)
第6章 利用数组处理批量数据
基本要求
掌握数组的定义与使用,并学会利用数组解决问题。
教学内容
一维数组的定义、初始化、数组元素的引用及输入输出。
二维数组的定义、初始化、数组元素的引用及输入输出。
字符数组的定义、初始化、数组元素的引用及输入输出。
字符串处理函数的功能及使用。
常用基本算法:排序、求平均值、求最值、数据的查找、插入与删除等。
重难点内容
数组的定义与综合应用。(重点)
字符数组与字符串的理解及应用。(难点)
第7章 用函数实现模块化程序设计
基本要求
要求学生掌握函数的定义方法、调用方法,函数参数的传递及模块化程序设计思想。
教学内容
函数的分类,常用库函数的调用。
函数的定义及函数的声明。
函数的调用的一般形式、函数参数的传递及函数的返回值。
嵌套调用、递归调用。
数组作为函数参数
局部变量和全局变量
变量的存储方式和生存期。
内部函数和外部函数。
重难点内容
模块化程序设计思想。(重点、难点)
函数的定义及调用。(重点)
函数形参和实参的概念、对应关系及参数的传递。(重点、难点)
函数的嵌套调用和递归调用理解及应用。(难点)
全局变量、静态变量的理解及应用。(难点)
第8章 善于利用指针
基本要求
要求学生能区分并熟练运用指向变量的指针、指向一维数组的指针,及指针变量作为函数参数的使用。
教学内容
指针的概念,指针运算,指针变量的定义、引用,以及指针变量作为函数参数的用法。
指向数组的指针的概念、定义、引用,指向数组的指针作为函数参数的用法,以及指向多维数组指针的用法。
指向字符串的指针的概念、定义、引用,以及指针字符串的指针作为函数参数的用法。
重难点内容
指针、指针变量的概念以及它们之间的区别(重点)
指针变量的定义,指针变量参加的各种运算(重点)
指向一维数组的指针。(难点)
指向字符串指针的表示形式以及引用。(难点)
第9章 用户自己建立数据类型
基本要求
要求学生掌握结构体数据类型的定义和结构体成员的引用,以及结构体数组。
教学内容
结构体数据类型、结构体变量的定义与使用。
结构体数据类型、结构体变量的定义与使用。
结构体数组的定义与使用。
枚举类型的定义与使用。
typedef的使用。
重难点内容
结构类型和结构变量的定义(重点)
结构变量的引用和初始化(重点)
结构数组的定义、引用(难点)
第10章对文件的输入输出(自学)
基本要求
要求学生掌握结构体数据类型的定义和结构体成员的引用,以及结构体数组。
教学内容
文件的概念、定义形式、分类。
文件的读和写的概念。
打开函数的定义形式和操作方式。
关闭函数的定义形式和操作方式。
文件读写函数的操作和选用原则。
重难点内容
文件的概念、定义形式、分类(重点)。
打开文件的定义形式和操作方式(重点、难点)。
关闭文件的定义形式和操作方式(重点、难点)。
文件的读写操作(重点、难点)。
教学安排
本课程理论学时32学时,上机实验学时32学时,合计64学时,教学安排如表2所示。
表2 教学安排
课次 |
周次 |
学习内容 |
网络资源、学习目标、作业要求(理论32学时) |
上机实验(32学时) |
1 |
第1周 |
第1章 |
教学资源:超星网络学习平台“章节”中的第1章视频及PPT |
|
程序设计和C语言 |
通过三个简单程序掌握C程序的格式和结构特点,及了解VS2010环境下C语言程序的调试环境及方法。 |
|||
作业要求:完成本章上机实践及本章自测 |
||||
2 |
第2周 |
第2章 |
教学资源:超星网络学习平台“章节”中的第2章视频及PPT |
|
数据类型、运算符与表达式 |
本章内容属于C语言最基本的知识点,多且繁杂,需要学生理解并记忆。主要包含数据类型、运算符与表达式、赋值表达式等。 |
C程序结构及特点 |
||
作业要求:完成本章各知识点下的自测、上机实践及本章自测 |
||||
3 |
第3周 |
第3章 |
教学资源:超星网络学习平台“章节”中的第3章视频及PPT |
|
顺序结构程序设计 |
要求通过视频及PPT掌握C语言输出与输出函数的使用及顺序结构程序设计的方法。 |
数据类型、运算符与表达式 |
||
作业要求:完成本章各知识点下的自测、上机实践及本章自测 |
||||
4 |
第4周 |
第4章 |
教学资源:超星网络学习平台“章节”中的第4章视频及PPT |
|
选择结构程序设计 |
要求通过视频及PPT掌握C语言选择结构语句:if语句的三种形式,掌握选择结构程序设计方法。 |
顺序结构 |
||
作业要求:完成本章各知识点下的自测、上机实践及本章自测 |
||||
5 |
第5周 |
第4章 |
教学资源:超星网络学习平台“章节”中的第4章视频及PPT |
|
选择结构程序设计 |
要求通过视频及PPT掌握C语言选择结构语句:switch语句,掌握选择结构的嵌套,掌握选择结构程序设计方法。 |
选择结构 |
||
教学资源:超星网络学习平台“章节”中的第4章视频及PPT |
||||
6 |
第6周 |
第5章 |
教学资源:超星网络学习平台“章节”中的第5章视频及PPT |
|
循环结构程序设计 |
要求通过视频及PPT,掌握C语言循环结构的三种实现语句:while语句、do—while语句、for语句,掌握循环辅助控制语句:break与continue |
循环结构(1) |
||
作业要求:完成本章各知识点下的自测、上实验五机实践及本章自测 |
||||
7 |
第7周 |
第5章 |
教学资源:超星网络学习平台“章节”中的第5章视频及PPT |
|
循环结构程序举例 |
掌握循环的嵌套,掌握循环结构程序设计方法,掌握一些常用的算法。 |
循环结构(2) |
||
作业要求:完成本章各知识点下的自测、上实验五机实践及本章自测 |
||||
8 |
第8周 |
第6章 |
教学资源:超星网络学习平台“章节”中的第6章6.2.1节视频及PPT |
|
利用数组处理批量数据中的一维数组 |
要求通过视频及PPT,掌握一维数组的定义、数组在内存中的存放、数组元素的引用、数组的初始化、数组的输入与输出,掌握冒泡法排序的基本原理。 |
一维数组 |
||
作业要求:完成本节各知识点下的自测、一维数组上机实践 |
||||
9 |
第9周 |
第6章 |
教学资源:超星网络学习平台“章节”中的第6章6.2.2节视频及PPT |
|
利用数组处理批量数据中的二维数组 |
要求通过视频及PPT,掌握二维数组的定义、二维数组在内存中的存放、二维数组元素的引用、二维数组的初始化、二维数组的输入与输出,掌握打擂台求最值的基本原理。 |
二维数组 |
||
作业要求:完成本节各知识点下的自测、二维数组上机实践 |
||||
10 |
第10周 |
第6章 |
教学资源:超星网络学习平台“章节”中的第6章6.2.3节视频及PPT |
|
利用数组处理批量数据中的字符数组及字符串处理函数 |
要求通过视频及PPT,掌握字符数组定义、字符数组在内存中的存放、字符数组元素的引用、字符数组的初始化、字符数组的输入与输出,字符串处理函数的使用。 |
字符数组 |
||
作业要求:完成本节各知识点下的自测、字符数组上机实践,完成本章自测 |
||||
11 |
第11周 |
第7章 |
教学资源:超星网络学习平台“章节”中的第7章7.2.1-7.2.3节视频及PPT |
|
用函数实现模块化程序设计中的嵌套与递归调用 |
要求通过视频及PPT,掌握函数的定义与使用,掌握函数的嵌套、递归调用与使用。 |
函数定义及函数调用 |
||
作业要求:完成本节各知识点下的自测, |
||||
12 |
第12周 |
第7章 |
教学资源:超星网络学习平台“章节”中的第7章7.2.4节视频及PPT |
|
用函数实现模块化程序设计中的数组作函数参数 |
要求通过视频及PPT,掌握数组元素作函数参数实现值传递原理,掌握数组名作函数参数实现地址传递的原理。 |
数组作为函数参数 |
||
作业要求:完成本节各知识点下的自测、上机实践, |
||||
13 |
第13周 |
第7章 |
教学资源:超星网络学习平台“章节”中的第7章7.2.5-7节视频及PPT |
|
用函数实现模块化程序设计中的变量的分类 |
要求通过视频及PPT,掌握变量按作用域分类及按存储类型分类。 |
变量的作用域与存储类型 |
||
作业要求:完成本节各知识点下的自测、上机实践, |
||||
14 |
第14周 |
第8章 |
教学资源:超星网络学习平台“章节”中的第8章视频及PPT |
|
善于利用指针 |
要求通过视频及PPT,了解指针的使用、变量的指针和指针变量 |
指针 |
||
作业要求:完成本节各知识点下的自测 |
||||
15 |
第15周 |
第9章 |
教学资源:超星网络学习平台“章节”中的第9章视频及PPT |
|
用户自定义数据类型 |
要求通过视频及PPT,了解结构体与共用体数据类型 |
结构体与共用体 |
||
作业要求:完成本节各知识点下的自测 |
||||
16 |
第16周 |
第10章 |
教学资源:超星网络学习平台“章节”中的第10章视频及PPT |
|
文件 |
要求通过视频及PPT,了解结文件的概念及使用。 |
考试模拟 |
||
作业要求:完成本节各知识点下的自测 |
||||
17 |
第17周 |
考试模拟 |
五、教学环节与教学方法
本课程采用以教师为主导、学生为主体的线上线下混合教学模式。课前教师利用多种信息化工具下达任务,学生登录课程网站自主学习与任务相关的微课视频、知识点自测。课中通过超星“一平三端”设置随堂练习,检测学生自主学习效果。通过思维导图梳理知识脉络,将学生自主学习的分散知识点系统化。采用案例分析、启发引导、操作演示、主题讨论、小组任务、归纳总结等教学方法内化课堂知识。课后通过上机实践、本章自测、应用拓展,自我提升。课程目标与教学方法的对应关系如表3所示。
表3 课程目标及其实现方法
课程目标 |
课程对应内容 |
实现方法 |
课程目标1 |
第1章 程序设计和C语言 第2章 数据类型、运算符与表达式 |
案例教学、课堂讨论和操作演示。通过讲授程序设计与C语言的关系、C语言的发展,使学生了解C语言程序设计在化工专业领域中的作用。通过案例教学、课堂讨论、操作演示等方法,使学生掌握数据类型、运算符与表达式等C语言基本知识,能够编写简单的程序展示化工专业范式设计结果。 |
课程目标2 |
第3章 顺序结构程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 |
随堂练习、思维导图、案例解析和演示、课堂讨论、小组任务。通过课堂随堂练习、思维导图,引导学生掌握顺序结构、选择结构、循环结构程序设计基本知识;通过案例教学、操作演示引导学生理解利用三种基本结构解决问题的常用算法,了解利用C语言程序设计进行数据分析与处理的原理、方法;通过课堂讨论、小组任务,培养学生创新意识、批判性思维和团队协作能力。 |
课程目标3 |
第6章 利用数组处理批量数据 第8章 善于利用指针 第9章 用户自己建立数据类型 第10章 对文件的输入输出 |
随堂练习、思维导图、案例解析和演示、课堂讨论、小组任务。通过课堂随堂练习、思维导图,引导学生理解数组、指针、结构体与共用体、文件等复杂数据处理方法;通过案例教学、操作演示引导学生掌握阅读、理解、编写、调试C语言程序的方法;通过课堂讨论、小组任务,引导学生利用计算思维方法收集、处理、分析数据,解决化工专业领域实际问题,同时培养学生创新意识、批判性思维和团队协作能力。 |
课程目标4 |
第7章 用函数实现模块化程序设计 |
随堂练习、案例解析和演示、课堂讨论、小组任务。通过课堂随堂练习、思维导图,引导学生理解用函数实现结构化、模块化程序设计;通过案例教学、操作演示引导学生理解自顶向下、逐步求精的方法分析问题、解决问题;通过课堂讨论、小组任务,培养学生计算思维能力,提高学生应用计算机解决化工领域实际问题的能力。 |
六、课程考核评价
本课程考核成绩评定由平时成绩S1与期末考试成绩S2两部分组成。
平时成绩S1
平时成绩的考核评价,采取全过程动态综合评价方式,用超星网络平台综合成绩S1表示,超星网络平台很好地留存了学生的学习数据,成绩计算公式如所(1)所示。
|
(1) |
其中,A、B、C、D分别表示课程视频、章节测验、章节学习、作业完成成绩,E表示课堂活动积分,包括参与问卷、分组任务、签到、讨论等活动。
期末考试成绩S2
《C语言程序设计》课程是一门实践性非常强的学科,为了检验线上线下混合模式教学效果,期末考试采用百科园网络考试系统进行上机操作考试,占期末总评成绩的60%。
本课程总评成绩S计算公式如式(2)所示。
|
(2) |
课程目标与考核内容及考核方式对应关系如表5所示。
表4 课程目标对应的考核内容及考核方式
课程目标 |
考核内容 |
考核方式/观测点 |
课堂表现 |
课程作业 |
课程考试 |
总评比例/% |
评价标准 |
课程目标1 |
第1章 程序设计和C语言 第2章 数据类型、运算符与表达式 |
课程期末上机考试(单选、填空、判断)/观测学生对C语言基本知识点的掌握 |
10 |
10 |
8 |
9 |
参见考卷标准答案 |
课程目标2 |
第3章 顺序结构程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错)/观测学生对三种基本结构及常用算法的掌握 |
30 |
30 |
35 |
32 |
参见考卷标准答案 |
课程目标3 |
第6章 利用数组处理批量数据 第8章 善于利用指针 第9章 用户自己建立数据类型 第10章 对文件的输入输出 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错)/观测学生对复杂数据结构及数据处理的掌握 |
30 |
30 |
29 |
30 |
参见考卷标准答案 |
课程目标4 |
第7章 用函数实现模块化程序设计 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错、程序设计)/观测学生结构化模块化程序设计方法的掌握 |
30 |
30 |
28 |
29 |
参见考卷标准答案 |
期末考试采用百科园考试系统上机考试,百分制计分,考核标准由考试系统确定;课堂表现与课程作业评价标准由超星网络平台系统记录确定。
表5 线上线下学习权重设置
线上线下学习权重 |
评价标准 |
课堂互动(10%) |
参与投票、问卷、抢答、选人、讨论、随堂练习等课程活动可以获相应分数,积分达55分为满分 |
课程音视频(45%) |
课程视频/音频全部完成得满分,单个视频/音频分值平均分配,满分100分 |
章节测验中等(20%) |
只计算为任务点的章节测验,取学生章节测验平均分,未做测验按“0”分计算 |
章节学习次数(20%) |
章节学习次数达300次为满分 |
讨论(5%) |
发表或回复一个讨论得2分,获得一个赞得2分,最高100分 |
七、教材与主要参考书
推荐教材
参考教材
苏小红编著. C语言程序设计. 北京:高等教育出版社,2011.4
[美]K. N. King 著. C语言程序设计:现代方法(第2版). 北京:人民邮电出版社,2010.3
进一步阅读教材
网络资源
超星网络教学平台:http://whpu.fy.chaoxing.com/portal
“C思计”微信公众平台
八、课程目标达成度评价
课程目标达成度从学生个体达成情况和课程整体达成情况两方面评价,前者将作为评判学生是否达到毕业要求以及能否通过课程考核的依据;后者作为课程实施质量的评价及持续改进措施的依据。当参加课程考核的学生班级数为2个班时,样本集为所有学生;当参加课程考核的学生班级为3个班及以上时,样本集通过间隔采样获取(按照所有学生学号序列间隔采样)。学生个体达成度统计表和课程整体达成度统计表如表7和表8所示。
表7 学生个体对课程目标的达成度统计表
毕业要求 |
课程目标 |
考核方式/观测点 |
分值 |
期望值* |
学生1 |
学生2 |
学生… |
平均值 |
指标点3.4 |
课程目标1 |
课程期末上机考试(单选、填空、判断)/观测学生对C语言基本知识点的掌握 |
8 |
|||||
指标点5.1 |
课程目标2 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错)/观测学生对三种基本结构及常用算法的掌握 |
35 |
|||||
指标点5.2 |
课程目标3 |
课程期末上机考试(单选、填空、判断)/观测学生对C语言基本知识点的掌握 |
29 |
|||||
指标点5.3 |
课程目标4 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错、程序设计)/观测学生结构化模块化程序设计方法的掌握 |
28 |
备注:*期望值根据各年度考核覆盖面、难度、预期区分度等因素调整,但不低于所对应课程目标观测点全分值的60%;课程考试采用百分制,各观测点得分值×40%后输入本表格。
表8 课程整体目标达成度评价及持续改进
课程名称 |
C语言程序设计 |
|||||
课程负责人 |
刘光蓉 |
|||||
课程组成员 |
刘光蓉、汪靖、杨建红 陆登波 李幼平 |
|||||
毕业要求 |
课程目标 |
考核方式 |
子目标达成度 |
主要问题 |
持续改进措施 |
备注 |
指标点3.4 |
课程目标1掌握C语言的基本知识,能够根据化工专业范式,编写程序展示设计结果。 |
课程期末上机考试(单选、填空、判断)/观测学生对C语言基本知识点的掌握 |
||||
指标点5.1 |
课程目标2理解程序设计常用算法,了解C语言在化工专业进行数据分析与处理的原理、方法,并理解其局限性。 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错)/观测学生对三种基本结构及常用算法的掌握 |
||||
指标点5.2 |
课程目标3理解阅读、编写、调试C语言程序的方法,能够使用C语言收集、处理、分析数据。 |
课程期末上机考试(单选、填空、判断)/观测学生对C语言基本知识点的掌握 |
||||
指标点5.3 |
课程目标4理解结构化、模块化程序设计方法,培养学生计算思维能力,提高学生应用计算机解决化工领域实际问题的能力。 |
课程期末上机考试(单选、填空、判断、程序填空、程序改错、程序设计)/观测学生结构化模块化程序设计方法的掌握 |
||||
课程负责人(签字) |
年 月 日 |
|||||
化学与环境工程学院教学指导小组审核(签字) |
年 月 日 |
备注:*课程分目标达成度计算方法为,样本中与课程目标对应观测点的平均得分/课程目标对应观测点的总分值。
执笔人:刘光蓉
2019年11月