计算机基础教学中计算思维能力培养的

2016-05-14 15:54李志圣邢振祥唐国峰
计算机教育 2016年6期
关键词:计算思维程序设计标准化

李志圣 邢振祥 唐国峰

摘要:针对程序设计中的计算思维能力培养,国内外学者进行了大量的理论研究和教学实践,但尚未在教学中形成清晰的表达体系。文章分析计算机基础教学中的程序设计过程,明确提出程序设计的三个阶段,并针对各阶段阐述教学内容和评价标准,为培养计算思维能力的引导式教学形成步骤明确、可操作性强的标准化方案,使所有教师都能找到学生在程序设计中所遇到问题的思维根源,进而实施有效的引导教学。

.

关键词:程序设计;计算思维;引导式教学;标准化

引言

2010年,清华大学等高校在西安召开了首届“九校联盟(C9)计算机基础课程研讨会”。在会议发表的联合声明中,旗帜鲜明地把“计算思维能力的培养”列为计算机基础教学的核心任务。

计算机基础教学中的核心内容是程序设计教学中的计算思维能力培养问题。综观近年来的相关国内文献,主要有两大类代表性的工作:

一类是阐述针对具体程序实例进行编程教学工作,例如:文献关注从具体编程案例出发讨论计算思维能力的培养。此类工作存在的问题是缺乏对一般性问题的求解体系步骤的归纳和概括。另一类工作如文献,关注程序设计教学的一般性规律,提出的见解具有理论上的指导意义,但在运用于具体程序设计教学时,尚有赖于教师理解水平和实践经验的丰富程度。

冯博琴教授在《对于计算思维能力培养“落地”问题的探讨》中提到:“关于计算思维的理解多停留在‘哲学或者‘科学层面,在‘教学层面上没有形成一个清晰的表达体系,其内涵、外延还没有得到清楚的描述”。

本文通过建立对计算思维能力培养教学的标准化方案,来尝试解决冯博琴教授提到的问题。主要工作为:对计算机基础教育中的程序设计过程进行分析和抽象,提出编程的具体步骤;为每个步骤提出精确的评价标准,使教师在进行引导教学时,有分阶段可实施的明确目标,在保障引导教学顺利实施的同时,强化学生的计算思维能力培养。

1相关研究基础

蒋宗礼教授提出:为培养计算机学科的计算思维能力,可采用适应计算机求解问题的基本方式和有效方法考虑问题的求解(描述、分析和构建);

龚沛曾教授也相似地认为:计算思维中问题求解的步骤包括问题抽象化的描述一寻找解决方案(设计算法)—程序编制(编码)。

综合上述两篇文献意见,本文将编程的过程细化为以下三个阶段:

第一,理解问题的自然语言描述;

第二,采用规范的自然语言描述解题过程;

第三,采用计算机语言替换自然语言描述2。

2分阶段教学内容和评价标准

1)理解问题的自然语言描述。

教学内容1教师引领学生阅读使用自然语言描述的问题。

评价标准1要求学生用自己的语言转述问题,若无歧义或者误解,则评价为合格。

2)采用规范的自然语言描述解题过程。

教学内容2教师要求学生按以下步骤得出自然语言的解题描述。

步骤2.1要求学生针对具体问题给出具体解答。例如在求n!问题时,要求学生给出5!的计算结果。

评价标准2.1学生得出正确计算的结果。

步骤2.2要求学生使用自然语言详尽描述之前求解的过程。

评价标准2.2

2.2.1实词:都能确定性地求值,且求值过程是可直接计算的。

错误示例:从1连乘到4。

错误原因:不可直接计算。

教师应向学生指出错误原因,引导学生关注到从1到5的计算过程的分解。

2.2.2虚词:只允许作用于计算(1)流程控制(2)逻辑判断(3)指向实词等意义明确的用途。教师尤其要及时要求学生删除“大概”“可能”“很”等含混的虚词表达。

步骤2.3词汇的规范化:要求其中出现的词汇及其搭配方式必须前后一致。禁止人为省略。

评价标准2.3检查所有词汇及其相关搭配。保证每个词汇及其相关搭配的使用前后一致。

错误示例:

将1和2相乘,得到2;

和3相乘,得到6;

和4相乘,得到24;

错误原因:后两个相乘的用法存在人为省略问题,与第一个相乘不一致。

改正后得到规范的自然语言描述:

将1和2相乘,得到2;

将2和3相乘,得到6;

将6和4相乘,得到24。

步骤2.4泛化到一般性问题。

评价标准2.4自然语言描述正确地表达了任意问题的求解。

规范的自然语言描述:

将1和2相乘,得到2;

将2和3相乘,得到6;

将6和4相乘,得到24;

重复以上步骤,直到将中间结果与n相乘。

3)采用计算机语言替换自然语言描述2。

本标准化方案适合各种面向过程的高级程序设计语言。在实例中,将采用c语言进行示例。

教学内容3教师要求学生观察自然语言描述2,并按以下步骤进行操作。

步骤3.1观察是否存在以“重复以上步骤”为表达的任意次计算。如果存在,那么根据描述确定其直接关联变化的数据序列,为其定义变量,并确定其初值、变化规则和执行条件,同时替换原自然语言描述。

评价标准3.1值序列确实能由定义的变量根据初值、变化规则来生成。

此变量之后将作为循环结构的控制变量而存在。

正确示例:

以上自然语言描述中,随“重复以上步骤”而关联变动的值序列是1,2,3,4,…,n。定义变量为x,其初值为1,变化规则为x=x+1。执行条件为x<=n。

替换后的自然语言描述变为:

设变量x,初值为1;

将1和x相乘,得到2;x=x+1;

将2和x相乘,得到6;x=x+1;

将6和x相乘,得到24;x=x+1;

若x<=n,重复以上步骤,将中间结果与x相乘。

步骤3.2对于其他数值,判断是否具有同样的意义;如果是,则定义同一变量。并替换其对应的所有数值。如果某数值在描述中没有变动,那么保留它作为常量。

评价标准3.2该值序列中的各值指向相同的意义。

正确示例:

中间结果序列为:1,2,6,…,设变量名为mul。

替换后的描述变为(此时已经向程序语言过渡了):

设变量x,初值为1;

设变量mu1,初值为1;

将mul和x相乘,得到mul;x=x+1;

将mul和x相乘,得到mul;x=x+1;

将mul和x相乘,得到mul;x=x+1;

若x<=n,重复以上步骤,将mul与x相乘。

特别要注意,若存在循环嵌套,只需利用步骤3.1先确定外层循环变量,然后再依次确定内存循环变量,并替换相关自然语言描述,最终将形成嵌套结构。

步骤3.3替换所有的动作为程序语言的基本语句。

评价标准3.3所有动作应该能替换为基本语句。若不能,则意味着评价标准2.2未满足,重新退回步骤2.2。

正确示例:

之前的计算步骤描述中,将?与?相乘,得到?,该动作搭配已被确认过是可直接计算的,其c语言的语句为:?=?*?。

替换后的描述变为:

设变量x,初值为1;

变量mul,初值为1;

mul=mul*x;x=x+1:

mul=mul*x;x=x+1:

mul=mul*x;x=x+1:

若x<=n,重复以上步骤,将mul与x相乘。

步骤3.4替换所有变量定义描述为语句。

评价标准3.4检查所有变量的定义类型符合问题原意。

替换后的描述为:

intx;x=1;

int mul;mul=1:

mul=mul*x;x=x+1:

mul=mul*x;x=x+1:

mul=mul*x;x=x+1;

若x<=n,重复以上步骤,将mul与x相乘。

步骤3.5替换所有的循环结构、消除循环中重复的语句、替换选择结构,得到程序。

评价标准3.5若描述无法替换,重新退回步骤2.2或者步骤3.1。

最终描述为:

int;x=1;

int mul;mul=l;

while(X<=n)

{

mul=mul*x;

x=x+1:

}

3标准化方案对培养学生计算思维能力的意义

笔者认为:程序设计课程中最核心的内容是培养出学生的计算思维能力:学生善于使用精确的符号化和有限的动作来刻画和描述现实问题。但这对于初次接触编程的学生来说并不是容易做到,因此,在计算机基础教学中,教师进行有效的引导式教学就显得非常重要。

引导式教学中最突出的问题是:当学生在过程中遇到某个问题而难以解决时,若教师对问题出现的背景以及与求解过程的关系没有清晰认识,那么引导教学将无法继续。此时教师可能会过于强调学生个人的领悟,却不知这实质上是对学生的学习热情和信心的伤害。

在本标准化方案的不断完善的过程中,笔者进行了大量的实践和探索。为验证标准化方案的有效性,笔者针对一些学习成绩较差的学生,进行了多人次的教学实践。学生反馈表明:当教师能够随时指出学生当前状态所存在的问题根源,并能够引导学生按照标准化方案进行下一步思考时,学生所收获的不仅是会编写程序,还有对专业学习的信心。

4对冯博琴教授在文献中提出的若干问题的探讨

冯博琴教授在文献中针对计算思维能力培养的“落地”提出了多个问题。其中具有代表性的有:

第一,“启发式教学是否就能够培养学生的计算思维能力”?

笔者认为:启发式教学与引导式教学类似,其有效的前提在于教师对学生的计算思维过程有清晰的把握,本文提出的标准化教学方案有助于教师有效开展启发式教学。

第二,“如何在1~2门课程之内,用有限的课时,在很多学生计算机基础很薄弱的条件下,采用何种不同寻常的教学手段和教学方法,使得他们突破学习之瓶颈,更好地掌握计算思维”?

笔者认为:使学生突破学习瓶颈的方法,就是教师实施有效的引导式教学。引导教学应按照任务分段化、目标标准化来开展,教师能清楚地把握学生思维过程中各种可能的细节,对各个水平层次的学生都能给予有效的帮助。

5结语

目前本标准化方案能适用于针对多重循环的程序设计的引导教学工作,但尚存在以下问题:

第一,对具有复杂的数据结构的程序编制是不适合的。这包含程序的初始数据为非线性结构、程序的流程控制采用复杂的栈或队列等情形;

第二,当循环层次较多和涉及变量较多时,使用标准化方案显得繁琐;

第三,对自然语言中的词法和语法现象研究尚不够全面。

下一步将针对上述问题进行研究,通过适度地降低实施步骤的精确性,来提高对程序复杂度的描述能力。

猜你喜欢
计算思维程序设计标准化
基于OBE的Java程序设计个性化教学研究
院前急救标准化管理在急性心肌梗死患者中的应用
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
国家标准委与非洲标准化组织签署合作谅解备忘录
医学专业“Python程序设计”课程教学改革总结与思考
“一带一路”离不开标准化人才
学生评教的标准化处理
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究