内容组织

在课程整体内容编排方面,考虑到来华留学生的数理逻辑思维基础不足,本课程组提出了“螺旋式”教学内容组织架构。程序设计课程入门较难,学生普遍反映的问题是听课能听懂,可课下再自己看课本又不会了。例如,大多数留学生学习数据类型、运算符和表达式时还是很有积极性的,课堂内容也掌握的不错,课下内容也能按时完成;但是一到接触条件语句,循环语句和数组这部分内容,就有一些学生掌握不了了,出现这种现象的原因是学生没有转换到程序设计的思维上,不理解如何将人的思维模式转变为计算机内部存储和计算资源的调度问题上去。因此,我们在课程内容组织方面,采用了螺旋式的介绍方法,着重于编程问题的解决,而把较为复杂的有难度的语法知识延后或者穿插介绍。

授课环节

在授课环节设计方面,考虑到来华留学生的信息化能力较弱,本课程组提出了“边学边做”的教学方案。即,将课内教学与上机实践紧密结合,强调留学生的实践能力,培养学生的实际编程能力。上机实验是学习程序设计语言的重要环节,自己编写的程序上机调试运行中,可能有很多想不到的错误,通过改正这些错误,可逐步提高自己对C++语言的语法的理解力。在以往的教学过程中我们发现,很多留学生由于信息化基础较差,在自修的编程过程中往往浅尝辄止了,不懂得如何利用开发环境自发的调试程序。为了克服该问题,我们在上课时采用偏向于上机教学的教学组织方式,在授课学时内多通过实际编程环境演示、知识点探索展示等环节提高学生对于编程环境的熟悉程度,在上机学时时鼓励学生自主利用编程手段了解和学习C的语法,让学生通过自己努力体会编程的喜悦感与自信心,切实提高学生的实践编程能力。

实验环节

在实验环节的具体编程实验的设计方面,我们也采取遵循“螺旋式”教学组织的思想,对各教学现场实验的内容进行编排,实现“前后关联,螺旋上升”的效果。例如在讲授“数组与函数”的时候,要求学生编制实现数组元素随机化的函数;该函数在后续内容“数组排序”的时候,可以被重复调用,用以观察冒泡排序的元素交换过程。而针对冒泡排序的算法,也要求学生编制相应的排序函数;该函数在后续内容“指针与函数”的时候,要求学生改用指针偏移寻址的方式重写一遍,用以对比分析数组名和指针在访问数组元素上的区别。通过这样的对比实验,加深了学生对于关键概念的理解和认识,也达到了鼓励学生多修改自己的代码的效果,激发了学生主动通过代码修改学习新概念的动力。

考核设计

本课程在课程考核方面,较为强调实践教学成绩的构成,以及平时学习过程的成绩。最终课程成绩中,课堂教学实验和课后作业实验的完成情况占比30%(其中课堂教学实验的成绩会部分参考基于微信的课堂问答交互的成绩),机考成绩占比30%,笔试成绩占比40%。

教学大纲

一、课程名称(中、英文)

中文名称:C 语言程序设计

英文名称:C Programming

二、课程类型、课程代码

课程类型:必修

课程代码:0810092

三、学时与学分

总学时:64 (含32学时上机实验)

总学分:4

四、授课方式

全英语教学

在实验机房上课,边授课边实验

五、课程教学目标

计算机程序设计电子通信类本科生的必备的专业技能。C语言是本专业广泛应用的一种程序设计语言。本课程讲授C语言的基本语法,培养学生的基本编程能力。

1. 掌握C语言的基本语法,包括表达式、控制语句、函数、数组、指针、结构体等;

2. 掌握结构化程序设计的基本思想;

3. 具备用编程解决较为简单的问题的能力;

4. 掌握基本的程序设计的技能,能够进行程序调试;

5. 了解软件工程与软件开发规范。

六、教学计划

本课程的授课学时的教学内容与教学目标具体安排如下:


第1章:计算机、Internet和万维网导论(2学时)

了解计算机组成原理,理解计算机软件与硬件的区别;

理解机器语言、汇编语言和高级语言的区别;

掌握C语言的典型开发环境与开发流程;


第2章:简单C语言程序设计入门(2学时):

掌握简单C语言程序的构成;

掌握C语言基本输入输出函数(printf、scanf)的使用;

掌握C语言变量的声明与使用;

掌握简单的C语言算术表达式;


第3章:C程序控制I(4学时)

掌握C语言的基本数据类型(int等);

掌握C语言的表达式(算术、赋值、逻辑等);

掌握C语言的条件控制语句(if、if…else…);

掌握C语言的循环控制语句(while);

掌握计数控制循环、标记控制循环的编程方法;


第4章:C程序控制II(4学时)

掌握C语言的基本数据类型(float、double、char等);

掌握C语言的类型转换的概念;

掌握C语言的表达式(条件、逗号、自增自减等);

掌握C语言的条件控制语句(switch…case…);

掌握C语言的循环控制语句(for);

掌握C语言的其它控制语句(break、continue);

理解结构化程序设计的基本原理;


第5章:C函数(6学时)

掌握C语言函数的原型声明、函数定义以及函数调用;

理解C语言函数调用堆栈的概念;

理解基于值的函数参数传递与基于引用的函数参数传递的区别;

理解C语言存储类型和标识符作用域的概念;

掌握C语言多个源文件和头文件的工程编制方法;

了解常用的C语言的预编译处理指令的使用方法;

掌握递归的基本原理,具备编制简单递归程序的能力;


第6章:C数组(6学时)时)

掌握C语言数组的声明、定义和使用,理解数组存储的特征;

掌握向函数传递数组的编程方式;

掌握典型的一维数组的排序算法:冒泡排序;

掌握典型的一维数组的查找算法:线性查找和折半查找;

了解二维数据的声明、定义和使用方法,理解二维数据的存储特征;


第7章:C指针(6学时)

掌握C语言指针变量的定义、初始化和使用;

理解变量地址与变量值的区别;

掌握取地址、间接寻址的指针运算符的使用;

掌握通过指针实现基于引用的函数参数传递的编程;

理解const限定词对于指针类型函数参数的作用;

理解基本的指针表达式和指针运算,掌握指针与数组的关系;

了解指向数组的指针、指针数组、函数指针等概念;


第10章:结构体;第12章:数据结构、链表(4学时)

掌握C语言结构体的定义、初始化和成员访问的使用;

掌握向函数传递结构体的编程方法;

理解链表的数据结构的含义,能够进行链表的插入、删除、修改等操作;