用面向科学思维的教学方法改进计算机图形学课程教学

时间:2022-10-14 07:10:41

用面向科学思维的教学方法改进计算机图形学课程教学

摘要:给出面向科学思维教学方法的定义,以及它与结构主义、建构主义教学方法的异同点;阐述用该教学方法讲授计算机图形学课程的具体过程;分析早期计算机课程教学为何不能做好计算机程序设计教学的原因;展示基于计算机图形学教学改革成果提炼计算机科学学科结构的演变过程;指出忽视计算机图形学课程教学与计算机科学学科结构的介绍会导致计算机应用教育的发展不平衡,并将失去促使计算机课程教学体系改革走向成熟的又一机遇。

关键词:计算机图形学;科学思维;学科结构;教学改革;教学方法

0 引言

大学的主要任务是培养人才,特别是培养创新人才。培养创新人才的基本途径与方法有课程教学、参与科学研究与项目开发、对外学术交流等。然而传统本科课程教学多注重传授学科的系统理论等专业知识,不重视对知识产生原因、方法的介绍,如忽视思考解决学科基本问题的具体过程等,这会造成课程教学传授知识与科学研究相脱节,导致学生的知识结构产生缺陷,不利于他们将来从事创新等研究工作。为配合计算机图形学课程的教学改革,根据计算机图形学课程的特点,笔者提出一种面向科学思维的教学新方法,它能有效弥补传统本科课程教学的不足。

1 面向科学思维教学方法的基本要求

常见典型的教学方法有:结构主义的教学方法、建构主义的教学方法、问题(任务)驱动教学方法等。这3种方法各有其优缺点,一个好的教学方法最好能全面综合这3种方法的优点。面向科学思维的教学方法要求把思考问题的方法、系统分析与综合的方法、科学研究的工作方法、查找资料与抽象的方法等知识产生的方法引入课程教学中,有效讲解学科专业知识是根据发展需求、通过研究各种问题产生的;专业理论体系或与其学科结构是由多项研究成果形成的,这些知识是科学研究与科学思维产生的结果。

结构主义、建构主义与面向科学思维教学方法的异同点见表1。

2 确立计算机图形学课程的教学内容与教学模式

2.1 传统计算机图形学课程教学改革的原因

2013年以前,国内外传统计算机图形学课程教学以讲授图形标准(显卡驱动与显示图形等子程序的集合)或CAD为主。这种CAD与计算机图形学(即图形标准)学科的划分有问题,它只便于图形标准的硬件实现,却因基本概念不全导致这两者均不能独立讲清三维真实感图形的自动生成原理以及计算机程序设计的基本规律,更不能总结计算机图形学的研发成果与发展规律,不能满足计算机图形学学科建设发展需求。

2.2 用系统分析与综合的方法确立计算机图形学课程的教学内容

2.2.1 系统分析:从理论上确立实现计算机图形学课程目标的发展路线图

本课程目标是用计算机程序自动生成类似人眼观察世界获得的观察图像(亦为学科研究的基本问题,它适合作为建构主义教学方法要求的教学环境需求问题)。为此至少要完成3个子任务:①掌握三维图形的生成原理;②掌握生成三维动画等图形的程序设计;③理顺新课程教学内容与图形标准、CAD的相互关系。

1)第一个任务的实现方法。

照相机生成照片遵循光线传播生成三维图形这一物理原理,计算机生成所有三维图形(包括光线跟踪算法、辐射度算法、投影、多边形填充、纹理映射、阴影算法、图像融合算法与二维直线的生成等)也应遵循该原理。这是本课程知识理论体系的完备性与一致性的基本要求,它决定了计算机图形学的学种性质与教学定位。

2)第二个任务的实现方法。

用辐射度和光线跟踪算法生成的三维真实感图形等程序,是一类典型的显示图形的计算机仿真应用程序。故计算机图形学的编程实现既遵循计算机仿真的基本原理,也遵循计算机程序设计的基本规律。

计算机仿真遵循系统(决定被仿真对象的范围与其行为特性)、建模(用数学模型描述仿真实验对象)、仿真算法(计算机通过执行该仿真算法,进行仿真实验)与评估(检验仿真实验的结果是否与应用需求保持一致)这一基本原理。

计算机程序设计应遵循计算理论可计算性的实现前提对程序设计的规范要求:①待解问题被模型与系统形式化方法所描述;②这种描述要转换成算法;③算法要有合理的复杂度。

这里,形式化描述指用数学符号、逻辑符号与流程图描述并要求保持逻辑上的一致性。系统的概念被本文定义为软件系统:它按解决问题的系统流程要求,编程实现数个模型描述数据与命令的输入、存储管理、运算处理、输出显示4个过程,能直接达到自动运行软件的设定目标并具有完整动态结构的综合程序。软件系统的概念是国内传统计算机核心课程教学缺失的重要概念。

故三维图形学的教学内容,主要用3组数学模型描述可视物体、灯光、照相机物理模型的物理特性(如用几何模型、材质模型与纹理模型描述可视物体;用光线几何模型、颜色模型、照明模型、辐射度算法和光线跟踪算法等描述点光源;根据类照相机的观察参数,用阴影算法、图像融合等算法描述照相机模型;对光线跟踪算法,应重构照相机模型);在物理仿真、数学建模与软件系统概念的指引下,编程构建三维图形软件系统,实现三维图形的自动显示。物体运动与变形、灯光变幻、照相机运动可形成计算机动画。计算机游戏是用人机交互的操作方式并通过实时动画与声音有效描述具有智能行为能力的人(或动物)的多种社会实践活动。

3)第三个任务的实现方法。

计算机动画包含了传统图形标准与CAD的原理,所以在课程最后,可讲解图形标准OpenGL的原理与编程使用方法。同时图形标准是游戏软件的基石,是现代计算机应用不可缺少的基本配置。

2.2.2 系统综合:介绍图形学的基本原理与动画软件的实现方法

这要求教师先查找资料、汇集前人发表解决以上问题的不同论文与教材(解决课程教学问题的先决条件),挑选材料编写课程讲义,详细介绍完成该任务所需的基本原理与实现方法,讲义试用成熟后再编著出版教材。

教材按以下思路组织:用二维图形学构建软件系统概念的教学,用三维图形学构建三维图形数学建模的教学(直接用三维图形构建软件系统概念的教学,会导致课程教学内容的复杂化)。在每章的开头,均提出应思考并解决哪些问题才能达到本章的教学要求,加强训练读者思考问题的习惯。

学完本课程,学生要能胜任计算机动画软件的设计与编程实现等任务。

2.3 归纳计算机图形学的学科结构

以上教学充分展示:由物理模型(化学模型、生物模型、社会发展需求模型等)数学模型(数据模型是数学模型的一种简单特例,其编程操作主要是数据的存储与检索,以实现数据库软件。根据数学模型“曲高和寡”的原理得知,数据库软件是应用软件中应用面最广的一类软件;或用离散数学的方法、判断规则与判据或可编程实现的自然语言与功能等描述解决问题的过程与步骤;或用通信协议描述数据通信过程要遵循的规则、约定等要求,这是网络通信编程的基础)软件的系统功能与结构用算法语言实现程序编码并形成算法软件测试评估等过程所确立程序设计的基本规律。程序设计这一规律,能被雷达的设计与制造过程所佐证,如通过物理实验确立雷达原理用数学模型描述雷达的工作过程设计雷达系统的功能与结构用电子技术制造雷达设备做好的雷达要通过测试评估才能交付使用等。

由此能用理论(物理原理、建模、软件系统、仿真、程序设计)、工具(OpenGL、Direct3D、着色语言、ACIS、WebGL、OpenCL、3D游戏引擎等)与应用(显示图形的应用程序,如3D动画或CAD、地理信息系统(空间复杂性高而时间复杂性低)、游戏与虚拟现实系统(时间复杂性高而空间复杂性低))3个学科形态描述计算机图形学的学科结构。

2.4 用科学研究的工作方法确立计算机图形学课程的教学模式

(1)选题(发现问题):找任务、了解用户需求、检索阅读资料并提出问题。自由选题要确立研究问题的科学性、目标性、创新性和可行性,并找准课题的申报渠道。提出问题是对任务深入思考或科学研究的前提。如计算机图形学的学科属性与教学内容是否成熟,是此前国际计算机图形学教育界多年关注的教学疑难问题。

(2)分析问题:真实照片由照相机、可视物体与灯光3个主要因素决定,由此确立解决问题的方法。

(3)寻找解决问题的方法(提出假说):首先用二维图形建立软件系统的概念;然后建立描述照相机、可视物体、灯光物理模型物理特性所需的数学模型,构建仿真光线在计算机场景与照相机模型中传播,生成三维动画图形。

(4)做实验解决问题(找寻证据支持假说):针对建立的数学模型,选择数据结构,设计算法,编写程序源代码并调试测试程序,构建三维图形软件系统,实现图形的自动显示。

(5)取得新成果(查新验证):改进学科的系统理论与基本方法,发表研究论文,推广该研究成果或论证申报新开发项目,推动学科建设向前发展。当我们解决好计算机图形学的教学问题时,就为撰写本文并申报计算机图形学国家规划教材奠定了基础。

由此构建程序设计教学的完整过程,并把程序设计拓展成科学研究工作方法的一种形式与组成部分。

该教学模式不仅把教学与科学研究两个不同性质的学术过程结合在一起,还说明围绕课程教学思考问题的训练属于科学研究领域思维活动的一种基本形式。

3 在课程教学过程中合理安排思考问题的训练

教师在重点介绍、讲解每个专题前,要考虑如何训练学生根据学科的发展需求思考问题,这些问题是任务驱动教学法中各种问题的来源。

3.1 用二维图形学构建软件系统概念的教学

专题1:线段图形的描述与生成。基本问题:如何用数学的语言与方式(如描述函数)描述各种线段图形的几何形状,以形成各种线段图形的几何模型?如何形成矢量汉字等子图形高效率的描述方法?如何把这种描述函数转换成算法,并根据其描述数据生成这些基本图形?

专题2:实面积图形的描述与生成。基本问题:用什么方法描述实面积图形的几何形状,以形成各种实面积多边形的几何模型?如何利用显示设备的绘图功能生成实面积图形?如何实现直线图形边缘的反走样显示?

专题3:图形的基本运算。基本问题:图形运算的目的是什么?如何用几何变换矩阵的方式描述图形几何模型的几何变换?若用实面积多边形的布尔运算构建新的复杂图形的几何模型,则布尔运算的数学基础是什么?如何实现其布尔运算?

专题4:图形的观察运算。基本问题:如何把输入到计算机中的图形几何模型描述数据,转换成显示设备坐标系中的图形几何模型描述数据?并调用图形的生成算法显示各种图形的几何形状?

专题5:图形数据与命令的输入。基本问题:能用哪些方法把图形模型描述数据与命令高效率地输入到计算机中?如何利用输入设备的数据输入功能与显示设备的图形显示功能,编程实现图形数据的交互输入?如何规划应用程序中的人机交互设计问题?

专题6:图形的数据结构。基本问题:图形数学模型的种类与复杂、复合图形的构建方法,这些对保存图形几何模型的描述数据提出了哪些动态管理上的要求?如何设计相应图形的数据结构,才能有效地保存、管理存储于计算机中的各种图形描述数据(命令)?如何把图形显示区中的图形描述数据编译转换成多种显示设备能识别并运行的显示指令代码,以实现图形的显示?为编程实现各种图形的自动显示,需要确定编程处理图形数据的基本流程和程序的功能与结构,以形成软件系统的概念。

3.2 用三维图形学构建数学建模的教学

专题7:照相机模型的建立与三维几何图形的显示。基本问题:如何用数学模型,特别是用矩阵的方法,描述照相机拍摄(投影显示)三维直线图形的物理过程?

专题8:平面物体几何模型的构建与图形显示。基本问题:如何用直线与平面函数描述平面物体的几何形状?如何记录这种描述所形成的几何模型数据?如何构建形状复杂的平面几何物体?如何显示平面物体的几何形状与表面?

专题9:曲面物体几何模型的构建基础与线框模型图形显示。基本问题:用什么方法描述曲面物体的几何形状并构建其几何模型?如何显示曲面物体的几何形状?

专题10:灯光模型的建立与光照物体的图形显示。基本问题:如何用数学模型的方法描述灯光的物理特性?如何描述在灯光照射条件下几何物体的可视物理特性?如何显示光照效果的曲面物体的表面与几何形状?如何更有效地描述光线传播的物理特性与变化规律?

学生按照这一思路进行选题,可考虑为实现像照片一样自然景观(如白光的薄膜干涉等现象)的图像显示,需研究哪些问题等,并发表其研究成果。课程教学内容成熟完整后,才便于界定计算机图形学的学科内涵。

4 分析计算机专业主要课程的基本特点,提炼计算科学的学科结构

4.1 计算机教学此前无计算科学学科结构概念的原因分析

现有权威资料和维基百科、百度百科表明,此前国内外计算机教学均无计算科学学科结构这一重要概念。以下3点是导致这一现象存在的重要原因。

4.1.1 对计算工具的分类作用认识不足

尽管人们知道计算机是一种计算工具,计算机有广泛的应用,计算机科学有自己的一套理论根据,但仅用“理论、工具与应用”很难全面概括计算科学的研究全貌与多项用途。事实上,计算机的系统工具对总结计算科学的学科结构非常重要。

计算机系统是一个能对编程实现的数学模型与逻辑模型,进行自动解算与推理的通用计算工具。这决定了程序设计在编程使用计算机上的重要性。

操作系统是对计算机的各种硬件资源与软件资源进行程序管理,使计算机正常运行的系统工具软件。同时,它能对用户程序(命令)的输入、存储管理与自动运行提供服务(包括对通信进程进行有效监管控制),并用人机交互与图形界面的方式记载这种用户程序与命令操作的运行结果。

编译系统是用高级语言编程必备的系统工具软件,它可以把用户用高级语言编写的程序源代码、编译转换成计算机能识别并自动执行的机器语言程序代码。

算法语言是用户为编程使用计算机的各种计算功能,用类自然语言的方式与计算机相互交流思想的符号表达工具。

这些计算工具本身没有直接解决数学计算与逻辑推理等应用问题,该任务由编程解决。

这类计算工具是在实际应用过程中总结、提炼的结果,工具本身一般不直接解决最终的应用问题,这是工具的第一个特点。它的第二个特点是工具的制造具有递归性,即可用简单工具制造复杂工具。它的第三个特点是专业复杂工具的制造方法与技术具有封闭性与隐蔽性,但这不影响他人对工具的操作使用;且其隐蔽、封闭性是工具使用方便、高效的主要原因。

软件系统与计算工具等概念的形成,是用抽象的方法(从众多事物中总结提炼出具有共同本质的特征、而舍弃其非本质的特征等内容)处理形成的结果。

4.1.2 传统课程没有讲清计算机仿真的原理与计算机程序设计的基本规律

传统计算科学的核心课程(计算机导论、计算机原理与系统结构、算法语言与数据结构、编译系统与操作系统、软件工程、离散数学、数据库和计算机网络)从未讲清计算机程序设计的基本规律与计算机仿真的基本原理。学生往往通过课后大量的编程训练,积累对计算机程序设计与计算机仿真的认识。这种程序设计经验式教学培养模型,无助于学生总结并提炼计算科学的学科结构。相反,人们在算法语言与数据结构课程的教学上存在一些模糊认识。例如,算法语言是用一组语法规则与功能约定的一种符号标记系统,它让人们掌握语言的符号约定、功能、特性以及用算法语句描述给定的数学计算与数据处理、逻辑判断等――即其教学主要是完成程序的编码训练,由此形成算法;也为研制该语言的编译系统做铺垫。然而部分算法语言的教科书,只有一些算法验证性应用实例,并把它们等同于计算机程序设计教学,这无助于初学者全面正确地掌握计算机程序设计的基本规律,因为学习算法语言后,他们还是没有数据结构的概念。

数据结构是研究用程序编码的方式,在计算机中有效实现多种类型数据的存储组织(形成线性、非线性、网状结构形式以及静态或动态结构形式的数据存储方法)、存储管理、排序检索与编程效率等任务的一门专业基础课程。数据结构课程有很多计算复杂性的案例,是培训人们掌握编程技巧的一种有效方法。因为编写程序所采用的数据结构往往决定了算法的编码实现方法,更重要的是,CPU是根据保存在内存各处程序代码的逻辑次序、通过逐条读取其指令代码来完成用户指定应用程序(或命令)的执行。如何规划、设计、调度与管理内存的使用,这与数据的调度与管理原理类似,是数据结构讨论的问题之一(常在操作系统课程中介绍解决该问题的方法。数据结构问题本质上属计算机内存的动态、合理使用与管理问题)。而该课程中所谓抽象数据类型,是指在指定的数据集上定义对该数据元素进行多种加工等编程操作方法。这个数据集以及对其数据元素的加工方法(数据集与其加工方法均能递归定义),应来源于人们用数学的方法描述解决实际应用问题这一过程,该主次关系不能颠倒。没有这些数据结构与程序编码等基础训练,初学者很难规划好一个软件的系统功能与结构。

由于传统的算法语言与数据结构课程教学无数学建模(它决定了解决多种应用问题算法的来源)与软件系统的概念,故传统的算法语言与数据结构课程没有讲清程序设计的基本规律。

4.1.3 传统计算机课程存在教学问题

首先,传统计算机图形学课程存在教学问题,现已被本教学改革有效化解。

其次,软件工程课程存在教学效果空洞抽象等困惑。若把新的计算机图形学课程作为软件工程课程的教学实习对象,可以有效解决该教学困惑。由于新的计算机图形学课程可以讲清程序设计的基本规律与计算机仿真的基本原理,这使软件工程课程的教学从理论上能达到软件全生命周期设计的教学目的。

第三,计算机导论与计算机基础课程存在教学困惑。计算机导论应对计算学科发展的全貌作整体介绍,并理顺计算学科与其他学科之间的关系,引导读者根据自己的需求有效选择学习不同的计算机专业知识。由于此前计算机课程存在以上问题,导致历次获部级奖励的计算机教学改革成果以通过有效载体进入课程教学,致使计算机课程教学体系仍然不够成熟。这往往是行业外人士选修计算机课程的迷惑。因为自牛顿时代以来,用数学的语言描述自然科学取得的新进展,是各自然学科之间相互交流学术思想与成果的通用方法;然而目前其他自然科学工作者学习计算机后,却无法顺利地用计算工具的方法来表达其各自学科建设研究成果的数学模型等。这种计算机课程教学不便于计算机教育与其他自然科学教育进行对等有效的学术交流,并导致计算机基础课程教学出现危机。另计算机教学无计算科学学科结构的概念,即人们没有评判计算机导论教材好坏的客观标准。计算机图形学教学改革取得的新成果――发现计算科学学科结构的客观存在,为重构计算机导论与计算机基础课程提供了重要借鉴。

最后,计算机网络课程存在不足。如该课程介绍网络通信协议较多,却较少介绍网络通信工具的构建与编程使用方法,以及计算机网络通信程序的编程实现,这不利于初学者承担计算机网络计算的重任。

4.2 借鉴计算机图形学的教改成果。归纳计算科学的学科结构

传统计算机核心课程缺少一门计算机的综合运用课程,以总结并提炼计算机程序设计的基本规律与计算机仿真的基本原理。计算机图形学课程可以很好地承担这一重任。有了计算工具的概念与计算机图形学课程后,可以重新分类、归纳已知计算机的多种应用。

成熟的计算机图形学与传统计算机核心课程的教学,使计算科学理论(即计算机的系统理论和专业知识。它需回答:什么能被工具有效地进行自动计算,用什么方法研究该命题并形成哪些结论、成熟的理论与发展方向;满足何种条件的实物装置能实现计算功能,计算装置如何构造实现并使其正常运行、操作使用;可计算性的实现前提是什么,如何用该计算装置实现这种自动计算,如何保证计算结果的正确性和计算装置运行的安全稳定,该计算装置有多强大的计算能力;计算理论与计算机专业各课程的关系等)、工具(算法语言、编译系统、操作系统、计算机系统)与应用(数据存储与检索,数据计算、仿真、符号变换与推理,数据网络通信,数据获取、输出表达与控制即多媒体)3个学科形态得到完整展现。它们是形成计算机专业多个发展方向(如杀毒与网络防火墙、网络存储与查询、网页设计开发工具与网站建设、网络浏览器,即时通信、流媒体与播放器、人工智能与专家系统、计算机嵌入式应用、计算机在通信与自动控制系统中的应用等)与综合(如3D网络游戏)或研发计算机硬件(计算机系统结构与CPU设计、计算机工程)的基础。

因互联网的应用,计算机网络计算有网络理论(在通信理论的支持下,如何可靠、快速、方便、安全地实现计算机信息描述数据的通信;网络计算的理论基础与基本规则是什么,如何利用网络资源进行有效的传输与计算)、网络工具(计算机与互联网、路由器与交换机、调制解调器、Java、html语言、浏览器、Socket、遵循HLA标准的分布式实时仿真工具RTI、网络游戏引擎)与网络应用(如计算机数据通信与监管、电子商务、社交网站、网络游戏、云计算、信息技术与信息系统、物联网、大数据的应用等)。

图1显示了计算科学的学科结构。由计算机仿真的基本原理与可计算性的实现前提,可论证程序设计教学与计算机仿真教学的一致性。

故计算作为一门学科(招生专业)的根据是:①它有自己独立的研究领域。即什么能被有效地用工具进行自动计算以及可靠、安全、快速地传输?②产生专业知识的方法。科学研究与科学思维是产生(创造)多种学科新知识的主要方法,这是研究生阶段的主要学习任务。③由此形成的理论体系与其学科结构。这是本科生学习阶段应掌握的专业知识。④传授知识的法定机构与办学条件。⑤广泛的应用基础。

5 结语

通过计算机图形学的教学改革,我们不仅总结了计算机图形学的学科结构,还分类、归纳了计算科学的学科结构,这使面向科学思维的教学方法能与结构主义的教学方法相接轨。通过与结构主义、建构主义、问题(任务)驱动教学法的相互比较,明确本教学方法包含了问题驱动教学法,吸收了建构主义教学方法引导学生思考问题的优点,并对结构主义的教学方法进行了多方位教学适应性拓展。如:①根据学科或课程建设出现的多种结果(理论体系与学科结构,仅是其中两种可能的结果),要求用系统分析与综合的方法,把成熟的学科建设成果或课程建设目标进行适当划分,以形成便于教学的各门课程。例如,传统计算机核心课程与新计算机图形学课程,是对计算学科建设总目标与成果的恰当划分;对课程教学内容的划分,最后会形成教材各章的教学内容;但对学科或课程教学内容划分不当,会造成课程教学出现教学问题。②注重学科的研究起点、范围与发展主线的介绍。③根据各课程解决问题的需要,灵活设置课程的教学目标(围绕学科结构或围绕其理论体系进行课程教学,仅是两个可选的课程教学目标),并选择合适的教学方法。④把知识产生的方法引人课程教学。如倡导人们在学习每次课程之前,应按照科学研究的工作方法先围绕授课主题积极思考问题,教学则是解答这些问题的具体过程。故可确认本教学方法是一种新的教学方法。

而用计算机图形学先讲计算机动画,再讲图形标准(或网络游戏,但教学难度大)等显示图形的计算机仿真应用程序,能呈现计算科学的学科结构。由此确立计算机图形学作为可视化与物理仿真应用程序在计算科学中的地位与作用,并探明实现计算机课程教学内容合理、教学体系完备这一发展目标的有效途径。显然,计算科学学科结构的客观存在,是该学科建设成熟的主要标志。而由ACM(美国计算机协会)与IEEE(美国电气和电子工程师协会)联合主导的计算机教改成果CS2013,却没有计算科学学科结构这一关键概念。由于显示卡与GPU(图形处理单元)是现代计算机的基本配置,它是除CPU之外在计算机应用中最重要的硬件计算工具。例如,由多个CPU与多个GPU组合成的异构计算,已成为现代超级计算机设计的一个重要发展方向。除计算机图形学外,目前计算机中其他已有单门课程的教学,均难以同时做到既讲清计算机仿真原理、计算机程序设计的基本规律与计算科学的学科结构,又是计算机构造不可缺少的重要组件并能获得成熟产业链(如显示卡、动画与游戏)的支撑。故忽视计算机图形学课程教学与计算科学学科结构介绍的做法不可取,它会导致计算机应用教育发展的不平衡并将失去促使本科计算机课程教学体系的改革走向成熟的又一机遇。

上一篇:智能电网技术和分布式发电技术的协同发展 下一篇:电力系统自动化的安全管理