基于培养计算思维的C语言程序设计课程改革思考
2017-04-18李芸
李芸
摘要:计算思维近年来在计算机领域和教育领域备受关注,作为社会输送人才的高等教育应重视系统地向渗透计算思维,使大学生具备利用计算思维解决实际问题的能力。以算法为核心、面向广大专业开设的C程序设计是计算思维能力培养的最佳土壤,然而目前大多数高校所开设的程序设计语言课程仍然采用传统的章节教学、定向实验方式,本文以C语言程序设计为例,阐述现有教学的弊端、改革的必要性和方向,旨在为全面推动计算思维为导向的计算机基础课程体系教学打下基础。
关键词:计算思维;C语言;课程改革
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)35-0136-03
高等教育的一项主要目标是培养学生的综合素质以提高其解决实际问题的能力,而计算机基础课群的教学在当前信息社会背景下实现这一目标方面起着极其重要的作用。教育部高等学校计算机基础课程教学指导委员会提出了大学计算机基础教学4个方面的能力培养目标:对计算机的认知能力;应用计算机解决问题的能力;基于网络的学习能力;依托信息技术的共处能力。其中,对计算机的认知能力和应用计算机的问题求解能力恰好反映了大学教育中对人才的计算思维培养的要求。具体来说,高等教育实现培养计算思维就是希望在遇到实际问题时,大学生能运用所学,结合自己的数学知识,按照工程化的方法如何用算法和计算机的软硬件手段去解決。在计算思维指导下解决问题的一般步骤是经过分析,抽取问题的共性来建立数学模型,针对于数据模型给出合适的优化算法,然后借助恰当的程序设计语言编码实现,进行反复调试和修改后最终运行给出可行的结果。同济大学的龚沛曾教授等将计算思维培养进一步细分为计算思维意识、计算思维方法和计算思维能力3个维度,这一思想为程序设计课程教学提供了更为明确的指导。
C程序设计是计算机基础课群中一门非常重要的语言课,不仅包含入门级程序设计、数据结构等方面的基础知识,还大量包含和体现了计算思维的算法理念、思维模式和解决问题的方法论。在C程序设计教学中以计算思维能力培养为导向,对于培养学生对计算机科学的理解和兴趣至关重要,不仅能为学生的编程学习和应用研究打下坚实的基础,养成良好的编程习惯,同时也能锻炼学生的计算思维和养成用计算思维的方法思考、解决问题的习惯。
然而,虽然C语言普遍面向全校非文科学生开设,但因其开设时间都安排在专业课开始前的第一学年,即面向的主体是大一新生。因此,理解计算思维的核心——抽象和自动化、进而培养计算思维,对于还处在计算机学习起点的学生来说还是比较困难的。
如何将计算思维通过C语言为代表的程序设计语言课程渗透到学生的日常中,培养其利用数学、工程性的思想借助计算机手段去分析、解决问题,使学生真正感受到计算思维带来的实用性、重要性、高效性应成为计算机语言教学工作者应积极思考并努力实践的首要问题。
1 C语言程序设计课程普遍现状
中国大多数高校都针对新生开设计算机基础课程群,以在进入专业课学习阶段之前尽量缩小学生的计算机水平的差距。其普遍采用的是大学计算机基础加程序设计语言或多媒体应用的组合,且教学模式仍然依赖教师上课时按照自己的备课教案、逐步完成自己的教学计划,随后实验课上再要求学生进行相应的上机训练。对于案例型教学、任务型实践渗透甚少,因而很难让学生对大数据环境和技术有深刻认识和掌握,自主研究性学习和探索难以实现,大大削弱了学习的主观能动性。在这种现状下的C语言程序设计课程教学中,学生普遍感觉课程听讲不难,但是实际动手能力弱,即被动接受、理解不深且不能将知识点综合运用,具体体现在以下几个方面:
(1)传统的授课方式依赖教师讲学生听,无疑会使整个学习过程中学生均处于被动接受的状态,无法提高学习积极性。由于课程教学侧重于语法知识,且教学进度安排死按章节分布。学生死记语法规则,在解决实际问题时却无从下手,教学效果欠佳。
(2)计算机类课程课时频频遭减,但为保证完成必要的教学内容,无疑会为了追求进度而放弃深度和引导学生自行思考解决的课时,学生来不及理解消化所学内容。
(3)过度强化等级考试。为提高考试通过率,会以考点作为教学目标,通过大量习题巩固,为了学而学,造成题库型、应试型学习模式,学完课程后不知道如何用程序设计方法解决专业问题。
(4)由于中学时的教学差异,入校时学生的计算机基础参差不齐。传统的教学组织无法顾及学生个体差异。
2 课程改革方向
C语言本身基本内容比较简单,但是需要对计算机基础理论、系统工作方式有一定的认识。整体教学内容深度可谓浅入深出。因此要求教学面向全局,既考虑章节知识点引入的合理性,更要将C语言深邃的内涵渗透进各教学部分。例如,C语言的数据类型丰富灵活,然而,这章通常在编程的逻辑结构之前介绍,容易枯燥且脱离应用不能让学生产生深刻的理解和体会。因此,应改变死板按照教材的章节分布来教学的模式,应以计算思维为导向,根据分析问题、解决问题时运用知识点的思维过程,结合任务型的实例来展开课堂教学。以任务驱动进行教学是培养学生计算思维能力的有效手段,可以充分使用案例串联课程各章节内容,并配以深入浅形式多样的讲解,自然可以改善教学效果,将计算思维的培养落到实处。由于各专业学生的知识储备不同,作为计算机通识基础课程,只有充分引入各行业案例,深入结合专业需要和实际,才能既激发学生学习兴趣,又帮助学生掌握各个知识点,且提高在实际问题中解决分析的能力。
C程序设计知识点看似简单却灵活复杂、且概念抽象,因此翻转课堂形式对于C语言程序设计教学非常适合。利用翻转课堂,在学习视频中即安排预习的课程内容尽兴课堂教学的预热,还可以将C语言中难于理解的语法、程序构建和程序分步执行过程录制成视频,以便学生反复观看。更可以针对任务型实验进行提问式或比赛式的实时互动,充分引入学生自主讨论机制,必将激发学生的积极思索和探索的兴趣,在实践中验证所学,在解决问题的过程中加深体会知识点的综合运用。
通过启发式教学方式引导学生思考,例如:如何使用C语言中的符号来描述系统。让学生真正理解这些命令、数据类型实际是一种建模元素,每种类型有着其特别的抽象描述能力。特别地,在C语言程序的环境中,借助于Visual C++ 6.0 平台的单步调试功能,可以形象地演示上述C语言程序的自动化过程。让学生对计算思维指导下有计划、有步骤地将实际问题的解决方案转化为使用计算机的软硬件环境的实际操作,立体地、具体地在程序设计语言的学习中感受计算思维和计算机技术结合的强大。程序设计教学应以发现问题→分析问题→寻求多种解决方案→各种解决方案对比→实现解决方案作为授课思路,让学生成为问题的解决者而不仅仅是程序设计员。
3 考核与评价
目前的课程考核方式主要分纸质试卷测试和上机考试系统测试两种主要类型。辅以平时的实验成绩作为参考,题型及考察方式对学生计算思维能力的评价非常弱,如果不改革考核和评价方式无异于对教学效果和学生学习热情的打击。因此,应大比例增加随堂测试、实验环节和课后分组任务完成的系数比例,以真实地反映学生的学习水平和在实际中解决问题、团队协作等的能力。
随堂测验要求学生课前指定的时间内按要求编写程序,经过交换批改评价,能按照模拟机器环境的检测步骤依次指出程序中的语法和逻辑错误,并总结原因和给出改正的结果,强化程序设计能力。另外,在讨论了程序的正确性的同时,应鼓励讲出最初的算法设计、数据结构设计,以及多种算法思路的实现,予以加分。在C程序设计教学过程中,强调算法多样性来培养学生的计算思维能力,培养学生的创新意识、探索精神和问题求解能力。在设计实验内容时,鼓励学生编写各种程序来实现同一个计算任务,鼓励改写别人编写的程序,从而培养学生计算思维的多样性和灵活性。在倡导算法多样化同时,还引导学生对算法进行反思 和进一步探索,从而达到简化并优化算法的目标,对于每一次教学都是分必要。
教师根据课堂检查情况和课后的微课平台互动及时调整教学计划和教学方法。成绩系数应随时根据课堂讨论和线上讨论的活跃度来调整设定。学生最终成绩由上述成绩综合评定,客观地反映学生的学习过程和学习效果。
在实验教学环节中,对于每一个题目都要严格上机操作规范,基本按如下步骤进行:
(1)分析题目,思考算法思路确定解决方案;
(2)根据软、硬件和算法确定所需的数据结构;
(3)定义参与运算的变量并赋初值;
(4)综合基本逻辑结构,确定解决问题的主要结构;
(5)确定输出方式;
(6)绘制 N-S流程图;
(7)基于N-S流程图编写源代码;
(8)准备测试程序的数据和预判结果;
(9)上机调试;
(10)修改并继续调试直至最终正确;
(11)归纳总结,形成实验报告;
(12)思考有否其他算法方案。
教育学生重视对实验过程及结果进行总结、归纳与反思,这是训练计算思维、在实践中学习、促进知识同化和迁移的极好途径。反思的内容,包括对上机实验结果的反思,对解题思路、分析过程、程序编写、程序执行过程的反思,对本实验所涉及的知识点的反思等。另外,要求学生以小组为单位交流讨论,组间互评以达到集思广益、取长补短的效果,通过相互的信息交换和积累,学习毫无疑问必事倍功半,在反复的实践反思和信息交流过程中,计算思维能力得到拓展。
4展望
社会生活与工作对计算思维的需要无处不在,但人们的计算思维活动却仍停留在无意识状态。因此,在C语言程序设计教学中要通过契合的案例教学训练将这种无意识转变成系统的、有意识的计算思维,将知识传授转变为基于知识的思维传授。针对C语言程序设计课程中渗透计算思维这一培养要求,以考查语言的语法知识为主的考核方式应转变为以考查学生的算法设计能力和系统建模能力为主。从培养编程人员转变为培养能系统思考解决方案、能综合运用综合能力设计算法,并最终借助可达到的计算设备来实现算法的综合性跨学科思维人才。培养学生从计算机的角度去抽象问题,思考解决问题的方法和步骤,主动用计算思维去解决问题,有意识地应用在结合专业领域问题处理中。通过实践培养学生勇于探索、多种解决方案比较、团结协作的精神,对于培养学生计算思维能力、创新能力有重要意义。
参考文献:
[1] 朱战备.产品生命周期管理PLM理论与实务[M].北京:电子工业出版社,2004(8):241.
[2] 万立,郑霞,刘清华.产品全生命周期管理平台的集成产品开发流程实现研究[J].计算机辅助程,2005(2):68-74.
[3] 龚沛曾,杨志强.大学计算机基础教学中的计算思维培养[J].中国大学教学,2012(5):51-54.
[4] 魏妮妮,潘天恒,张倩.基于计算思维的程序设计课程实验教学研究[J].武汉生物工程学院学报,2016,12(1):26-30.
[5] 吕俊,陆淑娟.以计算思维培养为导向的C语言程序设计课程教学改革[J].软件导刊,2016,15(8):213-215.
[6] 刘洋,邹汪平.计算思維导向下计算机程序设计课程教学改革策略研讨[J].无限互联科技,2016(9):89-91.
[7] 汪红兵,姚琳,武航星,张敏. C语言程序设计课程中的计算思维探析[J].中国大学教学,2014(9):59-62.
[8] 吕俊.大学 计 算 机 基 础 教 学 中 的 计 算 思 维 养 成[J].计算机教育,2013(5):43-46.
[9] 朱鸣华,赵铭伟,赵晶等.计算机基础教学中计算思维能力培养的探讨[J].中国大学教学,2012(3):33-35.
[10] 陈杰华.程序设计课程中强化计算思维训练的实践探索[J].计算机教育,2009(20):84-85.