程序设计与计算思维的思考

时间:2022-09-01 01:00:00

程序设计与计算思维的思考

1程序设计是描述计算的过程

对于英语和数学来说,有一些里程碑式的课程帮助学生将学习的重点从有用的技能培养转化到这些学科的学术研究上,在英语中,文学分析的课程为学生批判性地阅读和理论上的认知铺平道路,在数学上,证明的理解和构建成为进入高等数学的途径。这些课程成为重要的知识飞跃的关键。虽然基础教育意味着熟练读,写和算的技能,但并不意味着理解和执行学术英语和数学的知识或能力,类似地,程序设计则是计算思维(作为技术)和计算机科学(学术科目)的里程碑课程,但程序设计不是计算思维培养过程中所必需的,也不是基本计算机科学学习中所必需的知识,从逻辑上讲,一个程序是对许多计算实例的简洁的,有限的描述,每个都包含一个可能的无限过程,当一个人还没有牢固掌握并不熟悉的描述的流程设计的形式语言规范时,书写程序设计过程是很不容易的,所以我们认为,在学生进行程序设计之前,需要在计算思维方面作实质性的培养训练。学习程序设计之前,计算思维的培养,重点应该强调理解(和能够手动执行)计算的过程,而不是表现在会熟练使用特定的编程语言上。要不断提高对算法概念的理解程度,如,基本流程的控制是很重要的。核心是培养和发展过程的信息抽象、表示和属性评价的技能。首先,要深挖计算的内涵,比较数学的计算和计算机的计算。数学的计算遵循进位制计算规则。计算机的计算靠匹配,遵循状态匹配规则,即0和1的匹配。通过这种比较,可以让学生了解计算的不同表达形式,进一步体会计算的本质。其次,计算自动执行的过程正在改变所有的学科如何去思考专业领域知识。设计学生熟悉的简单计算实例,并尽量结合学生本专业的实例,挖掘专业计算背后所隐含的计算含义和技术,潜移默化地讲解计算机解决问题的方法和手段,让学生体会何谓“计算无处不在,无人不在计算”。通过深入浅出的阐述,学生不仅可以对计算的概念获得一个清晰的理解,而且会对计算增加浓厚的兴趣。无论面向什么层次的计算环境,问题求解首先需要解决的是问题的表示,例如编码/解码和建模等都是典型的例子。只有这样才能够建立计算环境所能理解的基本计算对象,进而为基于计算环境的问题求解提供可能。进一步需要设计问题求解过程,典型的方法有:约简、嵌入、转化、仿真、递归、并行、启发式推理、平衡与折中等。最后需要验证以确定计算过程的正确性与效率,典型方法有预防、保护、冗余、容错、纠错等,其中还需要多维度(时间、空间、简洁、社会、成本)考量计算的效率。

2学习计算过程的实例

可以利用简单的多步计算和小的组合问题的例子融入计算思维的培养过程。通过这些例子来传递计算机科学的一些基本概念和思想,计算是一个广义的概念,它包括不同的任务、概念和技术。同样,计算思维涉及广泛的方法和技能。提出和理解不同种类的计算思维,并通过不同领域中的实例来识别计算思维的差别和相似性。在计算思维学习的过程中,还应当使用适合的计算思维语言。例1:介绍乘法,两个常见的概念是“乘法重复加法”和“乘法满换律”。利用乘法的定义,可以介绍两个计算的概念:迭代和效率。我们或许可以解释符号“+”的每一次应用都是一次迭代,并且当这种操作是交替的时候,乘法的两种表示形式的效率可能是不同的。比如可以进行下面的练习。①对于每一个乘法,把它写成重复加法然后写下答案。同时也记下迭代所需的数量。②写乘法交换两个数字,比如6*3和3*6,比较所需的迭代次数。哪一个是更有效率呢?例2:阅读理解,在培养英语阅读理解能力时,有一种将句子排序的训练,比如,a:Idon’twantpizzaagainforalongtime.b:Iatetenpiecesofpizza.c:Laterthatnight,Igotsick.d:Ifeltveryfull.下面哪个排序的选项是正确的?1)a,c,d,b2)d,c,b,a3)b,c,a,d4)c,a,d,b5)b,d,c,a这5个可能性的排序,每一个可以视为一个状态,构成了问题的搜索空间。为了解决这个问题,我们可以单独检验每个状态,也可以使用分治的方法来删除不正确的答案。可以对学生提出以下的启发式问题:b和c的正确顺序是什么;在搜索空间中出现错误的b和c的顺序的状态有哪些;还有哪些可能的状态没有列出,等等?实际上,这些问题的引入和启发都渗透着计算机科学中以启发式搜索的方式求解问题的思想。例3:公式推理,学生在中学时代已经熟练掌握了基本代数,也逐步在各种课程如物理、化学、天文学和生物学中引入方程的使用。我们应该充分地利用这些学生熟知的简单的公式来讲解计算思维的核心技能——功能抽象和程序性问题的解决。比如,物理中加速度的定义,即单位时间内速度的变化。本质上,加速度a可以表示为一些变量的输出函数,a=v/t,加速度也可以作为子过程出现在一些基本的物理公式中,如牛顿第二定律F=ma。这种抽象推理功能,数据输入,函数组合是直观的、简化和有力的。概念的集成帮助学生加深了计算思维普遍性和无处不在的认识,此外,传递了计算思维的技能在各种领域中是必不可少的。例4:跨学科的项目,一个有趣的跨学科的项目是旅游宣传册。这个问题需要学生运用语言艺术、数学和社会研究(如地理)。这是一个规划问题,必须考虑距离、时间、费用、感兴趣的可能目的地等约束。学生不仅要提交完成的规划,还被要求说明如何表示约束,如何计算关于目标函数的最优解等计算思维活动。例如,一个目标函数是在满足旅行者“开心”的约束下最大化旅行团的利润。除了通过传统的主题明确计算思维和计算思维语言的集成,还要将信息处理引入到实例中。例5:小组课题,分组工作在科学课程是很常见的。通常都按照任务进行分组:每个小组成员负责一个或两个任务(如,数据记录,报告书等),数据交换的情形就对应着接口和封装的概念。如果项目报告必须协作(同步或异步)完成,就可以融入锁定和消息传递等概念。在本节的例子,计算机没有作为明确讨论一部分。事实上,在计算思维和计算思维语言的引入和培养过程中,学生是计算的智能体。这里的重点是帮助学生像计算机一样更加智能和高效地处理问题,不是强调如何去实现计算,而是将计算机科学的知识和课程渗透到涉及信息处理的各学科中。

3结论

在大学计算机基础课中设置渗透计算机科学重要理论思想的课程,能够帮助整合学生的经验并为学生正式接触编程铺平道路。这样的课程可能会正式提出计算的属性,如收敛、效率和极限,这些都为以后专业领域(如生物信息学、化学信息学)的信息学习奠定了计算思维基础。对于那些不想深入学习计算机科学的学生,实质性的计算思维背景也会使他们的职业生涯和日常生活获益。真正将计算思维融入大学计算机基础课程,这一定会是一个渐进的和进化的过程,无疑对计算机科学教育者提出了重要的挑战。

作者:侯薇

上一篇:C++中常量的语法形式与应用 下一篇:农村经济发展研讨