计算思维的培养在C++教学中的应用与实践

摘 要 本文通过理工科C++教学的实际情况,探索如何在教学中培养学生的计算思维能力及根据C++面向对象的特点,运用求同存异与对比的方法,培养学生的创造性思维和开放性思维.并采用小组团队形式,通过项目实践达到课程的培养目标.

关 键 词 计算思维 C++教学 问题求解

中图分类号:G424 文献标识码:A

0 引言

“C++程序设计”是一门非常重要的计算机基础课程,学生安排在大一第二学期学习,虽然本校学生理工科基础好,求知欲强,学习认真,但大部分班级不少学生反映听不懂,为什么初学者总感到这是一门很难学的课程,关键所在需要实现思维方式的转换.程序设计程的重要性不是体现在一般意义上的语言或语法学习,更要体现在引导学生进行问题求解思维方式的转换——即计算思维能力的培养.只有突破了这个难点,学生才有可能真正理解编程思维方式.计算机解题的核心是算法设计,而算法设计需要具备良好的数学素养.数学具有运用抽象思维去把握实际的能力,应用数学知识去解决实际问题时的建模过程是一个突出主要因素的科学抽象过程.进行抽象和形式化就需要学习和掌握常用的计算思维方式.如何在C++教学中,培养学生的计算思维能力,使课程变得学生易学,教师易教,我们在三年的C++程序设计的课程教学中做了一些有益的探索与实践,取得了很好的效果.

1.计算思维的重要性

计算机基础教学的核心任务是计算思维能力的培养,这点是勿需质疑的,什么是计算思维?通俗地理解就是构造和模拟,强调能行,并采用使自动方式.如上所述的计算思维其实一直隐藏在我们的教学之中,计算学科的教学其实也就是关于计算思维的教学,但是我们在以往的教学没有将这种思维的特征明显地表示出来,学生并没有真正理解其思维方式,学完课程后所掌握的只是一些语法和基本的算法.

因此,C++教学中我们力求改变这种状态,我们认为要培养学生的计算思维能力,首先要让学生知道什么是计算思维以及计算思维的重要性.二十一世纪科学上最重要的、经济上最有前途的研究前沿都有可能通过熟练掌握先进的计算技术和运用计算科学而得到解决,从而强调了计算科学的重要性.我们在讲授C++程序课程的第一堂课,就提出计算思维的概念,并用学生身边的实例来描述计算思维运用的广泛性,并强调学习程序设计课程是培养计算思维的重要内容.通过第一堂课的学习,同学们对计算思维的产生了极大的兴趣,不少同学原先对程序设计课程抱有消极的学习态度,认为不做程序员学不学关系不大,现在认识到计算思维不单单涉及到计算机学科,计算思维对其他学科同样有着深远的影响.比如计算生物学改变着生物学家的思考方式:纳米计算改变着化学家的思考方式,量子计算改变着物理学家的思考方式,计算驳议理论改变着经济学家的思考方式等等.同学们课后通过上网查资料,分析归纳完成了计算思维在本学科的应用小文章.

2.程序设计中计算思维的培养

对于非计算机专业的学生,学习程序设计的目的是学习计算机分析和解决问题的基本过程和思路,程序设计课程的内容能够体现语言级的问题求解方法.

以前我们在程序课程中采用传统的教学方法,特别容易陷入语言的语法学习中,常常花大量的课堂时间去讲解语法的格式与功能,没有从解决问题的思路入手,因此学生把语句格式与功能记下来后,对编程仍然无从下手,学生体会不到编程的意义与乐趣.因此要改变这种状况,必须走出这个误区.C++程序课程虽然是语言课,但不是为了学习语言,而是要培养学生编程解决实际问题的能力,并通过语句的学习来掌握这种能力.

在C++教学的组织中,我们将计算思维贯穿在整个学习的内容中,以提出问题入手,引导同学思考处理问题的思维方法,然后应用C++语言编写程序以解决问题,替代传统的先讲语法、命令格式最后为了掌握语法来讲解程序的教学方式.

(1)计算思维的本质是抽象与自动化,计算思维的抽象体现在完全使用符号系统,一个程序通常由标识符、常量、变量、语句、函数等构成.例如我们在讲解C++数据类型时,提出问题:现实生活中有哪些信息可以用计算机来管理?而所有的这些信息,在计算机里是以什么样的数据形式来表达?人类世界是一个有类型的世界,而在计算机世界里显然不能全盘照搬过来,那么解决的方案就是“抽象”;C++的基本数据类型抽象成两类:数值类型和字符类型.程序是如何执行的?这就涉及到自动化的问题,计算思维的自动化是存储程序的工作原理,即计算机按照程序编写的步骤自动执行.

(2)计算思维是通过约简、嵌入、转化和仿真等方法,把一个困难的问题演化成如何求解它的思维方法.为了解决一个大的问题,可以把它分成两个或多个更小的问题; 分别解决每个小问题; 然后把各小问题的解答组合起来,即可得到原问题的解答.小问题通常与原问题相似,可以递归地使用分而治之策略来解决.这就是分治的基本思想.

比如在讲解乘方运算中,首先请同学思考其解决问题的思路,同学们很容易想到乘方运算就是对一个数取若干次方的运算,也就是自己乘以自己若干次.因此问题求,我们可以定义为进行次乘法.显然算法的效率不高.接着我们引导学生应用计算思维的分治策略,根据的奇偶性,将次方的乘方运算变为两个/2次方的乘方运算和一次普通的乘法运算(或两个/2次方的乘方运算和二次普通的乘法运算).进一步发现分解出的两个/2(或/2)次方的乘方运算实际上是同一个乘方运算.这种解决问题的思维方法显然很大程度地提高了程序的运行速度.通过这个实例,同学们很好地理解了其思维要点.


(3)计算思维是利用海量数据来加快计算,在时间和空间之间、在处理能力和存储容量之间进行折中的思维方法.利用计算机的速度,可以用“穷举”算法进行重复操作以得到问题的解决方法.比如水仙花问题、白鸡问题、求素数等都很好地利用这种思维方式.

其实计算思维存在于我们很多解决问题的思维方式中,程序课程中加强这种思维方式的训练,会对学生的思维方式与创新能力是十分必要的. 3 培养团队协作能力及程序设计的应用能力

C++程序设计是一门应用性计算机课程,它为后续计算机教育及其它相关课程的学习奠定基础,为了让学生有一个良好的开端,提高他们学习的兴趣,提出课内实践与课外反思的创新型教学模式,在课外教学中引入项目教学法,学生以小组为单位,通过这些项目能够对课内所学的知识融会贯通,并在教师的引导下运用所学知识和技能解决新情境下的问题,培养学生的创新精神及团队合作意识.有效的学习活动不能单纯依赖模仿、记忆与验证.动手实践、自主探究、合作交流是学生学习计算机课程的重要方式.

要使学生通过实践确实感受和领悟计算机问题求解的基本方法和思维模式.每学期我们安排学生完成C++项目设计,为了有更好的实施效果,并最大发挥学生的潜能,题目根据学生兴趣自由指定,学生提出了很好的设计方案,都非常有实际意义,比如XX楼教室管理系统、图书管理系统、公交车查询系统、东园餐厅点菜系统等等,按软件设计的需求给出项目说明及原代码,通过项目的训练,学生对程序设计的思维有了更好的理解,正如一个项目小组总结表达的“这是一段关于实践、学习、坚持、创造、团队和友谊的故事.我们都在这次项目的设计和编写过程中学到了很多.处理和解决问题,创造和思维,独立和合作,坚持和再坚持,跳出书本,原来我们会学到更多.”

4.实验课的重要性

要提高程序设计的能力,实验课是非常重要的环节,在实验课中学生不仅能学会编程的基本方法,还能加强程序调试的能力,因此我们十分重视实验课的教学,为了更好地保证实验课的效果,我们主要采取了以下措施:

(1)实验内容的确定,根据课程教学的要求,我们将实验分成几大模块,每个模块围绕一个中心问题展开,并给出相应的问题,引导学生进行思考,特别强化计算思维在算法上实现的技巧.

(2)实验课前要求学生写出预习报告,通过几年的实践,这个措施对提高学生的编程能力非常有用.预习报告并不要求学生给出完整的代码,但必须给出相应的算法伪码或框图,并对同一个问题,给出不同的解题思路,以提高学生的算法设计的能力.

(3)实验课每个模块,均给出问题的拓展,并根据不同学生的能力需求,将问题的难度分成几个层次,使每个学生都能从问题的解决中获得最大的收获.

(4)充分发挥同学的想象力与创造性,我们在实验课中鼓励学生自己提出问题,给出解决的思路,比如每个学期最后一个实验都要求学生根据自己的兴趣或专业需求,完成一个有实际意义的小程序,通过这种培养思路,学生对程序设计的兴趣更大了.

5.结论

通过我校在非IT类开程设程序课中加强计算思维培养的实践,我们感到学生对课程的兴趣与收获大大高于原来的教学模式,同学们从开始不知道什么是计算思维,到现在能够理解计算思维的含义以及在课程学习自觉加强这种思维的培养,并能将这种思维的训练扩展到其它课程的学习中,同学们对计算思维的一些基本的思维方法都能够很好应用到解题的算法中,但是计算思维在计算机课程中的运用还有很长的路要走,目前还存在许多待解决的问题,例如没有特别优秀的体现计算思维的程序设计教材,部分教师对计算思维的理解还存在模糊的认识,相应的体现计算思维实例还不够充分等等,这些都需要我们进一步的完善与努力.

类似论文

基于计算思维的计算机图形学教学改革

摘 要:随着计算机图形学的高速发展,现已成为一门独立的学科,而现有的计算机图形学课程教学方法依然。
更新日期:2024-2-19 浏览量:34422 点赞量:9097

基于计算思维的计算机图形学教学改革

摘 要 :“计算机图形学”是计算机专业的一门重要核心课程 文章从教学内容与教学方法两方面探讨在“。
更新日期:2024-6-27 浏览量:84652 点赞量:19319

计算思维在大学计算机基础教学中的应用

【摘 要】文章首先介绍了大学计算机基础课程的重要性,分析了当今计算机基础教学中存在的大众化问题以及由此而带。
更新日期:2024-8-7 浏览量:18495 点赞量:5953