非计算机专业程序设计类课程之计算思维培养

2017-05-13 23:15郑红波
中国信息技术教育 2017年8期
关键词:非计算机专业计算思维

摘要:本文分析了非计算机专业计算思维的培养需求及目前大学所设的非计算机专业程序设计类课程中存在的问题,并提出应注重学情,因材施教,从课程引入、案例教学和实验三个阶段强化计算思维训练,进而提升学生的信息素养的改革思路。

关键词:计算思维;程序设计课程;非计算机专业

中图分类号:G434 文献标识码:A 论文编号:1674-2117(2017)08-0089-04

21世纪是信息和知识经济的时代,它的特征是数据资源的开发、计算机和网络的广泛普及,这个时代所需要的思维方式是计算思维方式。[1]因而,计算思维成为21世纪大学生必须具备的基本技能。目前,程序设计课程是大学通识教育的重要组成部分,它不仅向学生传授计算机的相关知识和技能,更重要的是能够培养大学生的思维方式。因此,如何对程序设计课程进行教学改革,将计算思维能力培养融入教学过程,提高学生运用计算思维分析问题和解决问题的能力是一个富有挑战性的研究课题。

非计算机专业的计算思维培养需求

计算思维是运用计算机科学的基础概念进行问题求解、人类行为理解等一系列的思维活动和过程,是一种以抽象、自动化为特征的解决问题的思维方式。[2,3]培养计算思维的目的是希望所有人都能像计算机科学家一样思考和分析,把计算机技术与各种学科理论技术进行融合和创新。研究指出,理论思维、实验思维、计算思维共同组成人类认识世界和改造世界的三种思维方式。[4,5]理论思维是用“假设—推理—证明”等理论手段来研究社会自然规律的逻辑思维,实验思维是用“实验—观察—归纳”等实验手段来研究的实证思维,计算思维是以“抽象—设计/构造—编程实现”等计算手段来研究的构造思维。随着对自然社会现象和规律研究的深入,理论思维和实验手段受到很大的限制,不同学科研究对计算机科学的需求日益增强,特别是在高端交叉学科,如“计算数学”“计算物理”“计算化学”“计算生物”等,这些学科都需要利用计算手段来实现理论和实验的协同创新。

对非计算机专业人才的计算思维培养的重任首先落在大学计算机基础课程的教学上。因为计算机基础课程在小学、中学阶段都有不同程度的开设,因此在大学阶段,很多高校就不再开设,而主要开设程序设计类课程。高校非计算机专业开设的程序设计类课程主要有“C语言程序设计”“Visual C++程序设计”“Visual Basic程序设计”“Java程序设计”等课程(以下简称“程序设计类课程”)。程序设计类课程能够培养学生计算思维、逻辑思维能力,其开设对改善大学生的知识结构,培养他们的计算思维、创新能力及提高综合素质都起着十分重要的作用。

非计算机专业程序设计类课程教学现状及方法改革

1.教学现状及存在的问题

程序设计类课程的授课对象为非计算机专业大学一年级的学生,他们当中有些是文科生,数学基础差,对概念不容易理解,且自学能力差,实际应用则更困难。同时,学生的学习功利性很强,对上机实際操作比学习理论知识更有兴趣,虽然简单的类似课堂内容的实验项目能完成,但解决实际应用问题的能力却较差。另外,由于课时有限,程序训练较少,他们很难认真独立地完成作业。

2.注重学情,因材施教,使用案例教学模式

(1)注重学情,因材施教

在深入研究非计算机专业大一年级学生的认知规律、思维模式和专业背景后,笔者按照课程知识的内在体系结构梳理了教学内容,并深入浅出、由易到难、循序渐进地进行了教学设计。实践结果表明,教学的理论深度要适当,难点要分散,先修知识要交代清楚,避免学生因听不懂而产生厌学情绪。同时,在教学过程中,要大量使用多媒体教学和实际编程环境演示,增加学生的感性认识;针对较复杂的问题要采用讲练结合的形式来巩固知识,加深其理解;还要淡化繁琐的语法规则,突出重点,增加学科前沿知识。

(2)使用案例教学模式

在程序设计类课程的教学中使用案例教学模式,设计丰富生动的教学实例,如讲最大公约数算法时引入欧几里得的故事,讲Fibonacci数列的数组应用时引入兔子繁殖问题,讲双重循环时使用多种金字塔图形。在课堂教学中,教师可采用讲故事的案例教学法引出与案例相关的一系列概念与算法,调动学生的学习积极性,启发思维,便于学生理解。除此之外,还可以采用课程小组、团队学习等形式促进学生共同学习、共同探索,提高学习效率。

非计算机专业程序设计类课程计算思维的培养实践

计算思维可以贯穿程序设计类课程的整个教学过程,下面笔者分别从课程引入、课堂案例教学和实验设计三个阶段探讨如何将程序设计类课程与计算思维有机地结合起来。

1.突出计算思维的课程引入

首先,笔者点明计算思维对学习的重要性。既然计算思维这么重要,那么怎么培养呢?接着告知学生现在要学习的程序设计类课程就是培养计算思维能力的。这就很自然地过渡到本课程的培养目标,即培养学生计算思维与逻辑思维的能力,培养学生算法思想与解决问题的能力。然后,介绍主要教学内容,并展示经典案例及优秀作品,培养学生的学习兴趣。例如,展示数学四则运算实例;展示输入你的姓名输出“***同学,祝你学好程序设计”的实例;展示小汽车肆意向前奔驰的实例;展示扫雷游戏实例;等等。通过这些例子让学生们看到编程能够实现一些基本功能,进而增强他们的自信心和兴趣。

实例展示好后,笔者一步一步演示简单的加法运算实例的具体实现过程(以Visual Basic程序设计为例)。第一步,界面设计。演示需要哪些控件进行数据的输入输出以及界面的属性设计等。第二步,代码设计。引导学生分析问题,如何抽象化和具体化,分析算法和功能,写出代码。第三步,调试运行,修改错误,得出结果。这个实例操作的过程体现了计算思维的抽象化和自动化特征,达到了初步培养学生计算思维的目的,进而实现了课程引入。

2.基于计算思维的案例教学:欧几里得算法

案例教学可以以“介绍历史人物故事—算法介绍—算法编写实现—算法执行过程讲解与输出”为教学过程,体现案例教学中趣味性和科学性的结合。下面,笔者以欧几里得算法为例介绍教学过程。

①介绍历史人物故事。欧几里得(公元前330—公元前275),古希腊数学家,被称为“几何之父”,他的传世之作《几何原本》是欧洲数学的基础。《几何原本》第一次实现了数学的系统化、条理化,而且孕育出一个全新的研究领域——欧几里得几何学,简称欧氏几何。欧几里得算法与“丢番图方程可解性问题”相关。丢番图也是一位古希腊的数学家,是第一位懂得使用符号代表数来研究问题的人,被后人称为“代数之父”。他在Arithmetic(《算术》)一书中提出“有关两个或多个变量整数系数方程的整数解”的问题。对于具有整数系数的不定方程,如果只考虑其整数解,这类方程称为丢番图方程。例如,只有一个未知数的线性丢番图方程,如ax=b,只要a能整除b,就可判定方程有整数解,該解为a|b(“|”整除符号)。对于有两个未知数的线性丢番图方程,如ax+by=c,先求出a和b的最大公约数d,若d能整除c(d|c),则该方程有整数解。因此,对于有两个未知数的线性丢番图方程来说,求解的关键是求最大公约数。

②算法介绍。欧几里得在其著作《几何原本》中阐述了求解两个数的最大公约数算法。求能同时整除a和b的最大正整数的算法就是著名的欧几里得算法,又称辗转相除法。[5]算法步骤为:第一步,输入两个正整数a、b。第二步,以b除a(或者a除以b),余数为r。第三步,若余数r为0,则输出b,程序结束;否则,以b置换a,r置换b,又返回第二步。

③算法编写实现。欧几里得算法流程图与模拟计算过程如上图所示。算法介绍完成以后,根据所学编程语言,进行编程,并调试运行输入数据,输出结果。

④算法执行过程讲解与输出。由于部分学生在高中阶段并没有学习过计算机基础相关课程,即使学习过也可能会对知识的掌握并不准确,所以讲解程序的编译输出过程有助于学生了解计算机的相关知识和工作过程。

笔者首先讲解存储问题。算法第一步是定义变量和分布变量内存空间大小。变量以变量名如a、b形式保存在内存空间中,a、b以整形变量2个字节的二进制形式保存在内存地址中。这时由操作系统来执行,操作系统来决定程序装载在哪个内存中,决定程序被CPU的执行。讲解完存储问题后,引导学生理解算法的执行。算法的执行需要CPU(控制器和运输器)的操作。编译过后的机器语言程序是可以被CPU直接解释和执行的机器指令,一条机器指令被分为操作码和地址码两部分,操作码传达给CPU所要进行的操作类别,如存数、取数、做求余运算、打印等,地址码传达给CPU所要操作的数据在哪里。然后CPU就执行程序了,在一个机器周期内,按“发送指令地址给存储器—取出存储器中指令给控制器—控制其解析指令码—指令码控制相关动作执行(求余运算)”,完成一条指令的执行。然后机器不断重复执行这样一个过程,直至遇到停机指令为止,完成程序的执行。最后在编译器中或外存中显示程序运行的结果。

3.培养学生自己动手练习和实验操作

在程序设计类课程的课堂教学中,教师在讲完一个重要算法或知识点后,要给学生一个阅读或编程练习的机会,这样不仅可以让学生巩固已学的知识点,增强对知识点的理解,而且可以激发学生的灵活运用,提高其创新能力。笔者基本上会保证每次课有5~10分钟的练习时间,让学生成为学习的主体,进行探索研究式的自主学习,让教师成为教学的主导者,起到控制学习过程、提供教学资源和教学建议的作用。

计算思维是问题求解的思维,程序设计类课程主要培养学生算法思想与问题求解的思路,因此上机实验是培养学生计算思维的重要手段,是程序设计课程教学的核心之一,所以教学中教师要重视上机实验。笔者一般安排教学课时的四分之一用于上机实验,上机实验内容不仅要与教材知识点同步,而且要有趣味性和综合性。例如,在分支结构中,安排“健康秤”程序,确定标准身材的身高和体重指数;在循环实验中,设计“九九乘法表”;在数组实验中,设计“杨辉三角形”。上机实验内容一般要提前布置好,3~4题为宜,且难易程度要有一定的梯度。另外,在实验课上调试运行时,教师要鼓励学生程序出错不要放弃,由于学生有不同的专业背景、思维方式和个体差异,因此在实现同一问题时,要允许他们使用不同的方法,要鼓励他们从不同的视角认识问题,提倡算法的多样性。

结论

进行计算思维训练对21世纪的大学生来说是极为重要的。程序设计类课程正是锻炼计算思维的好的工具和方式,它不仅提高了非计算机专业学生的信息素养,培养了学生在处理计算机问题时应有的思维方法、表达形式和行为习惯,而且能够使学生准确地理解计算机的实现机制,有利于学生利用计算机去解决学科问题,并进行学科融合和创新。然而,建立科学的计算思维培养模式尚处在尝试阶段,还并没有一个成熟的模型。因此,如何将计算思维融入教学,培养学生自主学习能力,培养学生运用计算思维解决各应用学科问题的能力,还需要教授程序设计类课程的教师不断地探索和实践。

参考文献:

[1]王飞跃.面向计算社会的计算素质培养:计算思维与计算文化[J].工业和信息化教育,2013(6).

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

[3]常亮,徐周波,古天龙,等.离散数学教学中的计算思维培养[J].计算机教育,2011(14):90-94.

[4]陈杰华.程序设计课程中强化计算思维训练的实践探索[J].计算机教育,2009(20):84-85.

[5]战德臣,聂兰顺.大学计算机——计算思维导论[M].北京:电子工业出版社,2014.

作者简介:郑红波,女,博士,讲师,从事程序设计教学和虚拟现实研究。郑浩,男,高级中学一级教师,从事数学和计算机教学工作;秦绪佳,男,教授,博士生导师,教育部高等学校文科计算机基础教学指导委员会委员,研究方向为计算机图形学。

基金项目:浙江工业大学校级教学改革项目(JG201512),浙江工业大学科研启动金(119005029)。

猜你喜欢
非计算机专业计算思维
非计算机专业计算机基础教学的总结与思考
高校非计算机专业计算机网络基础教学改革探究
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养
非计算机专业VF课程优化教学研究
河南高校非计算机专业学生计算机能力模型研究