面向应用创新型人才培养的程序设计拓展课程教学探索

    徐芝琦 潘瑞芳

    

    

    

    摘要:在新工科建设形势下,地方应用型本科高校的理工类人才培养重点已转为应用创新型人才的培养。程序设计课程是理工类人才培养的核心基础课。作者针对目前应用型高校的程序设计课程中存在的问题,创新性地设计、探索和实践了一门程序设计拓展课程。文章详细阐述了该课程的教学目标、课程体系,并佐以教学案例详细介绍了其独特之处,最后结合问卷调查论证了该课程对学生的计算思维能力和创新创造能力培养的积极教学效果。

    关键词:程序设计拓展课程;Processing;创新编程

    中图分类号:G433? ? ? ? 文献标志码:A? ? ? ? ? 文章编号:1673-8454(2020)02-0048-04

    一、引言

    2017 年,教育部启动“新工科”发展研究工作,即针对新技术、新产业与社会新形态的变化,推进面向可持续竞争力的新型工科人才培养模式改革[1]。新工科人才培养模式改革与此前国家深化教育改革相呼应,对于地方应用型本科高校的理工类专业而言,重点培养应用创新型复合人才,才能满足社会对新工科人才的需求。

    應用创新型人才主要以培养技术应用能力为主线来设计学生的知识、能力、素质结构和培养方案[2],并以应用为主旨和特征构建课程和教学内容体系,强调学生的技术应用实践能力的培养,同时重视人才的创新能力培养。在对地方本科高校所培养的应用创新型人才的知识、能力和素质的要求上,并不过于强调技术的熟练程度以及岗位对应性的操作能力,而是强调其既具有宽厚的知识基础、应用性专业知识和技能,又具有转化和应用理论知识的实践能力以及一定的创新能力,如对应用知识进行技术创新和技术的二次开发能力等[3]。

    在新工科人才培养体系中,程序设计课程的重要性毋庸置疑。不论是C语言还是Java语言,不仅是计算机相关专业的核心基础课[4],也是应用型大学中理工类专业的专业基础课,其传统教学目的是培养学生逐步掌握程序设计的基本方法,培养其计算思维和实践能力,为后续课程打下坚实的基础[5]。然而遍观目前应用型大学的程序设计课程教学现状,绝大多数学生在理论课上能听懂某种程序设计语言的基本语法和语句基本执行过程,对教师所讲的基本知识与例题能够基本理解,但是对稍难一些的算法理解起来就显得很困难。导致上机实践编程时绝大多数学生只是机械地模仿例题,无法真正去动手编写程序解决实际问题[6],更缺乏创新性。

    针对目前应用型大学程序设计课程的教学现状,面向大一学生,笔者开设了一门程序设计拓展课程《游戏数学与物理》。该课程的教学内容以基础数学与物理知识如何应用于游戏与交互媒体作品的设计开发中为主线,鼓励大一学生在Processing平台上探索游戏与交互媒体作品的核心算法和关键问题并且进行创新实践。本课程的独特性和创新性在于,一方面作为程序设计拓展课,它拓展了学生对编码的认知,以项目驱动积极锻炼了学生的实践动手能力,另一方面它在游戏与互动媒体作品的设计与开发中融合了基础的数学和物理知识,切实培养了学生的计算思维能力。

    二、Processing

    在本课程中,Processing是学生的实验工具。它是一款基于Java语言的开源编码平台,支持现有的Java 语言基本架构,将Java 的语法进行了简化并将其运算的结果视觉化[7]。

    Processing以数字艺术为背景,为对科学与艺术之间的跨领域表现有兴趣的人而设计,它表现出以下特点:[8] ①简单易用。具有图形用户界面,操作极其简便,并且有相当完备的开发者文档,便于学习。②开放性强。由于其本身作为开源软件,使用者可依照自己的需要自由裁剪出最合适的使用模式。社区活跃,国内外的开发者众多。③扩展性强。由社区开发者提供的大量第三方库能兼容各种类型的软硬件,能提供各种实时鲜明的视觉反馈,让使用者能很快创作出声光兼备的交互式新媒体作品。④支持多语言。Processing在发展过程中,支持的开发语言由Java扩展到了JavaScript、Python等多种语言,为使用者提供了多种选择。⑤易分享。OpenProcessing等多个网站都提供了Processing在线编辑分享的平台,用户可上传自己的代码,分享自己的作品。

    正是由于Processing具备了上述特点,它被广泛用于创新编程,尤其是数据的视觉表达、生成艺术和互动艺术的创作中。而这些特点,可以大幅缩短大一学生这些编程新手学习的时间曲线,更容易理解抽象逻辑法则,并且丰富的视觉表达和互动效果能让学生充分锻炼其创新能力,并且获得较强的学习成就感[8]。

    三、教学目标及创新点

    《游戏数学与物理》主要是为了改善目前应用型大学理工类专业的大一学生学习程序设计的教学现状,为了提高应用型人才的动手实践能力和创新能力,而研究和设计的一门程序设计拓展课程。该课程的教学目标是让学生利用代码进行探索、研究与创新,如何将基础数学和物理知识,包括几何图元、向量、矩阵运算、线性变换、几何检测以及基本运动学、力学应用、动量与碰撞、粒子系统模拟等内容,应用于游戏和交互媒体作品的设计开发中。本拓展课程在设计教学内容时,秉持以下三大方针:

    1.以项目为驱动,加强学生自主学习能力

    理论教学采用混合教学模式,将重要知识点的教学录制成微视频,发布在中国大学MOOC的SPOC在线教学平台上。通过在线学习,能充分培养学生自主学习能力。而实践教学则设计以项目为驱动。学生需要完成的项目分为自由创作型项目和限时完成型项目两种类型。

    (1)自由创作型项目

    自由创作型项目,综合性强且完成周期较长。比如在“几何图元”单元中,需要在一周内完成的自由创作型项目具体要求为:

    请在Processing平台上,利用各种几何图元,创造一副属于你的作品!

    必须用到的几何图元包括:线段(line)、圆(ellipse)、矩形(rect)、三角形(triangle)以及其他形状。

    根据上述项目要求,在一周时间内,每个学生需要充分熟悉Processing中各种几何图元的构造方法,并且从内容和交互方式开始设计到用代码实现,独立完成作品,优秀作品如图1所示。

    (2)限时完成型项目

    限时完成型项目,是与课堂上的随堂项目训练紧密结合在一起的。在设计该类型项目时,首先紧密围绕某个知识点,然后结合游戏或交互作品等案例来设计。表1所示的是以知识点“抛体运动”为例,以随堂限时项目训练为主要内容设计的课堂教学任务,通过该项目的实践训练能强化学生对这一难点知识的掌握。

    2.注重计算思维的综合训练

    不论是入门课程还是拓展课程,程序设计课程群最本质的教学目标是培养学生的计算思维能力。计算思维具有四个重要基石:[9]①问题分解,学生需要学会把复杂问题分解成更小、更简单的问题;②模式识别,学生需要学会在相似的问题和经验之间建立联系;③抽象,要求学生从问题中识别出重要本质的信息,忽略不相关的细节;④算法,则是指学生在解决问题时需要利用算法思维设计问题的解决步骤,从简单到具体。

    本课程为了训练学生的计算思维能力,依托游戏场景和交互式新媒体作品,设计了一系列实践项目。每个项目对应于相关知识点单元,但不局限于单一知识点。在课程的中后期,项目的综合性愈强,融合了多个知识点,甚至扩展到了其他交叉课程的内容。比如在“粒子系统模拟”的章节中,以流动的水面为模拟对象,学生需要对从三角函数到Perlin噪音等原理进行多方面综合探索实践。

    笔者将详细介绍在“动量和碰撞”章节中如何从经典弹球游戏入手设计实现实践项目。该项目的问题是,如何利用Processing再现经典弹球游戏中的碰撞。

    首先,学生需要对游戏中弹球发生碰撞的场景进行分解,从最经典的场景入手,比如取弹球与三角斜面发生的碰撞为切入点,其碰撞过程如图 4a所示。然后,学生需要将该碰撞问题转化为利用Processing可模拟的圆与任意平滑斜面的碰撞,如图 4b所示。

    接着,学生需要结合知识点“向量的非轴平行反射原理”充分理解该碰撞实现的本质与抽象,然后设计相关的算法并且编码实现如图 5a所示的圆与简单斜面碰撞。学有余力的学生可对简单问题进行复杂化,逐步分析并实现圆与复杂斜面的碰撞,如图 5b所示。对于实践能力强的学生,甚至可以引导他们结合Processing第三方库开发完整的弹球游戏。

    3.坚持创新能力的培养

    本课程设计的实践项目结合了Processing的特点,具有较强的开放性,鼓励学生根据自己的兴趣进行探索型的创新。本文将以“力学应用”和“粒子系统模拟”的实践项目为例进行详细介绍。

    “力学应用”项目要求学生结合抛体运动和力学进行综合创作,主题和内容不限。众多学生在实践中都突破了教学案例的约束,进行了创新创作。如图 6所示,该学生在其作品中尝试利用LeapMotion设备,用手势来控制球的發射速度和角度。

    “粒子系统模拟”项目也是开放性的设计:根据相关知识点,创作和模拟粒子系统,并且需要结合碰撞。众多学生在实践中在前序项目的已有基础上进行了连续地创新创作。如图 7a所示,该学生在前序项目“动量与碰撞”中主要将音乐的播放与碰撞、几何检测进行了综合创作。而在“粒子系统模拟”的实践中,如图 7b所示,该生以前序项目为基础,结合了Processing中更多与音频相关的第三方库,将音乐的多种元素用粒子系统来进行可视化表达。

    终上所述,本课程具有如下独特之处:①拓展性。应用型大学的理工类大一学生在学习了程序设计课程之后,大部分学生还是不知道代码能做些什么。本课程通过游戏和交互媒体作品的创作,能让学生直观地了解代码如何真实地应用于作品中。②综合性。本课程融合了程序设计、线性代数、基础物理乃至人机交互。线性代数的基础知识(向量和矩阵运算、线性变换等)和基础物理知识(线性运动、力学应用、动量与碰撞、粒子系统模拟等),如何转换为代码,并且应用于富有视觉表达力的作品开发中,这个实践过程让学生充分锻炼了程序设计和开发能力,进一步加深了对基础数学和物理知识的理解和掌握。更重要的是,在学习、探索与实践过程中,学生的计算思维能力得到了启蒙和锻炼。③创新性。本课程创新地将程序设计的教与学进行了拓展,并且结合了视觉表现力强且学生喜闻乐见的游戏与交互媒体,有效激发了学生的学习兴趣,提高了学生的学习能动性。教学内容也创新性地融合了基础数学、物理知识与程序设计的实践,以项目为驱动,教学实践内容和形式新颖。

    四、教学效果分析

    我们在2017年秋季课程结束时进行了问卷调查,该调查主要面向数字媒体技术专业大一学生,获得有效问卷120份。在该调查中,参与的学生中男生66人、女生54人,分别占比55%和45%。接受调查的学生中,在中学阶段曾经学过编程课程的人数为38人,未曾学过编程的为82人,分别占比32%和68%。在120名学生中,有112人支持使用本课程作为编程课程的拓展,高达93%。有94名学生认为学习了本课程之后对编程增加了兴趣,高达78%。超过一半的学生(59%,71名)甚至认为应该将Processing作为第一门编程语言。2018年秋季课程结束时我们也进行了类似的问卷调查,结果与2017年问卷调查较为相似。

    从调查结果来看,学生对于本课程的开设与实际教学效果满意程度较高。基于本课程的学习成果,学有余力的学生还进行了深入挖掘和拓展,成功申请了省级新苗人才项目、创新创业项目等。与此同时,后续衔接课程的任课教师对本课程的认可度也非常满意。

    未来,我们还将持续更新和建设本课程的内容,力争将其建设成为精品课程、特色课程。并且在大一学生中继续推广本课程,并且希望能将本课程推广到各个理工科专业的编程学习中。与此同时,我们将构建学生作品的展示和交流网站,并且逐步将该网站的功能从单一的社交型扩展提供在线编程的功能,最后向公众开放该网站,进一步推广本课程和Processing。

    参考文献:

    [1]徐晓飞,丁效华.面向可持续竞争力的新工科人才培养模式改革探索[J].中国大学教学,2017(6):6-10.

    [2]蔡敬民,魏朱宝.应用型人才培养的思考与实践——以合肥学院为例[J].中国大学教学,2008(6):14-15+21.

    [3]刘焕阳,韩延伦.地方本科高校应用型人才培养定位及其体系建设[J].教育研究,2012,33(12):67-70+83.

    [4]田琳琳,刘斌,于红,等.面向应用型创新人才培养的程序设计语言实验教学[J].计算机教育,2016(3):12-15.

    [5]陈志泊,张海燕,王春玲,等.以程序设计与软件开发能力为主的计算机专业应用型人才培养模式的研究与实践[J].计算机教育,2015(7):94-98.

    [6]李永.面向应用型人才培养的C++教学思考[J].软件导刊,2014,13(8):189-190.

    [7]谭亮,张璇.论代码在数字媒体艺术中的运用——以Processing为例[J].艺术与设计(理论),2011,2(4):158-160.

    [8]Greenberg,I., Kumar,D.& Xu,D.Creative coding and visual portfolios for CS1[A].In Proceedings of the 43rd ACM technical symposium on Computer Science Education[C].ACM,2012:247-252.

    [9]王移芝,金一,周围.基于“计算思维”能力培养的教学改革探索与实践[J].中国大学教学,2014(3):49-53.

    (编辑:鲁利瑞)