邓红卫 王樱 魏书堤 蒋瀚洋
摘要:针对在计算思维影响下应用型本科院校程序设计课程教学改革面临的问题,提出基于计算思维能力与信息应用能力的课程教学改革想法,树立以培养信息应用能力为核心的教学理念,并就理论教学、实践教学和课程设计等环节的改革和实践进行探讨。
关键词:计算思维能力;信息应用能力;程序设计课程;教学改革
0 引言
计算思维概念一经提出,就引起了国内外学者和高校教师的高度关注,成为教学改革研究的热点。2010年7月,九校联盟(C9)在西安交通大学召开计算机基础课程研讨会,会后发表的《九校联盟(C9)计算机基础教学发展战略联合声明》明确提出:高等院校计算机基础教学的核心任务就是培养计算思维能力。各高校积极推进基于计算思维的大学计算机教育改革,但经过多年的教学改革实践表明,引入计算思维的大学计算机教育改革在实践过程中面临着种种问题,教学效果并不怎么理想,人们开始反思计算思维,甚至怀疑计算思维。究其根源在于人们对计算思维的研究尚处在初级阶段,并不成熟,特别在教学层面上没有形成一个完整的、清晰的、为人所接受的表达体系,离真正起到指导计算机教育改革的作用还有一定的距离。各高校在对计算思维理解不够透彻的情况下,囫囵吞枣急于推进,结果可想而知。2012年8月,以“新时期下计算机教育的改革与发展”为主题的第八届全国高等学校计算机教育改革与发展高峰论坛在云南昆明召开,论坛重点对非计算机专业大学计算机课程改革开展了研讨,与会的专家学者和一线教师通过研讨达成4点共识,其中最重要的一点共识是大学计算机教育教学改革需要分类分层次设计,我国高校教育有着明显的层次关系,各级院校的人才培养目标是不同的,基于计算思维的大学计算机教育改革必须分类型分层次进行,不能搞一刀切。昆明论坛更多地倾听来自应用型院校和高职院校一线教师的声音,明确分类分层次推进基于计算思维计算机教育改革的指导思想,为新时期下各类高等院校计算机教育的改革指明了方向。
C语言程序设计是非计算机专业学生入校第二学期所学的程序设计课程。c语言具有简洁而高效的语句表达和清晰的程序结构等特性,比较好地体现语言级问题的求解方法,是一门比较适合计算思维能力培养的课程。应用型院校的人才培养目标是培养适应当前社会经济发展的高级应用型人才,与研究型大学截然不同。对应用型院校而言,如何根据自身的特点,正确处理好计算思维能力与信息应用能力的关系,推进程序设计课程教学改革,实现培养出高级应用型人才的目标,是值得深入探讨和研究的问题。
1 理清计算思维能力与信息应用能力的关系
人类有两大基本能力:思维能力和行动能力。从社会发展的角度来看,人不仅是思维的存在者,更应该是行动的存在者。恰当的行动要比正确的思维或聪明的推理更有价值,这是所有人的共识。21世纪人类的行动能力可定义为:面对社会生活和职业活动,借助科学思维和现代技术的帮助,遵循科学行动规律,发挥创新精神组织项目、分析解决问题和完成任务的能力。行动能力可分为领域行动能力和科学行动能力两种。领域行动能力具有很强的专业特色,通常可以理解为专业综合应用能力。科学行动能力则具有普适性,通常可以理解为决策思考能力或设计构建能力。
应用型院校非计算机专业计算机教育的本质就是计算机应用的教育,培养计算思维不是目的,是有别于研究型大学和高职院校的。在计算思维影响下,身处中间层的应用型院校应该清晰地认识到:对于应用型人才,适时有效的应用要比单纯思考和坐而论道更有价值,不能认为计算思维永远高于应用,计算思维应该更有效地服务于应用才有意义。以信息应用能力培养为核心的非计算机专业应用型人才能力培养体系如图1所示,在该体系中,专业课程和计算机基础课程的学习是培养和提升计算思维能力的基础,计算思维能力需要多门相关课程的长时间学习训练和有效沟通方可形成。在计算思维能力形成的基础上,进一步培养学生利用计算机技术解决实际问题的信息应用能力,及时总结提升普适性科学行动能力。以专业领域行动能力和科学行动能力共同构成核心行动能力。
应用型院校应积极研究计算思维的内涵及其在应用型人才培养中的作用,从理论和实践层面处理好计算思维能力与信息应用能力的关系,在努力培养学生计算思维能力的同时,提升学生的信息应用能力,力求使计算机基础教育与非计算机专业教育的培养目标达成一致。应用型院校非计算机专业计算机教育应树立“以计算思维为主线,以信息应用能力为核心,以信息应用为目标”的教学理念,让学生具备适应社会各个领域发展要求的计算机应用能力。
2 基于计算思维能力与信息应用能力培养的教学改革实践
在图1所示的应用型人才能力培养体系中,计算机基础课程的学习是培养计算思维能力的基础。c语言程序设计作为大学计算机基础课程的重要组成部分,课程中的许多知识都为计算思维的培养提供了生动的案例,特别是对问题进行符合逻辑的科学分析、抽象成数学模型、进行算法设计、编程与调试、生成可应用于实际的程序,这是对计算思维很好的诠释,因此,c语言程序设计是培养学生计算思维能力的理想课程。在新时期大学计算机教育改革形势下,我们依据应用型人才的培养目标,重新规划该课程的课程目标,使之能够满足专业培养目标的要求;转变“重理论、轻实践”的教学理念,及时调整课程教学计划,理论课和实践课的课时比例调整为1:1,增加实践教学的比重;在理论教学和实践教学环节,把计算思维融入教学的主要内容中去,改进教学方法;在课程设计环节,通过综合实例提升学生的计算思维能力的同时,更多地培养和提升学生综合利用专业知识和信息技术解决实际问题的信息应用能力。通过各教学环节的改革和实践,取得了比较好的教学效果。
2.1 理论教学
在理论教学上,我们着力进行两个方面的改革:
(1)通过案例重新梳理教学内容。深入分析学生的认知规律和专业背景,遵循“理论够用,突出实践”的教学原则,按照课程知识的内在体系结构,通过教学案例设计重新梳理教学内容。在教学过程中,淡化语法规则,追求简单和实用,只讲最简洁、常用的语法格式,将其运用到实例中去,实现由单纯的语法教学向实用型教学转变。适当打破常规教学顺序,通过案例及早引入和使用函数、指针的概念,这样有利于分散教学难点,同时也符合学生的认知规律。通过大量的案例讲授和训练for、while和do…while3种循环结构的程序设计,采用单步调试执行循环体的方式,将循环体执行3-5次,利用watch窗口观察每行语句执行时循环体变量和中间变量的值变化情况,让学生能清晰地体会循环体的执行过程,然后通过调试体会含多重循环体的程序执行过程及功能,为后续的函数、数组、指针及结构体等复杂内容的教学打下良好的基础。endprint
(2)从计算思维的角度出发,通过案例的实现体验问题求解过程。在讲解案例时,面对案例中提出的具体问题,引导学生体会分析、解决问题的基本思路:求解问题的已知信息有哪些,求解问题的中间结果和最终结果将会是什么,这些已知信息、中间结果和最后结果怎样转化为计算机可以理解的形式,完成对问题抽象化的描述,建立数学模型;然后逐步明确解决问题的步骤,即解决问题的算法,算法可以用自然语言、伪代码或者流程图等描述;最后引入C语言编写编译代码、调试和执行程序,以实现解决问题的算法。在问题的求解过程中,将问题求解提升到计算思维的高度,让学生更深刻地理解计算思维的本质。
2.2 实践教学
实践教学是巩固理论教学知识、积累实践操作经验、培养计算思维能力的重要环节,也是训练学生运用计算思维方法探索解决实际问题的重要过程。实践教学内容设计遵循“由浅入深、循序渐进”的原则,分设验证型、探索型和综合应用型3种类型的实验,验证型和探索型实验在平时上机实验课中完成,综合应用型实验以课程设计形式完成。在验证型和探索型实验教学环节,我们着力做好以下几个方面的工作:
(1)规范上机实验流程。对于每次实验课,要求学生按照“课前思考→分析问题→拟定算法→编写程序→上机调试”的顺序依次进行。在每次理论课结束前的最后5-8分钟,教师给学生布置下次实验课的上机内容,提醒学生注意在实验过程中可能会遇到的问题,要求学生利用课余时间运用计算思维方法对问题进行分析,拟定好算法并画出流程图,编写出大致的程序代码。这些工作必须在上机课之前完成,并把它们写在程序编写本上,上机课时教师适时抽查学生这部分工作的完成情况。上机课中学生主要完成程序调试工作,在调试过程中,让计算机验证学生解决问题的想法,教师及时回答他们课前可能存在的疑问。上机实验流程的规范化,会让学生养成一个良好的学习、训练和思维习惯,提高学生在面对问题时独立分析问题和解决问题的能力。
(2)加强上机答疑引导。程序调试主要完成排除错误(语法错误或逻辑错误)和验证算法的正确性两项工作。对于错误的排除,在前两周的上机课中,教师通过集中讲解的方式,帮助学生排除一段程序中的语法或逻辑错误,并讲解规避错误的基本方法。在后续的上机过程中,程序编译链接时出现语法错误或逻辑错误,要求学生将错误信息记录下来,分析是什么原因引起的,并独立改正错误,避免下次犯同样的错误。对算法的验证,学生上机有疑问时,不直接为学生指出程序存在的问题,而是以提问的方式指出程序中可能存在的问题及其引发的结果,引导学生自己找到问题所在。这样有利于培养学生独立分析、判断问题的能力。
(3)反思上机实验过程。每次上机课结束后,要求学生课后对本实验及时归纳和总结,对问题分析、算法设计、程序编写、程序调试与执行过程进行全程反思。对于学生在上机过程中共同存在的问题,教师利用下次的理论课时间,集中讲解答疑,帮助学生反思。及时有效的反思过程,可以有效地优化思维品质、拓展学生计算思维能力。
2.3 课程设计
课程设计是一种面对工程项目实际问题,将数组、指针、结构体、链表及文件操作等知识有机地结合起来,按照软件工程的思想和步骤完成的一个综合应用型实验。在课程设计环节,我们注重做好以下几个方面的工作:
(1)尽早布置课程设计任务。在课程学习中期就着手布置课程设计任务,让课程设计时间延长为2个月。提前布置任务会使学生对该课程的学习目标更加明确,还会让学生对后续学习的结构体、链表及文件操作等教学内容更加期待,激发学生对后面章节内容的学习兴趣。有目的性的学习会加快教学进度,缩短教学时问,弥补教学时间不足。
(2)精选课程设计题目。课程设计题目通常分为通用型和专业型两种类型。学生成绩管理程序、同学通讯录、图书管理系统等为通用型课程设计题目。对于通用型题目,往往存在多届学生重复做相同题目的现象,抄袭现象很难避免,课陧设计就失去意义,应改编课程设计指导书,及时更新课程设计题目。在系部教学网站上发布往届学生优秀的课程设计案例及源程序,让学生用来模仿练手或对别人的程序进行改进。我们重点关注专业型课程设计题目的选取,充分考虑学生的专业背景和后续专业课程的学习要求,拟一些与专业密切相关的题目供学生选择,鼓励学生选专业型题目,训练学生分析和解决专业实际问题的能力。
(3)加强课程设计过程指导。为保证教师对学生的课程设计进行有效指导,首先应拓宽师生的沟通渠道,可以通过E-mail、QQ和教学网站的留言板等渠道来沟通。教师最好加入学生班级QQ群,方便师生及时交流,同时开放一个公用机房供学生上机调试程序,教师不定时到机房进行答疑或程序指导。在具体的指导过程中,教师在给予帮助的同时要做好问题的引导,不是靠单纯地给出答案,而是要通过“授人以渔”的方式指导学生独立完成。教师要了解和关心学生,为学生提供课程设计所必需的信息和材料,不限定工程项目实施的方法以及完成的形式,尊重学生的想法和设计,为学生发挥自主创新留出充足的余地。
(4)注重课程设计项目评价。课程设计的评价注重学生在整个实施过程中的能力体现,评价内容包括学生课程设计各环节中的态度、表现及成果质量,评价方法可采用小组评价和教师综合测评等方法。为保证评价的公平公正,增设答辩环节,既检测学生完成项目的真实性,又可以培养学生语言表达能力、反应能力和竞争意识。在答辩过程中要求每个学生都要针对自己的设计进行系统功能演示,陈述算法设计构想和后期努力的方向,之后回答教师的提问。教师的提问侧重算法设计和代码实现部分,教师根据学生的回答情况来给出每个学生的成绩。
2.4 课程考核
对学生的课程考核分期末考试和课程设计成绩评定。期末考试在机器上完成,考试内容为基本概念、程序调试和小程序的编写,主要针对学生对基本知识的掌握情况和问题求解能力的考核。期末总成绩由平时成绩(30%)和期末机试成绩(70%)组成,课程设计成绩由教师对学生项目评定给出。这样使学生的成绩能更客观地反映学生的学习过程和学习效果。
3 结语
在新一轮基于计算思维的计算机基础课程教学改革形势下,培养信息应用能力是应用型院校非计算机专业计算机教育的核心。实践证明,我们主动地、有意识地将计算思维培养融入理论教学和实践教学各个环节的同时,在课程设计环节,以工程项目形式把学生融入有意义的任务完成过程中,不仅有利于学生理解计算机解决现实问题的实现机制,更有利于学生用计算机学科的思维方式来求解问题,培养了学生的信息素养、创造性地解决问题的能力和合作意识。
(见习编辑:刘丽丽;编辑:郭田珍)endprint