高慧君 戴伶娟
程序设计教学是台湾地区高中信息课程的重点之一,其教学目标在于培养学生的逻辑思考与解决问题的能力。我在台北市立南港高中任教信息课程十多年,如何教授程序设计课程一直是自己经常思考的问题。传统的程序设计课程大多是以逻辑概念配合程序语法的说明,然而,程序语法导向教学的解说太多,学生就会觉得枯燥,因为有些语法很难懂,即使懂了也不知道要用在何处;再者,课本上的例子大多以数学计算为主,学生对这些范例大多不太感兴趣。随着时代的演进,程序设计从早期的科学计算,转变为问题解决的逻辑设计与物理动力机械控制。近年来,为程序初学者量身定制的程序语言教学工具,也引入了多媒体运用与互动性控制等功能,其中,Scratch的推出让学生能够有效地克服语法障碍,进行程序设计思维的训练,特别适合8~16岁的儿童及青少年使用。
基于以下理由,我们将Scratch导入高一信息课程:①易于学习程序设计,引发学生兴趣。它提供图形化的接口,用户无需使用键盘来逐个输入指令,只用鼠标拖曳程序区块到脚本区,以组合积木的方式来撰写程序代码即可。使用者可以使用Scratch来创造故事、动画、游戏或音乐等。②易于创作互动游戏,延伸创意思维。玩游戏是孩子天生的本能,且面对现代的学生而言,计算机游戏是生活中不可或缺的一部分,若能将计算机游戏创作和程序设计课程的学习结合,让学生能在学习的同时发挥创意游戏设计,必定能增加学习时的乐趣及热忱,相信一定能有不同于传统教学的效果。通过简易的鼠标的拖拉,将指令从程序指令区移进程序脚本区即可进行程序代码的撰写。而利用逻辑判断、变量值与侦测改变等来互相配合,即可创作出具有互动性的游戏。③易于取得自由软件,创造无国界的学习。Scratch可在网络上免费下载。学生不仅在课堂上可以使用,也可以免费安装在家里的计算机,以供课后练习使用。Scratch官网亦提供来自全世界爱好者的创意,让学生身处在一个无国界的学习环境。
我们从游戏案例研究开始带领学生进入程序设计学习领域,先讲解程序逻辑观念,然后提供互动游戏让学生试玩,接着提供游戏解题操作步骤,让学生能够实做出简单的游戏案例。在实做过程中,除了教师讲解说明之外,亦透过配对程序设计的模式,让学生可以互相讨论,合作学习。在经历游戏案例研究后,我们设计了游戏创作挑战题目,教师可以藉由挑战题目,澄清程序逻辑观念,学生可藉由试玩互动游戏成品,与配对程序设计的讨论,思考游戏解题的逻辑,完成创作挑战。
学生对于使用Scratch进行计算机游戏设计觉得很有趣并具有成就感,他们对学习如何创造自己的游戏保持着高度动机,对于程序设计的基本概念(流程控制、变量)也觉得很实用,认为程序设计是一件很好玩的事情,也乐于创作游戏给家人或朋友分享。藉由计算机游戏设计,学生有很明确要达成的目标,也很明确知道游戏可以改进的功能。在完成作品的过程中,学生必须运用程序逻辑思考的能力,来组合出可以玩的游戏,而Scratch使用拖曳程序积木的方式来撰写程序代码,有效地克服了语法的障碍,让学生可以将专注力集中在程序的逻辑与解题的思维上。玩计算机游戏很简单,但是设计计算机游戏并不是一件简单的事。计算机游戏是一种复杂的设计,学生必须思考如何使用现有的积木来组合出游戏的各项功能,考虑游戏如何与玩家产生互动,这些都必须用到程序逻辑的思维。
除了用Scratch来设计互动游戏之外,我们也引入了Arduino硬件及S4A(Scratch for Arduino)软件来让学生了解程序设计软硬件的整合。学生可以将程序执行的结果输出到LED、蜂鸣器与马达等外接装置,也可以使用按钮、光敏电阻、滑杆与游戏杆等设备来输入。在台湾我们参与了由佛光大学许惠美教授与苗栗县蟠桃小学范运平老师共同发起的S4A社群,其成员是由一群热爱自由软件的中小学教师所组成,藉由定期的聚会,互相交流Scratch的教学经验与创意,开发更多元的教材。社群成员共同的目标是希望透过彼此分享机器人教材的运用,一同研究未来将硬件机器人导入教材的具体做法,藉由社群讨论的力量助力教学发展。
Scratch的推出让更多年龄更小的学生能够进入程序设计的殿堂,在台湾有许多中小学信息技术老师也陆陆续续地将Scratch引入他们的课堂中,各地区也兴起办理Scratch竞赛的风气。就我们所在的台北市为例,在台北市自由软件桌面应用推动与发展小组的推动之下,台北市自2011年开始举办全市小学和初中Scratch竞赛,由南港高中与玉成小学共同承办互动游戏创作竞赛及动画短片创作竞赛。在动画短片创作方面,主要评测学生的脚本策划、美工、声音处理能力,采用投稿式的做法,学生必须针对该年度指定的主题进行创作,作品长度为60~120秒。2012年小学组的题目是“日行一善”,中学组的题目是“世大运在台北”。评分标准为创意20%、视觉效果15%、听觉效果15%、主题表达50%,初赛由承办单位聘请专家学者组成评审团进行评选,评选各组参赛作品15件进入决赛,获决赛资格的学生须参与创作历程发表决赛,针对其创作的作品进行5分钟的阐述,发表内容包括如何构思、选用数据源及创作历程说明,并接受3分钟的评审问答。
在互动游戏创作方面,主要评测学生的程序设计能力,采用现场上机的方式,学生必须在三个小时内完成指定题目4题与自由创作1题。指定题的部分会提供游戏的执行档让学生试玩以了解游戏的规则与运作,也会提供游戏所需的图片给学生使用,还会提供游戏制作的文字指引,作为评分的准则。自由创作题的部分,目的在于考察学生的规划组织能力,能否将设计的游戏运用简短文字提供游戏说明,并期待学生能发挥想象力创造无限可能。
Scratch的推出,降低了程序设计的学习门槛,使学生易于进入程序逻辑的训练,但对于有兴趣学习程序设计的学生而言,这样的学习内涵是不够完整的。因此,我们开始思考下一步应该再给学生什么。在以互动游戏设计为主题的教学中,我们发现Greenfoot是一个很棒的进阶学习软件,它有效地导入面向对象程序设计概念,提供学生学习Java语言的入门。现在,我们也有一群对Greenfoot教学有兴趣的教师,一同组成社群,定期讨论教材与教学研究。
自由软件的精神将形成为一种自然而然的文化。而这样一个无国界学习的环境,亦是我们最佳的教学与学习素材。