程序设计课程中强化计算思维训练的实践探索

时间:2022-08-30 06:59:45

程序设计课程中强化计算思维训练的实践探索

摘要:计算思维强调问题求解的操作过程和机器实现,它的三大特征是形式规整、问题求解和人机共存。本文提出在课程中强化计算思维训练两种途径:(1)以上机实验为重点的计算思维训练;(2)通过算法多样化训练计算思维。从而达到程序设计课程的终极目标:培养学生的研究创新能力,提高学生的信息素养。

关键词:算法;问题求解;计算思维;创新思维

中图分类号:G642 文献标识码:B

1引言

数学思维强调数与形的逻辑关系、演算推理能力和严谨态度,计算思维强调问题求解的的操作过程和机器实现。在《中国高等院校计算机基础教育课程体系2008》中,提出对大学生计算机应用能力的三大要求是:操作使用能力、应用开发能力和研究创新能力。尤其是对于“程序设计基础”课程而言,将学习目标确定成:(1)学习问题求解的思路和方法,即算法。(2)理解计算机是如何具体实现算法的,即如何才能有效的利用计算机编程。课程学习的重点不只是编写程序,而是算法思想与问题求解的思路。总之,就是要培养学生使用计算机编程,并最终形成计算思维。

2算法与计算思维

2.1算法

根据图灵奖得主D.E.Knuth的定义:一个算法就是一个有穷规则的集合,其中规则规定一个解决某一特定类型问题的操作序列。学生在学习程序设计课程时,将通过算法设计并由计算机语言实现来体验问题求解的思维训练。算法的操作时序性确保问题求解过程是按步骤进行的,这种执行规则非常简单机械。所以,教学过程中要使学生经历算法化过程并体验计算思维,它有利于培养学生的理性思维和行事逻辑能力。

2.2计算思维

美国卡内基•梅隆大学的周以真(J.M.Wing)教授在计算机权威期刊《Communications of the ACM》杂志上指出:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等的一系列思维活动。就问题求解(problem solving)而言计算思维与数学思维相似,它建立在计算过程的具体实现和约束之上,通过程序来控制机器的全部操作。

计算思维的本质是抽象和自动化。计算思维中的抽象体现在完全使用符号系统,甚至形式化语言。一个程序由标识符、常数、变量、数组名、函数名、语句、程序段等构成,其中的数据类型只是一个抽象特例。与数学思维相比,计算思维中的抽象显得更丰富也更复杂。计算思维中的自动化体现在算法实现最终是“机械式”的按步骤自动执行,这是冯•诺伊曼机器的本质特征(即存储程序原理)。要实现这一特征,就需要进行精确的算法描述和严格的符号表示。计算思维包括如下三大特征。

(1) 计算思维是一种形式规整的思维。算法确定性是算法和程序的基本要求,它的实现一定会使用基于数学语言的符号系统,即使用一种有限的确定性符号系统来描述问题和问题求解过程。算法确定性表明算法的每一步操作必须是确切定义的,没有任何二义。所以,计算思维体现的正是严谨的、形式的、规整的逻辑思维。

计算思维使用形式化语言来准确描述问题求解过程。自然语言中往往因文化习惯的差异,会出现许多二义性。例如句子“车撞死人”,可以理解为车将人撞死,也可理解为车撞的是死人。在计算思维学习中,需要将计算任务用确定化的、形式化的、唯一化的语言进行描述。程序设计语言作为一种确定性符号系统,就可以进行形式化思维训练。例如,学生在编程时产生的符号错误,都会在编译和运行时表示出来,而学生通过检错和纠错的过程,可以培养学生严谨规范的行为习惯和科学的实证精神。实际上,如果一个学生具有条理化的、反思性的思维习惯,则表示该学生的问题求解技能很强。

(2) 计算思维是一种问题求解的思维。它将问题求解的过程用“程序化”或“机械化”的方式表示出来。问题求解过程分为五个步骤:呈现问题、分析问题、联系、行为选择和反思检验。学生在面对计算机问题时,可依据已有的知识,提出问题求解方案,并用算法进行描述,最终由机器执行程序来检验问题求解的效果。例如火车分段计费问题就是我们在日常生活中感受到的问题,学生可根据自己对火车收费的理解,写出数学式,然后用多分支结构算法进行描述,最后上机实现。

(3) 计算思维是一种人机共存的思维。算法可分为三种形式:①生活算法:即完成某一项工作的方法和步骤,例如一天的学习计划;②数学算法:即对一类计算问题的机械的、统一的求解方法,例如一个多项式的因式分解;③计算机算法:即问题求解的精确描述,它具有明显的自动化特征,如数据计算准度高并具有严格的操作时序,这是与计算机系统本身紧密相关的,所以用计算机实现问题求解,需要充分利用计算机的速度和存储优势,尽量发挥计算机与计算思维的威力。例如“百鸡问题”,数学方法是用两个三元不定方程进行求解,计算机算法则充分利用计算机的速度优势,使用穷举算法进行简单重复操作进行求解。两者的不同,可以使学生体验到人机不同的信息处理特质。

3尝试以上机实验为重点的计算思维教学模式

在程序设计课程教学过程中,笔者改变偏重理论和课堂教学的传统模式,尝试以上机实验为重点的计算思维教学模式,让同学们能够“在编程过程中学习知识、在学习过程中拓展思维”。具体实践包括以下三个方面。

3.1提高上机实验的地位

程序设计是一门实践性学科,过去沿用“先讲解程序,后上机实验”的教学策略,这种教学策略只能增加学生的感性认识和上机实验能力,并不能提高学生的计算思维能力。笔者认为让学生按部就班完成前人设计好的算法,不是上机实验的真正目的。上机实验应该是培养学生计算思维能力的重要手段,是程序设计课程教学的核心。

3.2实验内容要能培养学生的创新思维

要培养学生的创新思维,教师首先要不断学习并创作适合同学们知识结构和心理特点的实验内容。好的实验内容,能够为学生的创新思维留出适当的空间。在教学过程中,要强调并培养学生对于计算过程的严谨性,编写程序是要强调从需求定义开始,然后进行算法优化与选择,最后通过上机实验。当出现程序错误时不要放弃,而是努力排除错误,这样能够强化学生的计算思维训练。同学们一定会因为提出新算法和排除错误感到满足,这样可以使同学们积极思维,大胆创新。

3.3增强实验内容的趣味性和综合性

通过计算任务的趣味性、综合性等来增强实验内容的难度,从而强化计算思维训练。大学生一般对新鲜事物好学、好问并富于幻想,初遇计算任务时往往兴致盎然,幻想编写程序。但在传统教学中,缺少趣味性和综合性,进而导致同学们没有学习兴趣,所以,设计实验内容尽量生活化、趣味化。例如在分支程序结构中,安排火车计费程序进行计算思维训练。

4通过算法多样化训练计算思维

4.1提倡算法多样化的目标

程序设计教学的教育价值在于突出计算思维,在倡导算法多样化的过程中,培养学生的创新意识、探索精神和问题求解能力。在教学过程中,应该尊重学生的个体差异,关注学生思维能力培养。课程目标不仅仅是培养学生的操作技能,还要通过强调算法多样性来培养学生的计算思维能力。

4.2尊重学生不同的认知方式

算法多样化的本质是尊重学生不同的认知方式,在教学过程中由于学生认知方式的差异,必然会导致算法多样化。教师应该尊重每位学生的个体特征,鼓励学生从不同角度认识问题,用不同方式表达算法,用不同方法实现问题求解。同时教师给予适当的评价,就是尊重学生不同的认知方式。

4.3增强计算任务的多样性和重构性

在教学过程中,教师要重视并培养学生计算思维的多样性和重构性。多样性可以尽量激发学生的思维活动,重构性通过变化也能够强化计算思维训练。实际上,不同学生会使用不同的学习方法和思维方式。对一个学生来说是好的计算方法,对别的学生不一定适合。另外,各种计算方法都有它的局限性,其实程序只需要保证正确并具有可读性。所以,在设计实验内容时,鼓励同学们编写各种程序来实现同一个计算任务,鼓励改写别人编写的程序,从而培养同学们计算思维的多样性和重构性。

4.4充分利用算法的简化和优化过程

在教学过程中教师,不但要倡导算法多样化,还要引导学生对算法进行反思和进一步探索,从而达到简化并优化算法的目标。将一个计算任务用多种思路、多种算法进行求解,可以发展学生计算思维的灵活性。算法多样化让学生可以用自己喜欢或能够理解的算法,通过交流、评价得到计算结果。

5结论

进行计算思维训练对计算机学科人才培养是极为重要的,因为它不仅使学生理解计算机的实现机制和约束,有利于学生进行发明和创新,更重要的是有利于提高学生的信息素养,也就是处理计算机问题时应有的思维方法、表达形式和行为习惯。信息素养要求学生能够对于获取的各种信息通过自己的思维进行深层次的加工和处理,从而产生新的信息。当然,仅通过一门课程学习就形成信息素养是不可能的,但应该使学生懂得计算思维对软件设计是非常重要的。

参考文献:

[1] 中国高等院校计算机基础教育改革课题研究组. 中国高等院校计算机基础教育课程体系2008[M]. 北京:清华大学出版社,2008.

[2]J.M.Wing. Computational Thinking[J]. Communications of the ACM,2006(49):33-35.

[3] 王荣良. 信息技术课程中算法学习的价值探索[J]. 中国电化教育,2008(8):78-81.

[4] 董荣胜. 计算机科学导论―思想与方法[M]. 北京:高等教育出版社,2007.

[5] 吴鹤龄,崔林. ACM图灵奖―计算机发展史的缩影[M]. 北京:高等教育出版社,2008.

上一篇:MCLA教学法在计算机难点知识教学中的应用 下一篇:管理信息系统课程教改研究