以计算思维能力培养为导向的C程序设计实验教学
2013-08-02刘光蓉
刘光蓉
(武汉工业学院 数学与计算机学院,湖北 武汉 430023)
C程序设计是一门非常重要的计算机课程,不仅包含程序设计的基本知识,还大量包含和体现了计算思维的基础概念、思维模式和解决问题的方法。在C程序设计教学中以计算思维能力培养为导向,对于培养学生对计算机科学的理解和兴趣至关重要,不仅能为学生的编程学习和应用研究打下坚实的基础,养成良好的编程习惯,同时也能锻炼学生的计算思维和养成用计算思维的方法思考、解决问题的习惯。
1 计算思维
美国科学基金会计算机与信息科学工程部主任周以真教授2006年在ComputationalThinking一文中指出:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为[1]。它是人的根本的概念化的思维方式,是数学和工程思维的互补与融合,是思想而不是人造物。其本质是抽象(abstraction)和自动化(automation)。抽象是通过简化、转换、递归、嵌入等方法,将一个复杂问题转换成许多简单的子问题并进行求解的过程,这是任何科学发现的必然过程;自动化是充分利用计算机运算能力来实现问题求解,以弥补人的计算缺陷,这将丰富计算机的应用范围。因此计算思维是一种形式规整、问题求解和人机共存的思维。”
计算思维概念一经提出,就引起了国内外研究者的注意。2007年,为了寻找计算机科学与其他领域交叉研究的新方法,微软研究院在美国卡内基·梅隆大学建立了计算思维中心。2008年,ACM明确提出将计算思维作为计算机科学教学的重要组成部分。2010年在西安交通大学举办的首届“九校联盟(C9)计算机基础教学课程研讨会”上,明确提出计算机基础教学的核心任务是计算思维能力的培养[2-3]。上海交通大学和南方医科大学正在试开设新课程 “计算机科学导论:计算思维”。该课程按“计算思维”的主要内容,即问题求解、系统设计和人类行为理解设置内容。
2 C程序设计实验教学目标
大学教育最主要的目标是学生综合素质与能力的培养,而计算机基础教学在实现大学教育目标方面起着非常重要的作用。教育部高等学校计算机基础课程教学指导委员会提出了大学计算机基础教学4个方面的能力培养目标[4]:对计算机的认知能力;应用计算机解决问题的能力;基于网络的学习能力;依托信息技术的共处能力。这4个方面的能力目标中,对计算机的认知能力和应用计算机的问题求解能力[5],恰好反映了计算思维的2个核心要素:计算环境和问题求解。
C程序设计是工科专业计算机基础教学中的一门重要课程,是计算思维中语言级的问题求解。因此,计算思维能力不仅是C程序设计教学培养的核心能力,而且还涉及C程序设计教学的核心知识。据此,确立我校学生学习C程序设计,主要学习计算机分析和解决问题的基本过程和思路[6]。C程序设计实验教学中以计算思维能力培养为核心任务,以讲授程序设计方法为主要内容,加强上机实践,使学生通过实践感受和领悟计算机问题求解的基本方法和思维模式,为提高学生综合素质、培养学生创新能力奠定基础。
3 合理设计实验教学内容
C程序设计课程是理论与实践并重的课程,在实际教学过程中必须将理论教学与实践教学紧密结合,使其相互促进。为了解决学生对所学知识缺乏必要的感性认识的问题,必须设计合理的实验教学内容,将知识传授、技能训练、能力培养融于一体,让学生做中学,学中做,使所学理论知识在实验中得到验证和应用。
为了达到“理论够用,突出实践”的原则,将C语言的全部知识点归纳成9个核心知识点[7],按照知识的难易和相关性将教学过程划分为基础能力模块、中级应用能力模块和高级应用能力模块,见表1。
根据C程序设计3个教学模块,将C程序设计实验教学内容采用循序渐进、由浅入深的方法,分为验证型实验、设计型实验、综合型实验,使学生在记忆中理解,在理解中应用,在应用中创新。
表1 “C程序设计”教学模块
3.1 验证型实验,使学生熟悉C程序设计计算环境
基础能力模块知识是学生编程与应用的基础,要求学生记忆与理解,因此将基础能力模块的实验教学内容设置为验证型实验,使学生熟悉C程序设计的计算环境和开发步骤,了解C源程序的特点、结构及书写格式,掌握C语言基本数据类型、运算符与表达式,掌握数据的输入与输出,理解3种基本结构,能够解决较完整的编程问题。
验证型实验要求学生模拟教师解决问题的方法完成实验内容,是计算思维方法的模仿。强调演示和证明科学内容的活动,是为了培养学生的实验操作、数据处理、计算、观察等个别智力技能,学生通过验证标准的已知程序理解和学习基础能力模块的知识,比直接学习这些知识重要得多,学生们可以非常直观地看到各个知识点在实际程序中的应用,快速熟悉C程序设计实验环境,快速记忆与理解C语言的基本知识。
学生在进入验证型实验前,教师要引导学生回顾需要验证的C语言基本知识,讨论实验步骤,提出注意事项,同时还要针对学生普遍容易出现错误的操作进行示范。
3.2 设计型实验,培养学生计算思维能力
中、高级应用能力模块知识要求学生在理解基础知识的基础上学会应用,能编写相对复杂的程序,因此将中、高级应用能力模块的实验教学内容设置为设计型实验。该部分实验内容按照等级考试机考题型设置为程序填空、程序改错、程序设计[8],要求学生按照提出问题、分析问题、设计算法、绘制N-S结构流程图、编写程序、上机调试的过程进行。
设计型实验综合运用多种计算思维方法分析问题和解决问题,是计算思维方法的综合运用。设计型实验要求学生在掌握了一定的实验技能和方法的基础上,运用所学C语言基本知识,自行提出问题、分析问题、解决问题,通过算法分析、观察实验结果、对程序运行结果进行分析处理等环节最终得出正确的研究结论。设计型实验是通过实践提高学生发现问题、分析问题和解决问题的能力,培养学生勇于探索、严谨求实、团结协作的精神,对于培养学生计算思维能力、创新能力有重要意义。
设计型实验,教师对程序填空、改错、设计,提出关联思考,引导学生讨论,鼓励学生提出多种解决方案。
3.3 综合型实验,培养学生应用和创新意识
为了更进一步地培养学生发现问题的能力和探索、创新精神,拓展和升华计算思维,在C程序设计教学辅助平台设置了“擂台赛”,结合学习进度定期给出一个综合型程序设计题,激励学生利用课外时间编程并将源程序在规定的时间上传,然后由教师批阅学生上传的程序并评比出擂台赛冠军。对参与擂台赛的学生的平时成绩进行加分鼓励。擂台赛既能让学生综合运用所学知识,也能让学生通过自身实践获得成就感,激发学生进一步主动创新学习的热情。使学生好强好胜的心理得以充分的体现,培养了学生的竞争意识,增强了学生适应竞争日益激烈的社会形势的能力,潜移默化地培养学生的计算思维和应用创新能力。
4 面向计算思维的C程序设计实验教学
C程序设计实验是提高实践能力、积累经验、学懂计算思维方式的重要环节,是锻炼学生对计算思维方法的运用、探索解决实际问题的重要过程。因此,在C程序设计课程教学过程中,改变偏重理论和课堂教学的传统模式,尝试以上机实验为重点、以计算思维能力培养为导向的教学模式,让学生能够“在编程过程中学习知识、在学习过程中拓展思维”。
4.1 规范上机实验流程
对于每次实验内容,要求学生按照“课前预习-上机调试-归纳总结”的顺序依次进行,对于每一个题目都要按如下步骤进行:
(1)分析题目,确定所需要数据结构;
(2)给参与运算的变量赋初值;
(3)利用3种基本结构解决问题;
(4)输出结果;
(5)绘制 N-S流程图;
(6)根据N-S流程图编写源程序;
(7)准备测试程序的数据和预期结果;
(8)上机调试;
(9)归纳总结。
规范的上机实验流程[9],能够使学生养成一个良好的学习和思维习惯,提高学生分析、解决问题的能力。
4.2 上机指导重点是加强引导
学生上机实验有疑问时,用提问的方式引导学生自己找到问题所在。上机输入、编辑和调试程序时要求学生对于上机过程中出现的问题,除了因系统而引起的问题以外,一般应独立处理,不要轻易提问。在编译链接出现“出错信息”时,要求学生将错误信息记录下来,分析自己是犯了什么错误导致编译链接时出现这样的提示信息,避免下次犯相同的错误,下次即使犯了相同错误也可以很快地修改错误,让学生在上机调试程序时养成独立分析判断问题的能力[10]。通过实践得到的经验才是记忆最深刻、掌握最牢固的知识。
4.3 提倡算法的多样性
由于学生认知方式和认知风格的差异,必然会导致算法多样化。在C程序设计教学过程中,强调算法多样性来培养学生的计算思维能力,培养学生的创新意识、探索精神和问题求解能力。在设计实验内容时,鼓励学生编写各种程序来实现同一个计算任务,鼓励改写别人编写的程序,从而培养学生计算思维的多样性和灵活性。
在倡导算法多样化同时,还引导学生对算法进行反思和进一步探索,从而达到简化并优化算法的目标[11]。例如:在判断一个数是几位数时,学生最常用的算法是利用选择结构来判断,而当一个数是5位或更多时,利用选择结构就比较复杂了,因此,引导学生利用循环来实现一个数位数的判断,并在此基础上进一步地引导学生求解各位数的和与积。
4.4 反思实验过程,拓展计算思维
上机实验结束后,要求学生对本次实验进行反思[12]、归纳与总结,这是训练思维、优化思维品质、促进知识同化和迁移的极好途径。反思的内容,包括对上机实验结果的反思,对解题思路、分析过程、程序编写、程序执行过程的反思,对本实验所涉及的知识点的反思等。还要求学生以小组为单位交流反思,集思广益、取长补短,获得更多的学习信息量,在交流反思中,计算思维能力得到拓展。
5 考核评价机制
以计算机思维能力培养为核心的C程序设计实验教学,还引入了以学生在实际生活和学习中运用所学的知识和技巧的能力为目标的评价机制。优秀的评价机制,可以点燃学生的学习热情,激发他们的创新欲望。对本课程的考核,我们采用机考,同时结合平时表现及擂台赛的参与情况,给出最终成绩。
分析学生机考和笔试成绩,结合平时表现及擂台赛参与情况,发现学生对C语言基本知识的掌握情况、分析问题、解决问题的能力大大增强,编程能力也大有提高,学生在学习本课程前后情况发生了很大的变化。比较结果见表2。
表2 实验教学效果比较
6 结束语
在C程序设计实验教学中以计算机思维能力培养为核心,可以充分发挥学生在学习中的主体作用,调动学生学习的主动性,帮助学生掌握知识、发展能力,形成正确的学习观。同时实施计算思维能力培养为核心,要求教师必须不断增强自身的创新意识,不断改革创新,提高教学能力。实践已经证明,以计算思维能力培养为核心,对于培养具有创新精神和实践能力的21世纪X型人才有着重要推进作用。
(References)
[1] Jeannette MW.Computational Thinking[J].Communications of ACM,2006,49(3):33-35.
[2] 何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9):5-9.
[3] 陈国良.计算思维与大学计算机基础教育[G].济南:第六届大学计算机课程报告论坛,2010.
[4] 教育部高等学校计算机基础课程教学指导委员会.高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求[M].北京:高等教育出版社,2009.
[5] 王荣良.信息技术课程中算法学习的价值探索[J].中国电化教育,2008(8):78-81.
[6] 臧劲松.培养学生计算思维的程序设计课程教学[J].计算机教育,2012(1):78-80.
[7] 谭浩强.C程序设计[M].4版.北京:清华大学出版社,2010.
[8] 刘光蓉,汪靖,陆登波.C程序设计实验与实践教程[M].北京:清华大学出版社,2011.
[9] 于晓强,赵秀岩,闫丕涛.计算机程序设计课程中计算思维能力的培养[J].计算机教育,2011(13):18-21.
[10] 耿国华.程序设计能力培养模式的探索与实践[J].中国大学教学,2009(3):30-32.
[11] 陈杰华.程序设计课程中强化计算思维训练的实践探索[J].计算机教育,2009(20):84-85
[12] 陈婷.C语言程序设计实验教学改革探究[J].实验技术与管理,2010,27(10):182-184.