计算思维培养在程序设计课程中的实践

2022-05-03 13:45:02 | 浏览次数:

摘要:计算思维是目前计算机教育的一个重要问题。面向对象程序设计是一个算法设计、工程化开发方法、程序实现的平台,也是数据结构、程序语言等课程内容融合的桥梁。在面向对象程序设计课程中,以货运列车车厢的重排为例,对任务进行分析,设计并描述解决方案,不仅体现出类和类的继承关系,还联系了典型数据结构。利用案例教学、启发式教学、鼓励算法及问题的多种解法,特别是符合软件工程理论要求的工程的开发方法训练学生的程序开发过程,对计算思维培养进行了尝试。

关键词:计算思维;实践教学;面向对象程序设计;数据结构

中图分类号:G642.0 文献标志码:A?摇 文章编号:1674-9324(2013)39-0203-03

目前,计算思维已在教学当中逐步应用,但是,其本身还未成为独立的学科体系,教学中的应用只是少数专家学者进行小规模探索性的实验性教学,在培养过程中没有系统性的应用计算思维的系列方法[1]。本文对OOP课程中计算思维培养的实践教学进行了尝试。

一、计算思维

计算思维是当前国际计算机界广为关注的一个重要概念,也是当前计算机教育需要重点研究的课题。2006年3月,时任美国卡内基·梅隆大学(CMU)计算机科学系主任、现任美国基金会(MSP)计算机和信息科学与工程部(CISE)主任的周以真(Jeannette M.Wing)教授,在美国计算机权威刊物(Communications of the ACM)上,首次提出了计算思维(Computational Thinking)的概念:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。它包括了涵盖计算机科学之广度的一系列思维活动。”对于计算机科学的重要性,美国总统信息技术咨询委员会认为:虽然计算本身也是一门学科,但是其具有促进其他学科发展的作用,21世纪科学上最重要的、经济上最有前途的前沿研究都有可能通过先进的计算技术和计算科学而得到解决[3]。《中国至2050年信息科技发展路线图》报告指出:计算思维是克服狭义工具论的有效工具,是解决其他信息科技难题的基础[4]。

二、面向对象程序设计

面向对象编程技术从根本上改变了人们以往设计软件的思维方式,降低了软件开发的复杂度,能够开发出具有高可靠、可重用和易维护的软件,提高软件的开发效率,是现今软件开发的主流技术,对信息科学、软件工程、人工智能以及系统科学等学科产生了巨大而深远的影响[6]。

面向对象方法与人类习惯的思维方法一致。

面向对象的方法通过获取客户对系统的需求,建造需求模型;用基本的需求为指南来选择类和对象,定义类的结构;由客观实体的一般和特殊关系定义类的层次;而后建造对象关系模型,对象行为模型[7]。因此,面向对象软件设计通过抽象和分解来控制庞杂的任务或进行巨型复杂系统的设计,其分析过程是一个把问题阐释为如何求解它的思维方法。

三、计算思维培养与程序设计工程化训练

程序设计课程中,强调学生对语言规则的掌握和对基本编程能力的培养,而不重视工程化思想的潜移默化,容易造就个体化编程思想的孕育。按照软件工程理论,软件研发过程中存在的软件危机问题,一方面与软件本身的特点有关,另一方面是由于软件开发与维护过程中方法的不正确决定的。与软件开发和维护有关的许多错误认识和做法的形成,可以归结为在计算机系统的早期阶段软件开发的个体特点。错误的认识和做法主要表现为忽略或轻视软件分析、设计的重要性,对问题和目标没有正确认识的情况下,就匆忙进行代码实现,认为软件设计就是编写程序并设法使之运行。

程序设计课程涉及到了详细设计阶段、程序实现阶段的软件开发工作。详细设计阶段的根本目标是确定怎样具体地实现所要求的系统,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计阶段的任务不是具体的编写程序,而是要设计出程序的蓝图,以后程序员根据这个蓝图写出实际的程序代码。因此,详细设计的结果基本上决定了最终的程序代码的质量。考虑程序代码的质量时,必须注意程序的读者除了计算机还有维护程序的程序员。在软件的生命周期中,涉及测试方案、诊断程序错误、修改和改进程序等都必须首先读懂程序。实际上对长期使用的软件系统而言,人读程序的时间可能比写程序的时间要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,还看它是否容易阅读和理解。

因此,在语言训练的过程中,培养学生在掌握语言规则的基础上,先进行问题分析,算法设计,最后代码实现的程序设计过程,与培养学生的计算思维是一致的。

四、案例教学及题解多样性

程序设计在计算机学科知识体系中处于核心地位,对计算机专业的学生来说不仅是职业技能的培养,也体现着创造性思维的信息素质培养过程。程序设计也是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,对计算机专业人才素质的培养至关重要[8]。程序设计实验教学的教育价值在于突出计算思维,培养学生的创新意识、探索精神和问题求解能力。课程目标不仅仅是培养学生的操作技能,还要通过强调算法多样性来提高学生的计算思维能力[9]。教学过程中要使学生经历算法化过程并体验计算思维,它有利于培养学生的理性思维和形式逻辑能力。培养学生通过计算机编程,最终形成计算思维[10]。

下面列车车厢重排的实例,对面向对象方法来说,涉及到类的设置,类的继承,功能的扩展等重要知识。对于培养学生的计算思维有较好的作用。一方面可以对栈数据结构算法的特点加深理解,对其的应用有较深了解,另一方面,在解决问题的过程中,引导学生形成解决问题的思路,鼓励不同的解决方案,用一定的形式将形成的思路描述下来,最后完成程序的设计。数据结构的基本算法与程序设计课程相结合,在教学内容上相融合,加强了课程之间的联系,将孤立的知识点联系起来。

一列货运列车共有n节车厢,每节车厢将停放在不同的车站。假设n个车站的编号分别为1~n,货运列车按照第n站至第一站的次序经过这些车站。车厢的编号与它们的目的地相同。为了便于从列车上卸掉相应的车厢,必须重新排列车厢,使得个车厢从前至后按照编号1~n的次序排列,当所有的车厢都按照这种次序排列时,在每个车站只需卸掉最后一节车厢即可[11]。将在一个转轨站里完成车厢的重排工作,假设在转轨站中有一个入轨、一个出轨和k个缓冲轨道(位于入轨和出轨之间),如图1所示。

任务分析:在重排的过程中,车头只能将车厢在入轨、转轨、出轨三者之间移动,车头不能跳跃到车厢之间,车厢的进出操作符合后进先出的特点。因此,可以该重排可以利用栈数据结构。一般,栈的基本算法包括进栈、出栈、取栈顶元素值、栈判空、栈判满和栈的初始化操作。进行车厢重排,需要在栈中遍历,查找指定编号车厢的位置。因此,可以进行公有派生,在派生类中增加遍历和查找操作。

方案一:在待排车厢中查找最小编号车厢,依次排入出轨栈。

A?摇在缓冲轨A和入轨栈查找最小编号车厢,如果所有车厢遍历完成,转F;

B?摇如果最小编号在缓冲轨A,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到入轨栈;

C?摇将缓冲轨A尾车厢(编号较小)通过转轨栈进入出轨栈,转A;

D?摇如果最小编号在入轨栈,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到缓冲轨A;

E?摇将入轨栈尾车厢(编号较小)通过转轨栈进入出轨栈,转A

F?摇重排完成。

方案二:同时在待排车厢中查找最小和最大编号车厢,小编号车厢依次排入出轨栈,大编号车厢排入缓冲轨B,待排车辆处理完成后,将出轨车辆和缓冲轨B中的车辆链接,即可完成重排。

A?摇在缓冲轨A和入轨栈查找最小、最大编号车厢,如果所有车厢遍历完成,转F;

B?摇如果最小编号在缓冲轨A,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到入轨栈;如果最大编号在缓冲轨A,则将最大编号车厢至最尾的车厢依次通过转轨栈,进入到入轨栈;

C?摇将缓冲轨A尾车厢(编号较小)通过转轨栈进入出轨栈;最大编号车厢通过转轨栈进入缓冲轨B,转A;

D?摇如果最小编号在入轨栈,则将最小编号车厢至最尾的车厢依次通过转轨栈,进入到缓冲轨A;如果最大编号在入轨栈,则将最大编号车厢至最尾的车厢依次通过转轨栈,进入到缓冲轨A;

E?摇将入轨栈尾车厢(编号较小)通过转轨栈进入出轨栈;最大编号车厢通过转轨栈进入缓冲轨B,转A;

F?摇将缓冲轨B中车厢顺序链接到出轨栈,重排完成。

方案一和方案二的区别,在于是否查找最小编号车辆的同时查找最大编号车辆。方案二提高了重排的效率。

由于数据结构具有抽象性和灵活性等特点,这给教学和学习带来一定的困难。从算法的一题多解入手,对培养学生学习兴趣和提高其程序设计及编程实践能力起到了极大的促进作用[12]。

五、结束语

程序设计课程在计算机相关专业的作用不仅是掌握一门计算机语言,更重要的是通过这样一个平台,理解计算机一些重要的理论和方法,并将这些方法用于实践,解决实际问题。在程序设计课程中,有意识地将课程之间的内容融合,开展案例教学,将软件工程的软件开发过程和方法贯穿于课堂和实践教学活动中,不仅有利于培养学生的职业能力,也有利于对学生计算思维的培养。

参考文献:

[1]牟琴,谭良.计算思维的研究及其进展[J].计算机科学,2011,(3):10-15,50.

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

[3]President’s Information Technology Advisory Committee. Computational Science:Ensuring America’s Competitiveness[EB/OL].http://.cn/qkpdf/jxls/jxls201339/jxls201339140-1.pdf" style="color:red" target="_blank">原版全文 推荐访问: 程序设计 思维 培养 实践 课程