姜丽梅,张荣华,刘 丽
(华北电力大学(保定) 计算机系,河北 保定 071003)
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M Wing)教授在美国计算机权威期刊Communications of the ACM定义了计算思维(computational thinking):计算思维是运用计算机科学的基础概念进行问题求解、系统设计和理解人类行为,它涵盖计算机科学之广度的一系列思维活动[1]。随着计算机技术的发展和应用领域的扩大,计算思维的重要性日益明显,计算思维能力培养也成为当前各阶段教育的能力导向之一。计算思维作为一种与计算机及其特有问题的求解紧密相关的思维形式,人们根据自己工作和生活的需要,在不同的层面上利用这种思维方法去解决问题[2]。经过近十年的教学研究和实践,这一先进的教学理念已被相当多的人接受,得到国内众多知名院校的支持。国内众多高校的专家学者都已提出,将计算思维能力培养作为计算机基础课程的改革方向,这对于提升大学生科学思维能力,培养创新人才具有重大意义[3]。
计算机图形学作为高等院校计算机核心课程之一,与计算思维有着天然的联系。以计算思维为核心的教学模式不应仅着眼于“知识”即事实的学习,更强调用计算思维进行引领,更多地训练学生的思想、方法、意识和能力。如何以计算机图形学课程为载体培养计算思维能力,引导学生学习并掌握这种思维方法,将其有效地用于问题求解、系统设计以及人类行为理解,是当前课程研究的方向之一。
计算机图形学理论性强、概念抽象性高、实际应用性强,受传统教学理念的影响,大多数国内高校的计算机图形学教学模式并没有跟上图形绘制硬件的发展和时代的要求。传统的计算机图形学教学基于固化算法的功能和固定的GPU结合编程语言,偏重于把现有计算机图形学的原理、方法和基本的图形绘制算法传授给学生,学生只能被动地接受已有算法的功能实现,忽视了对学生创新意识和创新能力的培养。对于实际操作,又仅仅从上层软件的操作层面锻炼学生的应用能力,学生很难从理论深度深入理解上层软件的工作原理,势必造成学生在学习计算机图形学原理和知识时只知其“然”而不知其“所以然”的局面,违背了当今本科教育全面发展的培养目标。尤其是对于计算机专业的学生,除了需要系统完善的知识,理解并掌握计算机图形学的基本概念、理论和算法,更需要加强系统认知能力、算法分析能力、计算思维能力、程序设计能力的培养。
过去十几年中,GPU得到了迅速发展,尤其是可编程GPU及众多高级着色语言的出现,使得传统计算机图形学教学模式的缺陷日渐凸显。功能固定的GPU虽然图形绘制性能和速度较高,但是应用程序编程人员并不能控制计算机内部图形生成过程,进一步限制了对学生探索知识能力和创新意识的培养。对于基于可编程GPU的图形绘制应用程序来说(以OpenGL应用程序为例),所有的绘制都是通过可编程GPU的顶点着色器、片元着色器以及其他着色器来控制的,因此新的可编程结构为三维图形应用程序开发人员提供了极大的灵活性,也对高等学校计算机图形学课程的教育教学提出了更高的要求[4]。
计算机图形学是研究如何利用计算机生成、处理和显示图形的一门学科,包括图形描述、图形生成、图形变换、图形存储、图形输出。计算机图形学涉及范围非常广泛,不仅涉及计算机的各个学科,还涉及线性代数、计算几何、机械设计、光学、物理学、工程制图等多个专业和学科。需要认识到,计算机图形学中蕴含着计算思维的概念,而如何构建能够体现计算机图形学核心思想和方法的教学内容,突出计算思维方法的训练,在掌握课程知识的基础上,引导学生学习、掌握这种思维方法,有效地将其用于计算机问题以及非计算机问题甚至跨学科问题的求解,是当前课程的改革方向,需要从教学理念、教学内容、教学方法等方面采取有效措施以提升教学效果。
教育部大学计算机课程教学指导委员会构建了计算思维的表述体系:计算、抽象、自动化、设计、通信、协作、记忆和评估。在计算机图形学课程中,“计算”与“自动化”这两个概念又是关注的重点,这也是由课程内容所决定的[3]。应当认识到:计算机图形学中渗透着计算思维,应当启发学生使用计算思维解决各种计算机图形学相关的实际问题。
(1)计算机图形学研究如何在计算机上生成、处理和显示图形,模拟画家绘画、设计师设计等过程并展现他们的思维方式,有助于深刻理解从问题分析、系统设计、问题解决的过程[5]。
(2)图形的几何变换、光栅化、隐藏面消除等图形学的具体求解问题,需要利用计算机科学的基本概念进行求解,也体现了计算思维方法,二者存在联系和区别。
(3)计算机图形系统由软件系统和硬件系统组成,软硬件系统开发和设计是计算机类专业学生的重要技能。
传统的计算机图形学教学基于固化算法的功能固定的GPU结合一种或几种编程语言介绍计算机图形学的基本原理、方法和技术,而该课程内容多、理论难度大、实践性强,导致学习难度增加、学生学习积极性不高等问题,陈旧的教学内容还限制学生获取具有较强应用背景和前沿性的技术知识,势必会限制学生的创新意识和探索能力,也不利于学生实践能力和创新能力的培养。
结合多年计算机图形学课程的教学实践和当前计算机图形学技术的发展,提出的对教学内容的调整方案主要包括以下内容。
1)以计算机图形学相关原理、方法和技术为主要内容,以可编程GPU的图形绘制流水线为主线安排教学内容,见图1[4]。
图1 图形绘制流水线
强调以流水线形式描述图形数据到图形显示的绘制过程,更能突出计算机图形学中蕴含的计算思维。
(1)顶点处理模块的主要功能是通过执行顶点着色器程序(vertex shader)确定顶点的位置坐标以及程序员希望的其他输出数据,比如顶点的法向量和纹理坐标。随着现代可编程GPU的发展,顶点着色器变成了更加通用的编程单元,可以处理任何与顶点相关的数据,比如编写顶点着色器程序生成对象的动画效果。在图形生成过程中,对象顶点经过在不同坐标系之间的变换,每一次变换可以用一个矩阵来表示,对象顶点在坐标系的多次变换可以表示为矩阵的相乘或者级联,最终表示为一个复合矩阵(计算、设计、自动化)。
(2)裁剪之前将顶点组装成像线段和多边形这样的图元,然后裁减掉裁剪体外部的对象,保留裁剪体内部的对象(计算、自动化、抽象、记忆、评估)。
(3)光栅化模块将裁剪模块得到的图元进一步处理成帧缓存中的片元(计算、记忆、自动化、抽象、设计、评估)。
(4)片元处理模块主要执行片元着色器程序(fragment shader),利用光栅化模块生成的片元来更新帧缓存中的像素,确定三维图形每个片元的颜色和可见性。每个片元的颜色可以由程序指定,也可以利用基于物理的真实感光照模型来计算,这样的光照模型考虑了对象的表面属性和场景中的特定光源(计算、评估、设计)。
目前,现代可编程GPU已经演化成一种具有统一渲染架构的并行流水线结构,图1所示的流水线上各个模块之间是并行执行的,并且流水线上着色器本身也是基于顶点或片元数据并发执行的(协调)。
(5)利用图形绘制流水线,不仅在各个模块内容的学习中能认识到计算机思维的抽象、自动化等概念,而且对图形生成的流程有整体认识。在计算机图形系统构成、输入输出设备、图形软件教学过程中,可体现计算思维中的记忆、通信、设计思维训练,认识由简单问题到复杂问题、复杂问题分解为简单问题的过程。
2)根据学生的实际学习情况,压缩部分理论陈旧的知识,及时把最新技术和最新研究成果引入理论教学中,开阔学生们的视野。
在掌握基本原理和基本概念的同时,结合图形绘制硬件的发展,增加利用高级着色语言控制可编程GPU进行图形绘制的相关原理、方法和技术这部分课程内容,增加WebGL和Three.js等第三方库的教学实践。
3)引入计算机图形应用案例,鼓励和引导学生围绕计算机图形学相关内容,灵活选择切入点设计并开发图形应用,熟练掌握计算机图形学基础知识,提高明确问题、分析问题、解决问题的能力,将实际应用中蕴含的计算思维与计算机图形学中的计算思维联系起来,实现对学生计算思维能力和创新能力的培养。
总之,教学内容的调整不仅符合学校“厚基础,强能力,重实践”的原则,也有助于培养学生基于图形绘制的计算思维能力。计算思维的核心概念是经过高度概括和理论总结的,还不能成为直接的教学材料,其培养要渗透在传授学科知识、训练应用能力的过程中[6]。通过计算机图形学课程的学习,逐步提炼计算思维的具体表现形式与过程,引导学生在不同的应用情景中梳理运用计算思维解决问题的全过程,最终将利用信息技术解决问题的过程迁移到学习和生活的其他相关问题解决过程中。
计算机图形学的内容抽象性很高,存在一些晦涩难懂的概念。同时,计算机图形学具有很强的应用背景,但实践难度大。为了取得良好的教学效果,改进传统的以讲授为主的教学方式,采用多种教学手段相结合,成为计算机图形学教学的最佳选择。
(1)采用“所见即所得”的方式,包括开发界面直观友好的教学演示软件,选取有指导意义和教学意义的代表性的案例,通过教学演示软件形象地展示复杂图形生成过程,将计算机图形学抽象的思维过程形象地表达出来。
(2)将研究性教学引入到教学过程中,强化学生发现问题、分析问题和解决问题的能力。
(3)改变传统的教师讲授、学生参与的教学模式,研究双主互动教学模式,加强学生在教学过程中的主体地位,提高学生学习的积极性和主动性。
(4)以课程实验为契机,让学生自主设计并实现三维场景绘制,设置OpenGL基本图形绘制、3D建模和真实感图形绘制综合实验,调动学生思考和探究的积极性。计算思维远不止计算机程序设计,还要求能够根据待求解问题在抽象的多个层次上思考、设计和实现,因此,鼓励学生自主完成游戏开发、移动图形计算等新形式题目,培养学生的项目设计、实现和实施的能力,从而加强计算思维能力培养。
计算思维能力培养以计算机学科为代表,是近年来计算机相关课程的教学研究热点。计算机图形学教学改革以计算思维能力培养为导向,对于提高学生的综合能力具有重要意义。特别是结合当前计算机软硬件技术的新发展,基于可编程GPU和着色语言介绍计算机图形学的知识,是培养和促进学生计算思维能力的有效手段之一,能够加深学生对本学科计算特征和思维方式的认识,进一步增强学生运用计算思维分析问题和解决问题能力。反过来,学生计算思维能力的提升有助于更好地理解计算机图形学的核心内容,取得更佳学习效果。