非计算机专业本科生计算思维能力的培养与应用实践
2016-06-10叶文珺王剑云张超
叶文珺 王剑云 张超
摘要:本文首先介绍了计算思维的概念以及在计算机公共课程中引入计算思维的必要性,然后阐述了提高计算思维能力的多种途径,包括:通过程序设计课程类课程培养学生计算思维、通过上机实验培养计算思维、通过大学生科创提高学生计算思维等几个方面。
关键词:计算思维;程序设计;上机实验
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)14-0115-02
一、引言
计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维同我们的阅读、写作能力一样,是人类的基本思维方式。这种思维方式运用计算机科学的基础概念和方法对问题进行描述、建模、求解,是一种具有普适性的科学思维方法。
二、在计算机公共教学中引入计算思维的原因
有了计算机,人类就能用自身智慧解决那些计算时代之前不敢尝试的问题了。然而,长期以来,信息技术只是被社会看成一种高科技工具,计算机科学技术也被构造成一门专业性很强的工具性和辅助性学科,很多非计算机专业的学生从来就没有体验过计算的愉悦:基本原理的互相影响,计算思维的方式,以及有趣的问题解决。2006年,随着周以真教授的“计算思维”课程(面向所有专业的一类“计算机科学导论”课程),以及Tim Bell教授領导的针对中小学生的“不插电的计算机科学”等不同类型的计算思维课程的成功开设,人们开始考虑用“计算思维”来全面改造传统的大学计算机教育。2009年3月,ACM在网上公布的CS2008中,将原来在“导论”课程中的计算思维放到整个计算学科的教学过程中,认为“计算思维”对计算机课程教学越来越重要,报告建议将“计算思维”放在计算机课程教学的中心地位。
由此可见,不能将程序设计、大学计算机这些计算机基础课程简单地看成工具性课程,而应将其作为培养学生计算思维能力的重要课程来看待。那么,如何在课堂上结合课本的知识点培养学生的计算思维能力,使得计算思维成为学生的一种思维习惯,并能够运用计算思维的方法进行问题的分析和思考?我们在计算机公共基础课程的教学中,在这方面进行了一些有益的探讨及实践。
三、多种途径提高计算思维能力
程序设计类课程曾经一度是只以讲述程序设计语言的语法知识为主的应试课程,课程枯燥乏味,远离应用。为了把程序设计从应试课程转变为一种实践工具,目前程序设计类课程多以培养学生运用编程语言解决实际问题的编程能力为目标,使学生掌握一门编程语言的基本语法、语句、控制结构,以及程序设计的基本思想和方法,使学生认识到算法、良好的程序设计风格及实践在的重要性,培养学生熟练使用一门编程语言分析和解决实际问题的能力。进而培养学生的计算思维能力,使学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力,为学生进一步学习其他专业课程打下坚实的基础。
(一)在程序设计类课程的教学中,采用基于任务驱动及算法多样化训练的计算思维培养方法
在程序设计类课程教学改革中,首先要转变和更新教师的教学理念,从传统的“以传授计算机知识为主”转变为“以培养计算思维”为主,研究从“教给学生什么知识”转为“教给学生什么思维方法和能力”,以及如何确保由“知识传授”转为“基于知识的思维传授”的问题,旨在让学生不仅“学会”,更要“会学”,不仅“爱学”,更要“学有所获、学以致用”,不仅“学会知识”,更要“学会思维方法”。
基于任务驱动的教学方法及算法多样性训练可以激发学生的思维活动,强化计算思维训练。
1.采用基于任务驱动的教学方法。为了将计算思维的培养和课堂教学有机地融合,我们在教学过程中综合采取任务驱动教学、整班教学与小组教学、多媒体教学与网络教学等多种方法开展教学,充分发挥各种教学方法的优势,积极采取多种途径帮助学生在算法课程的教与学中有意识地加强计算思维的培养。
运用任务驱动教学法的教学形式是:提出任务→师生共同分析完成任务的方法和步骤→适当讲解或自学或协作学习→完成任务实践→交流或归纳。而传统的教学形式是:基本概念介绍→举例解释→巩固型独立练习→小结评讲→上机练习。在这个过程中,学生的学习基本上是被动的。采用任务驱动教学法,在课堂教学中,首先提出一个需要完成的具体任务,与学生共同分析解决该问题所需的知识、方法和步骤,围绕具体任务进行适当的概念教学和举例讲解,或引导学生来独立完成,也可以合作完成。目的是通过完成任务,掌握学习内容,学会学习,培养综合能力。在这个过程中,教师要参与一些学生的讨论去发现问题,个别的问题个别回答,带有普遍性的问题在全班回答或讲解。要引导学生掌握教学内容,适时交流,发现新思路,推广新思路,鼓励创新。教师进行比较、评讲、归纳,或由计算机执行,学生从中得出结论,共同进步。
采用任务驱动教学法进行教学,教师的教和学生的学都是围绕如何完成一个具体任务进行的。教师教学思路清晰,学生学习目的明确,学习就变成了学生的主动行为,更容易掌握学习内容。
2.尊重学生不同的认知方式,重视算法多样化训练。算法多样化的本质是尊重学生不同的认知方式,在教学过程中由于学生认知方式的差异,必然会导致算法多样化。教师应该尊重每位学生的个体特征,鼓励学生从不同角度认识问题,用不同方式表达算法,用不同方法实现问题求解。同时教师给予适当的评价,就是尊重学生不同的认知方式。
在教学过程中,教师不但要倡导算法多样化,还要引导学生对算法进行反思和进一步探索,从而达到简化并优化算法的目标。将一个计算任务用多种思路、多种算法进行求解,可以发展学生计算思维的灵活性。算法多样化让学生可以用自己喜欢或能够理解的算法,通过交流、评价得到计算结果。
研究表明,问题可以更好地激发学生的求知欲,使学生注意力集中。学习不应是简单地接受课本一成不变的知识,而应在原有问题的基础上不断引导学生从不同的角度发现新的问题,拓展思维方式,培养创造精神。教师可以在讲解完课本上的经典例子后,启发学生将其修改后应用于一个实际问题中。教师在备课时,不仅要熟悉消化教材内容,更要精心设计课堂情境,准备好“问题”,设置好“陷阱”,引导学生积极思考,逐步培养学生发现问题、分析问题、解决问题的能力。
(二)尝试以上机实验为重点的计算思维教学模式
程序设计类课程是实践性学科,上机实验是培养学生计算思维能力的重要手段,是程序设计课程教学的核心。
1.实验内容分层次。按照难度不同将实验内容分成了概念基础实验、应用基础实验和应用提高实验三种类型。我们将概念基础实验设计为验证性实验,如某种数据结构的表示和实现并将此种数据结构封装为一个类,并要求所有的学生都必须实现;应用基础实验,则是利用已实现的某种算法或数据结构实现的一个简单应用;应用提高实验,是利用已实现的某种或某几种数据结构实现的一个综合应用。后面两种类型的实验又分设若干实验题,每个实验题都设有难度系数。我们要求每个学生必须完成概念基础实验和一道应用基础实验题,选做一道提高实验题,所选应用基础实验题和提高实验题的难度将作为成绩评定的一个依据。
2.增强实验内容的趣味性和综合性。通过计算任务的趣味性、综合性等来增强实验内容的难度,从而强化计算思维训练。大学生一般对新鲜事物好学、好问并富于幻想,初遇计算任务时往往兴致盎然,幻想编写程序。但在传统教学中,缺少趣味性和综合性,进而导致同学们没有学习兴趣,所以,设计实验内容尽量生活化、趣味化。例如,我们在C语言程序设计的实验教学中,引入了学生熟悉并感兴趣的“学生点名系统”、“四则运算测验系统”等题目,从分支程序设计开始就引入这类实验,进而在循环、数组、函数、文件等部分的实验中不断改进完善系统功能。当学生完成实验的最终版本时,已经综合运用了这门课程中的所有知识,同时享受到了完成一个作品的成功感,极大提到了学生的学习兴趣。
(三)通过指导大学生科创激发学生的学习兴趣,培养学生的计算思维能力
大学生科创旨在进一步推动高等教育教学改革,促进人才培养模式和教学方法的创新,鼓励和支持大学生尽早参与科学研究、技术开发和社会实践等创新活动,不断提高大学生的创新精神、创业精神和实践能力。通过指导学生科技创新项目,以現实中的实际项目为驱动,进一步激发学生的学习兴趣,并在实际的项目中,深入培养学生的计算思维能力,让学生在边做、边思考、边学习的过程中养成良好的计算思维。近几年来,完成的比较优秀的科创项目,每年都参加市级甚至全国的程序设计大赛,都能取得不错的成绩,这反过来又能激发学生对程序设计的学习热情,也为教师的课堂教学提供案例。
四、结论
计算思维的培养不是通过一两门课程的教学就能够解决的,而是应该贯穿于整个专业课程的教学中。但计算机基础课程的教学却肩负着提高学生学习计算机的兴趣和培养学生从生活中的问题求解过渡到学会用计算机进行问题求解的重任,因此,计算机公共课程的教师应当从计算思维的层面看待所授的课程,梳理和提炼课程中所蕴含的计算思维的概念、方法和思路,有目的有意识地从各个角度培养学生的计算思维能力,以期学生能够利用这种思维方式自主解决实际问题,并在解决实际问题中锻炼自己的能力。
参考文献:
[1]苏小红.如何在程序设计课程中培养计算思维能力[J].工业和信息化教育,2013,(06):32-36.
[2]陈杰华.程序设计课程中强化计算思维训练的实践探索[J].计算机教育,2009,(20):84-85.
[3]张玉华.“数据结构”分层次实验教学的探索与实践[J].计算机教育,2009,(02):108-110.