基于计算思维的C语言实验教学改革探索

2016-12-15 19:02何雪英
电脑知识与技术 2016年27期
关键词:计算思维C语言教学改革

何雪英

摘要:C语言是一门实践操作性非常强的课程,实验教学是C语言教学至关重要的环节,是学好C语言的关键。本文通过分析C语言实验教学中存在的问题,在对培养目标和方法、实验教学内容、实验指导方法、考核方式等方面进行了改革探索,旨在培养学生的计算思维能力,提高学生利用计算机综合分析、解决问题的能力。

关键词:计算思维;C语言;实验教学;教学改革

中图分类号:G64 文献标识码:A 文章编号:1009-3044(2016)27-0097-02

1 引言

C语言是国际上广泛流行的一种通用计算机编程语言,常用来作为高校学生学习程序设计技术的入门课程, 具有实践操作性非常强的特点。这门课程除了要求学生掌握理论教学有关的知识,更重要的是通过实践教学让学生掌握编程的技能,真正理解程序设计的思想,培养学生综合分析实际问题的能力。因此,要使学生学好这门课程,在重视理论课教学的同时,必须加强上机实验操作环节和计算思维能力的培养,使大学生在掌握计算机应用技能的基础上,潜移默化地养成用计算思维方式解决专业问题的习惯[1]。

2 目前C语言实验教学中存在的问题

2.1做不到学以致用,C语言教学的必要性受到质疑

课程概念抽象、逻辑性强,采用的是一种全新的思维方式来解决问题,学生初次接触,入门难,感觉枯燥乏味,学习兴趣下降,即使学会了也大都是按课本例题照猫画虎,根本理解不了课程的精髓--计算思维能力和分析问题解决问题能力的培养,因而在遇到新问题或和实际相结合的问题时,并不会运用计算机的思维方式,去思考和解决问题,更不会将所学知识应用到自己的专业领域,课程存在的必要性受到质疑。

2.2注重语法教学,忽视计算思维和编程能力的培养

教师在实验课上多数是强调语法、语句的练习。学生在学习C语言过程中,也只关注语言本身,只注重语法和基本语句结构的训练,结果只是“记住”了语法和语句命令的格式,而忽视了对编程思想的把握和编程能力的提高,甚至于很多学生把编程当成了打字练习,只会把书上的完整程序原封不动地输入电脑[2]。在遇到新问题或和实际相结合的问题时,并不会运用计算机的思维方式,把需要解决的问题用C语言来描述和表达。而且冗繁的语法规则学起来枯燥乏味,学生渐渐就会失去学习兴趣。

2.3实验教学内容设置不合理

实验教学内容的设置主要立足于C语言本身的一些语法规则,为加深对各种语句、语法等细节的理解,主要以验证型实验和设计型实验为主,缺少综合型和开放型实验。而且所有专业采用统一的大纲,统一的要求,没有和专业相结合,更不能反映专业之间的差异。对水平较高的优秀学生不能提供进一步学习的机会。

2.4考核方式单一、不实用

普遍采用“一卷定终身”的单一、封闭的书面考试形式,或实验成绩只单纯地占很少的比例。而在美国,实验、平时测试和课堂作业占到课程总成绩的70%,而期末考试成绩只占总成绩的30%甚至更少,这充分说明了他们是重视过程的教育,关注学生能力的培养,而非我们的应试教育,这一点是值得我们借鉴的。

3 实验教学改革措施

针对以上提出的在C语言实验教学中存在的几点主要问题.笔者对C语言的实验教学进行了改革探索,并将相关内容运用到实际教学中,都收到了良好的效果。

3.1明确以“计算思维能力”培养为核心培养目标

计算思维教育是目前国内外高校的研究热点之一,目的是培养一种像计算机科学家一样思考问题的思维习惯。2006年,美国卡内基梅隆大学周以真(Jeannette M.Wing)教授在国际计算机权威期刊Communications of the ACM给出计算思维的定义:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解的涵盖计算机科学之广度的一系列思维活动[3]。周教授认为计算思维应该成为每个人的一项基本技能,就像普通人都拥有“读、写、算”(简称 3R)能力一样,而不仅仅计算机科学家具备。“大学计算教育振兴的途径”(CPATH)计划在2009年申报的项目中提出了具体的以计算思维为核心的课程改革[4]。2010年7月,九校联盟(C9)计算机基础课程研讨会旗帜鲜明地把“计算思维能力的培养”作为计算机基础教学的核心任务[5]。2015 年7 月,在第四届“计算思维与大学计算机课程教学改革研讨会”上,浙江大学何钦铭教授明确了以计算思维为核心的改革方向。程序设计课程的最终目标是培养学生利用计算机解决问题的意识、方法和能力,这一点和计算思维的定义是相通的,因而学习程序设计是理解和培养计算思维的最好途径[6]。高等学校培养创新人才的一个重要内容就是潜移默化地培养他们的计算思维能力。无论哪个学科,具有突出的计算思维能力都将成为新时期拔尖创新人才不可或缺的素质[5]。

3.2注重计算思维能力和编程能力的培养

要用计算机解决现实生活中的问题,首先要将现实生活中的问题转化为计算机能解决的问题,对于刚接触程序设计语言的学生来说需要有一个适应过程。这就需要我们在授课过程中给学生讲清楚如何将现实生活中的问题转化为计算机能解决的问题,如何构建问题的抽象模型,重点探讨分析问题和设计算法的思维过程。下面以典型的累加算法为例,求1+2+3+4+5+6,来说明计算机解决问题的思路。

首先我们可以先引导学生利用解数学题的方法求解[7]:

step1: 先求1+2,得到结果3。

step2: 将step1得到的结果3再加上3,得到结果6。

step3: 将step2得到的结果6再加上4,得到结果10。

step4: 将step3得到的结果10再加上5,得到结果15。

Step5: 将step4得到的结果15再加上6,得到结果21。这就是最后的结果。

然后给学生分析:这种算法虽然在理论上是正确的,但步骤太繁琐,且不具有通用性。比如若求1+2+3+…+1000,则需要999步,显然是不可取的。需要找到一种通用的解决方法。

采用计算机解决问题的方法,可以定义两个变量,一个变量代表被加数,一个变量代表加数。因为只需要最后一步的结果和,前面所有步骤的中间和就不需要保存,因此不需要另设变量存放中间结果,而直接将每一步骤的相加和都放在被加数变量中,再借助循环结构来求结果。今设s为被加数,i为加数,可以将算法改写如下:

S1: 令s=0

S2: 令i=1

S3: 将s+i,中间和仍放在变量s中,可表示为s+i=>s

S4: 使i的值加1,可表示为i+1=> i

S5: 如果i小于等于6,则重新返回执行步骤S3、S4和S5;否则,算法结束。最后得到s的值就是1+2+3+4+5+6的值。

显然这个算法比第一种算法简练,关键是还具有通用性、灵活性,可以举一反三。例如,可以用同样的思路方便的求出1+2+…+1000,1+3+5+7+…,甚至再复杂一些的1+1/2+1/3+…1/n,还可以将累加推广到累乘,算法只需作很少的改动即可。有了清晰的思路,明确的解题方法之后,只要套用C语言语法规则将解题思路转化为C代码即可。这就是计算机解决问题的思路和方法。因此教学过程中老师不应该把注意力集中到C语言的诸多语法特点和限制上,而应该集中到解决问题的思路上。

这样,学生明白了计算机的特性,知道了怎样用计算机思维去分析问题,解决问题,那么在遇到同一类问题时学生就知道如何去解决了,从而也就在不知不觉中养成了计算思维的习惯。

3.3优化实验教学内容,考虑专业差异

根据大纲要求,制订详细、规范的实验教学计划。在保证能够验证理论知识点的基础上,精简验证型实验项目,增加结合现实问题的设计型和拓宽学生知识面、培养计算思维的综合型实验项目,适当设置发挥个人特长的开放型实验。

每个专业对学生计算机能力的培养应该是与本专业的知识结构密切结合的。在题目的具体设置过程中,和专业相联系,并考虑专业之间的差异,编写不同类别、不同层次的实验项目。比如对医学、人文、外语类等专业设置和本专业相关的一些题目,并且难度和要求稍低,而对偏重于理工科的专业,学生基础稍好,对该课程的要求也较高,因而可以相应的增加综合型实验的数量和难度,对优秀的学生还可设置一定数量的开放型实验。

3.4 改革实验指导方法,采用启发式教学

秉承“以学生为主体,教师为主导”的教育理念,改变“填鸭式”的灌输,采用“启发式”教学方法。这可以从两个方面来体现。

1)针对学生在实验过程中遇到的问题,首先引导学生分析,为什么出现这种错误,让学生自己思考,逐步解决问题。这样学生对实验的理解就会更加深刻,学到的知识也更扎实。

2)采用不断完善的例题实行启发式教学。介绍新知识点时,在原有问题的基础上增加新内容,先让学生尝试用原有知识点解决,在原有知识遇到困难的情况下,给出新知识的解决方案,新知识点在问题不断完善的过程中逐步引入,这样知识之间就有了连贯性,新知识的引入也水到渠成,易于被学生接受。

3.5 改革考核方式,采用形成性教学评价

改变原有的“一卷定终身”的单一、封闭的书面考试形式。采用形成性教学评价,突出过程考核和编程能力的考核,增加实验考核的比重,制定能全面反映学生各方面能力的实验成绩综合评估办法[8]。

实践证明,重在过程的考核可以让学生把功夫用在平时,重视实验课,真正理解和掌握了程序设计的思想,用来解决实际问题。而传统的“死记硬背”的应付考试的方法,即使期末获得了很好的成绩,却不一定真正掌握了运用这门语言解决实际问题的能力。

4 结束语

以上所述,只是笔者在多年的C语言实验教学中总结出来的一些心得和体会,实际上在改革过程中还存在很多问题,值得我们进一步去挖掘和探讨。

参考文献

[1]何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9):5-9.

[2]项响琴. 应用型本科院校C语言实验教学改革的探索[J].电脑知识与技术,2008(1):191-193.

[3]Jeannette M.Wing.Computational Thinking[J]. Communications of the ACM,2006,49(3):33-35.

[4]陈国良,董荣胜.计算思维与大学生计算机基础教育[J].中国大学教学,2011(1):7-11.

[5]九校联盟(C9)计算机基础教学发展战略联合声明[J].中国大学教学,2010(9):4-9.

[6]黄静,高延英、杨宇姝.基于计算思维的程序设计课程教学模式研究[J].计算机教育,2013(5):51-54.

[7]谭浩强.C程序设计(第四版)[M].北京:清华大学出版社,2010.

[8]宋秀芹,赵志敏,曹金风.文科计算机教学的计算思维能力培养“落地”问题[J]. 计算机教育,2016(4):124-126.

猜你喜欢
计算思维C语言教学改革
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
程序设计课程中计算思维和应用能力培养问题研究
论子函数在C语言数据格式输出中的应用