非计算机工科专业C语言程序设计教学改革与设计
陈庆燕
摘 ?要 針对学生在学习C语言程序设计之初通常不清楚该课程在整个课程体系中的作用,进而不重视该课程,以及不同的非计算机工科专业与C语言结合的紧密程度不同的现状,探索教师对于不同非计算机工科专业在进行准确的学情分析的前提下,对教学模式进行改革,以期能较早地培养学生利用C语言解决本专业相关的问题,更好地培养学生的计算思维。
关键词 非计算机工科专业;C语言程序设计;计算思维;教学设计
中图分类号:G642.0 ? ?文献标识码:B
文章编号:1671-489X(2020)11-0082-03
1 前言
C语言程序设计是绝大多数非计算机工科专业的一门非常重要的学科基础课程。该课程是以C语言为媒介向学生介绍计算机程序设计的基本思想,培养学生的算法思想、程序意识、计算思维,可以运用计算思维分析和处理自己专业领域的问题。并且学生一旦通过学习C语言掌握了程序设计思想,就能较容易地根据实际需要学习其他高级程序设计语言。可见,C语言对于非计算机工科专业的学生来说非常重要。然而,C语言程序设计课程一般是其学习的首个编程语言,此时学生还不具备任何程序设计思想,再加上C语言本身数据类型比较多,语法较复杂,结构灵活多变,因此,客观上来说该课程的学习难度较大。
2 目前非计算机工科专业C语言程序设计教学中存在的问题
学生不清楚C语言程序设计课程在整个课程体系中的作用 ?该课程一般是非计算机工科专业学生的公共基础课,并且是学生学习的第一门计算机语言类课程。据调查,对于非计算机工科专业的学生来说,C语言程序设计课程一般在大学一年级下学期或大学二年级上学期开设,而这段时期学生刚刚开始接触专业课,对自己的专业情况及以后的就业方向缺乏深刻的认识,并且对开设的各门专业课在整个课程体系中的地位及前驱后继关系缺乏高屋建瓴的把握,更不清楚学C语言对于将来学习其他专业课起什么作用。因此,学生对C语言程序设计课程的学习缺乏足够的重视和兴趣,总是当后续课程用到C语言的知识时才后悔当初没有好好学。
针对各非计算机工科专业的C语言程序设计课程内容无区别 ?一般教授C语言课程的教师都是计算机专业的,对其他工科专业的课程体系不甚清楚,并且每个专业的课程体系也在不断调整变化。因此,一般把C语言程序设计的教学目标定位为使学生掌握高级语言编程的基本概念,学会利用C语言结合算法解决简单的实际问题。教师的教学基本是先讲解C语言本身的语法和编写结构,再通过一些常用的小例子让学生熟悉编程方法和技巧,进而掌握一定的算法设计思想。针对各非计算机工科专业的学生,课程的内容和使用的例子差别不大,几乎不涉及与本专业相关的练习,因此,学生在学习过程中无法体会该课程在本专业课程体系中的作用。
3 C语言程序设计课程新的教学方案设计
先进行学情分析 ?不同的专业对于C语言的应用以及与自己专业结合的紧密程度是不同的,因此必须根据专业特点和培养方案先对学情进行分析。首先,任课教师要先熟悉所教专业最新的课程体系,准确掌握C语言程序设计在该专业中的地位和作用;其次,教师在授课之初就要让学生了解C语言程序设计课程在本专业中的地位和作用及与后续课程的关系,使学生对C语言学习重视起来。只有先重视起来,才能提升后续的学习质量。
以光电信息科学与工程专业为例,为了提高学生对C语言程序设计课程的兴趣,使C语言和其专业应用更有效地融合,消除部分学生认为C语言已经过时的认识,就要使学生知道大部分的工科专业都要学习控制系统的开发。而控制系统的开发是硬件、软件相结合的过程,技术性较强,不但要了解单片机的硬件结构,还需要掌握一门编程语言。对单片机进行编程可以用汇编语言,也可以用C语言。与汇编语言相比,C语言在功能、结构性、可读性、可维护性上有明显的优势,易学易用,因此,越来越多的单片机工程师使用C语言来开发系统。Keil C完全支持C语言的标准指令与很多用来优化的C语言的扩展指令,我国90%以上的单片机工程师使用Keil C开发单片机系统。更要让该专业的学生明白,C语言程序设计课程的学习目标对于光电信息科学与工程专业来说是以C语言为工具,培养学生的计算思维,是后续学习“单片机原理与应用”“传感器原理与应用”“自动控制”“数控编程”“机器人技术”“PLC原理及应用”等专业课程的基础,是进行电子设计竞赛、物联网竞赛和毕业设计的重要支撑。
教学内容的改革 ?在整体教学设计上采用螺旋模型方式(见图1)。在整个教学中贯穿的教学理念是从点到线再到面,最后延伸到后续课程的知识点,注重培养学生的计算思维。
图1说明:
1)红色的箭头长度代表当前累计的授课内容,螺旋线的每个周期对应一个知识单元;
2)每个阶段开始(左上象限)的任务是确定该知识单元的教学内容和目标,为完成这些目标设定教学方案;
3)下一步工作(右上象限),根据设定的教学方案讲授新的内容;
4)通过上机实验、课堂提问等方式,分析学生对本单元知识点的掌握情况,如果掌握得好就启动下一步(右下象限),否则分析原因、补充知识;
5)最后(左下象限)是评价该阶段的教学效果并计划下一阶段的工作。
1)整体教学设计。
2)单元教学设计。在单元教学设计中针对每一单元知识,除设计一些基本案例以外,根据专业特点再设计一些以解决本专业问题为导向或对后续课程有启示作用的案例,以增强学生学习本课程的兴趣,并且让学生在本课程的学习中对自己的专业和后续课程有初步的认识,再辅助以任务驱动、启发式教学等方式,促进学生的研究性学习。
①在学习基础知识时,可以先设计一个基本案例,再通过该案例的扩展逐步延伸到对其他知识点的练习,达到启发式教学和学生研究性学习的效果。如将“输入一个数,判断该数是否为水仙花数”设置为基本案例来练习分支结构,在此基础上延伸生成案例“找出100到1000之间的水仙花数”,练习循环结构与分支结构的嵌套;再生成扩展案例“输入两个数n和m,输出n和m之间的所有的水仙花数”,使学生知道怎么改进才能使程序更灵活。
②通过一些经典问题的介绍,让学生明白人类通过计算机的辅助能轻松完成古人不能完成或很难完成的任务,以增强学生学习C语言的动力。如出自我国古代数学家张丘建所著的《算经》的“百钱买百鸡问题”,在古代只有那些能人异士才能算出来,而现在通过计算机的辅助能轻松完成。再比如著名的“哥德巴赫猜想”,也可以通过编程来验证猜想的正确性。
③结合专业特点使学生对本课程产生兴趣。指针是C语言中的一个非常重要的概念,通过指针可以直接对一定的内存地址进行操作。因此,指针对于后继课程中有“单片机原理与应用”的光电信息科学与工程专业的学生来说是要重点掌握的。但指针本身是比较抽象和难掌握的,可以通过设计一些小案例,让学生既体会到指针的本质和灵活性,又能对内存有更深的了解。请看下面两个程序段:
程序1运行后会报错,因为使用“const”这个关键字声明的变量a是不能更改的。但程序2所示,通过指针就能绕过编译器的审查而改变a的值。这会让学生感觉到指针很神奇,从而对指针的学习产生兴趣,也对内存数据的存放、读取有更深的认识。
为了进一步提高学生的学习兴趣,可以根据不同的专业设计一些稍综合型的案例,比如针对光电信息科学与工程专业来说,可以设计模拟单片机中流水灯的案例,使学生理解赋值操作及循环结构与输出的模拟流水灯字符之间的关系。
4 结语
本文结合滨州学院实际情况及笔者多年的教学经验,对于面向非计算机工科专业的C语言程序设计课程的教学进行了一些探索和改革。教师应先熟悉该专业的课程体系,準确定位C语言在其课程体系中的地位和作用,并在上课之初就让学生清楚地知道,让学生重视C语言这门课程。在整体教学设计上采用反复迭代螺旋式增加的过程,以达到较好的教学效果。在设计教学案例时,应包含一些以解决本专业问题为导向或对后续课程有启示作用的案例,以期能较早地培养学生利用C语言来解决本专业相关的问题,更好地培养学生的计算思维。
参考文献
[1]顾丽红,丁淑妍.计算思维驱动的C语言程序设计课程教学实践[J].计算机教育,2015(20):92-95.
[2]张亚平.非计算机专业的C语言程序设计教学实践[J].计算机教育,2010(13):120-121.
[3]李丽新.高校非计算机专业C语言教学改革的探讨[J].吉林建筑大学学报,2015,23(1):111-113.