APP下载

民族院校工科专业《C语言程序设计》教学改革实践与探索

2018-07-18景何仿

课程教育研究·上 2018年22期
关键词:学业评价C语言程序设计教学方式

【摘要】本文针对民族院校工科专业《C语言程序设计》课程教学中出现一些问题,诸如教师难教、学生难学、学习主动性不高、不能学以致用等,在教学内容、教学方法、学业评价方式等方面进行了全面改革探索。教学实践表明,改革方案能较大幅度的调动学生学习积极性,增强学生的逻辑思维能力和编程能力,较大幅度提高了学生的学习成绩。

【关键词】C语言程序设计 教学改革 教学方式 学业评价

【中图分类号】G642.0 【文献标识码】A 【文章编号】2095-3089(2018)22-0236-02

1.引言

为了培养满足社会需求的具备信息技术素养的复合型人才,高校毕业生不但要具备一定的计算机基础知识,而且具备一定的计算机程序设计基础。计算机程序设计语言种类较多,如汇编语言,BASIC、LOGO、PASCAL、FORTRAN、C、C++、Java等语言体系。由于C语言具有简洁紧凑、灵活方便、运算符和数据结构较为丰富、结构化程度高、程序执行效率高、可移植性好、能对硬件直接操作等诸多优点,近年来备受人们青睐。目前大多数高校理工科专业的计算机程序设计语言课程,都把C语言程序设计作为首选。

C语言虽然具有诸多优点和广阔的应用领域,然而,由于其语法灵活,运算符非常丰富,学生普遍感到枯燥难学,加之非计算机专业该课程课时明显偏少,更增加了这门课的教与学的难度。针对这种现象,高校教育工作者在教学改革方面做了许多工作。卢向群(2007)[1]通过重点抓学生创新精神、自主及合作能力的培养,灵活安排教学内容等环节,提高学生程序设计课程的创新能力;李学俊等(2010)[2]提出一种新的启发式方法——问题诱导启发式程序设计语言教学方法;祁昌平和高彩霞(2014)[3]将迁移理论应用到该课程的教学中;曹惠雅和王峰(2014)[4]将计算思维的思想应用到C语言教学中,给出了以计算思维为核心的教学模式;陈益等人(2014)[5]针对不同知识结构采用多种教学方法灵活运用教学相长,激发和挖掘学生的学习兴趣和动力;薛冰冰和李敏(2014)[6]提出了在该课程教学中采取问题导向为主,逐层深入为辅,循序渐进地转换学生的学习目标,在潜移默化中培养学生的编程能力;杨柳和钟诚(2014)[7] 从重视第一课堂,采用多样化的教学手段以培养学生自主学习能力,强化算法以训练学生的编程思维能力等方面讨论了C语言教学的新思路。

以上的研究成果在一定程度上丰富了C语言程序設计课程的教学实践经验,为我们的教学改革提供的线索,给出了启示。然而,可以发现,以上研究成果有的是针对计算机专业的学生,有的虽然是针对非计算机专业的学生,但仅从问题的某一方面进行改革探索,得到的经验普适性较差,对于我校这样的民族院校不一定适用。

民族院校学生基础普遍比较薄弱,学习积极性不高,工科学生数学基础不太扎实,《C语言程序设计》课时普遍偏少(以我校为例,全部学时仅为48)。因此,针对民族院校的非计算机类工科专业,有必要对该课程从教材、教学大纲、学时分配、课堂教学、上机实践、学业评价等方面进行系统地改革探索,找出一套合理的教学改革方案,调动学生学习的积极性,增强学生的编程能力,为后续有关课程的学习奠定基础。

2.教学内容改革

目前《C语言程序设计》课程的教材较多,其中以谭浩强所著的《C语言程序设计》[8]比较经典,已经过多次改编和再版,为大多数高校选用的教材。我校在教学中也选用这本教材。经过多年的教学发现,该教材虽然内容丰富全面,注重实例引入,由浅入深,容易理解。然而,教材中所举例子比较陈旧,有些例子过于繁杂,语法知识偏多,不完全适合于民族院校学生的特点,特别是非计算机类工科专业。

因此,在教学中,对教学内容进行一定的改革探索,给出以下几点建议:

(1)教学中要注意重点突出,详略得当

由于民族院校学生基础相对比较薄弱,课时量不足,教学时切忌面面俱到,追求体系完整。否则教学中会出现蜻蜓点水、走马观花的现象,学生无法理解掌握所学的知识和编程技巧。教学中不必片面追求所教知识系统的完整性,应该将精力放在核心内容和知识点上,要求学生重点掌握基本的语法知识、算法思想和三种基本结构的程序设计上,而对数组、函数和指针等内容可以略讲,有的内容可以不讲。

(2)替换一些与专业相关的例题和习题

教材中部分例题比较经典,可以保留。但部分例题和习题比较陈旧或繁杂,与所学专业没有任何联系,应该予以替换。但由于该课程一般放在大学一年级进行,这时学生基本上还未接触多少专业知识,因此只能设计一些专业领域比较浅显易懂的题目,不宜过难,目的是增强学生的学习积极性。

(3)理论知识和上机编程并重

《C语言程序设计》是一门理论和实践相结合的课程,教学中切忌片面强调理论知识或上机编程。教学时,理论和上机课时比例一般为1:1,如果选择在机房上课,可以在上完一小节理论课后马上让学生动手练习,或者一边进行理论教学,一边进行上机编程,效果较好。因此,教学中应该精心设计教学内容,基本满足一大节课(两小节)教学内容(包括理论和上机)的完整性。

(4)通过实例引入语法知识

C语言语法知识相对比较枯燥,如果一开始就讲语法知识,然后讲其应用,无法引起学生的兴趣。在教学中可先举一个包含所讲语法知识的实例,按照从算法设计、程序流程图到上机编程的顺序进行讲授,然后将用到的语法知识进行讲解,这样会吸引学生的注意力,将所教的语法知识学好。

(5)重视算法在编程中的作用

诸多关于C语言方面的教材一般重视语法讲授和编程实践,但对算法缺乏足够的重视。算法是程序的灵魂,编程时,尤其是编一个较为复杂的程序时,应该先设计好算法,给出程序流程图,然后再根据流程图进行编程。就如建一座高楼一样,先应该设计好图纸,再进行施工。因此,在教学内容中,应该给予算法相应的比重,对于编程问题,应该根据需要,先设计相应的算法,如伪代码、流程图、N-S图,让学生养成先设计算法,再进行编程的习惯。

3.教学方法改革

根据民族院校工科学生的特点,结合《C语言程序设计》课程本身的一些特点,并参考近年来关于该课程教学方法改革的一些文献资料,在教学中采用了以下一些方法:

(1)分组讨论法

将每班学生分成若干组,一般每组4-5人,每个小组选一名组长。课堂提问和上机编程时,每个小组内部可进行充分讨论并互相分工协作,然后选一名代表进行回答或上讲台将自己小组的程序进行讲解,并按小组记分。这样,一方面培养学生的语言表达能力和编程能力,另一方面,也养成了学生分工协作和互相帮助的习惯,培养了学生的集体荣誉感。

(2)任务驱动法

在教学中,有意识的引入任务驱动法,可起到事半功倍的效果。如讲解循环结构程序设计时,可以给出以下任务:

1+2+3+…+100.

先简单介绍以下这个任务的背景:当年数学家高斯在上小学时因为同学们淘气惹恼了老师,老师随即布置了以上任务给同学们,谁先完成,谁就可以先回家。当年小高斯用技巧很快完成了这道题。然后,把上述任务重新展示给同学们,让同学们利用计算机编程计算。

不同同学可能有不同的计算思路,有的同学可能利用等差数列求和公式计算,有的同学逐次求和进行计算。提示:由于计算机是不怕重复计算的,后一种方法正好符合计算机的特点。但编程时,如果逐个求和,将以上式子全部寫出来,程序将非常冗长,效率非常低。如何用简洁的方法进行计算?在此基础上很自然引入循环语句。

算完上述式子后,再布置以下任务:

1+3+5+…+99

200+198+197+…+100

1·2·3…·100

让学生在不断完成设定的任务中熟悉循环语句的用法。这样,学生很自然的就会掌握了所学知识。

(3)情景教学法

每一个编程题目都应该根据身边的实际问题或者专业领域有关问题进行设计,而不能照本宣科。如果仅将事先编好的程序在PPT上展示一下,讲解一下就完事,这样的教学效果是可想而知的。应该根据问题先分析问题的解决办法,设计算法,逐条编制程序,包括变量的类型定义、使用,数据的输入输出,关键语句的选用等等,都要在编制程序过程中予以介绍。只有这样,才能让师生身临其境,一起来解决相关问题,感受到解决问题的快乐。以下举例说明。

如人口增长预测问题。2005年末中国人口为130756万人,如果人口的年增长率为1%,到哪一年中国人口将超过15亿? 1000年以后中国的人口呢?

首先,指出这个问题是关于中国人口的问题,与同学们息息相关,让同学们不仅学习编程,更在得到计算结果后,对人口增长的现实问题有深刻的认识。

其次,给出人口增长的计算公式。设原来人口为p0,年人口增长率为r,则n年后的人口为:

pn=p0(1+r)n

然后,根据上述计算公式设计算法流程图(N-S图)如下:

最后,上机编程。上机演示编程时,由于在机房授课,可让同学们一起打开编程软件(VC++), 和教师一起编程。(1)提示要输入预编译命令#include,否则无法进行正常的输入输出操作。(2)输入主函数 void main(){ }, 提示小括号不能丢掉,大括号要成对出现,在大括号里面输入函数体。(3)定义变量类型。由于人口数y较大,不宜用整型数,应该用双精度实型数(double)进行存储,而人口增长率r可用单精度实型数(float)或双精度实型数(double)均可,年份y应该用基本整型数(int)即可。(4)选择程序语句。由于涉及重复多次的计算,应该用循环语句,可用for、while、do while语句均可。(5)输出结果。可用库函数printf,强调该函数的使用方法。(6)运行程序。先调试、连接,最后再运行。若有问题,检查问题,修改后再调试、连接、运行。

4.学业评价改革

目前《C语言程序设计》课程学业评价体系的不合理,在一定程度上影响了学生的学习主动性和积极性。如重视理论考试,轻上机实践,重视终结性考核,而轻视平时性考核。这就导致了学生平时不认真上课和学习,也不重视上机实践,在考试前临时突击一下就行了。结果学生真正的编程能力并没有培养起来。因此,针对民族院校工科学生的特点,制定了合理的学业评价改革方案,把过程性评价和终结性评价放在同等重要的地位上。而过程性评价包括出勤、课堂表现、平时作业、平时测验、实验成绩、自学报告、课程设计等方面,每一方面都予以量化。终结性评价包括理论考试成绩。

我们在教学实践中,加大了过程评价在整个学业评价中所占比例,其中过程评价和终结评价所占比例各占50%。过程评价成绩(P)及终结评价成绩(F)都按百分制计算(即满分为100分),总评成绩(T)= (P+F)/2。过程评价成绩(P)由以下几部分组成:

1)出勤(P1): 10分,主要包括课堂教学、作业辅导、上机实验等的考勤,缺勤一次扣 1 分,迟到两次扣 1 分,请假 4 次扣 1 分,扣完为止。

2)课堂表现(P2) :10 分,主要包括回答问题(6分),课堂纪律遵守情况(4分),如发现睡觉、玩手机、交头接耳现象,发现一次扣1分,扣完为止。

3)作业成绩(P3):15 分,主要考查书面作业完成情况,每次批改作业按完成情况给 A、B 、C 、D 四个等级,其中 D 为不交作业情形,最后汇总。

4)自学情况汇报(P4):5分,布置选学内容,让学生自学并提交学习报告,根据情况给分。

5)实验成绩(P5):40分,主要考查学生的编程能力能力,可分小组(每组4-5人)进行2-4次编程测试,每组选一个代表进行讲解,根据讲解情况当场按小组打分。

6)平时上机测验(P6):10分,每次在上机实验课可根据同学们编程程度不同,给定给 A、B 、C 、D 四个等级,最后汇总。

7)学生互评(P7):10 分,组织学生进行分组互评,在每个小组内部给出A、B、C、D四个等级,然后根据等级给出合适的成绩。

终结评价成绩即为期末考试卷面成绩。综上,学业评价总评成绩的计算方式为:

T=(P1+P2+P3+P4+P5+P6+P7+F)/2

5.结语

本文针对民族院校工科专业《C语言程序设计》课程,在教学内容、教学方法、学业评价方式等方面进行了全面改革探索,得到了比较系统的教学改革方案,并在本校2016级水利水电工程本科生中进行实施。教学实践表明,改革方案能较大幅度的调动学生学习积极性,增强学生的逻辑思维能力和编程能力能力,成绩显著。今后,将进一步完善该课程的教学改革方案,将其推广到民族院校其他非计算机类工科专业《C语言程序设计》的教学中。

参考文献:

[1]卢向群. 程序设计语言课程创新能力培养探析. 中央民族大学学报(自然科学版):2007,(2):185-188.

[2]李学俊,李龙澍,徐怡.问题诱导式程序设计语言教学方法. 计算机教育, 2010,(16):44-47.

[3]祁昌平, 高彩霞. 迁移理论在“C程序設计”教学中的应用. 河西学院学报, 2014,(5):118-211.

[4]曹惠雅,王峰. 论C语言教学中计算思维的应用. 教育教学论坛, 2014, (28): 278-279.

[5]陈益,杨晓艳,童亚拉. “721”人才培养模式下C语言程序设计学习兴趣的构建. 教育教学论坛, 2014,(6):271-272.

[6]薛冰冰,李敏. 基于问题导向的C语言程序设计教学改革与探索. 教育教学论坛, 2014, (45):142-144.

[7]杨柳,钟诚.C语言教学新思路. 大众科技,2014,(5):168-169.

[8]谭浩强.C语言程序设计(第二版).北京:清华大学出版社, 2008.

作者简介:

景何仿(1969,6-),男,教授,甘肃岷县人,研究方向为计算流体力学。

猜你喜欢

学业评价C语言程序设计教学方式
“真”学习:基于“教学做合一”的教学方式改进
浅谈新型信息化教学方式的困境及解决策略
翻转课堂教学模式下的学生学业评价改革
高校课程考试模式与大学生素质培养目标的错位
产学结合模式下的高职学生学业评价体系探索
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践