白 禹,李国勇,王 慧,骆建林
(贵阳学院 大学科技园管理中心,贵州 贵阳 550005)
2017年2月,教育部印发了《义务教育小学科学课程标准》,明确提出小学科学课程起始年级调整为一年级且原则上要按照小学一、二年级每周不少于1课时安排课程。2017年7月,国务院印发《新一代人工智能发展规划》,要求在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。信息时代给科学教育专业提出了新任务,也给算法与程序设计课程提出了新要求。
科教专业不同于信息类的专业,科教专业培养学生的目的不是成为一名信息技术从业者,而是能承担中小学编程教学的教师。因此,就需要确定三个教学任务:(1)熟悉一门易懂易学的编程语言;(2)通过编程训练了解和掌握计算思维,计算思维包括从现实中抽象概括的思维、将复杂问题分解的思维以及算法建模的逻辑思维;(3)学会如何将编程能力和计算思维整合以后向中小学生传输。
算法与程序设计以C语言教学为主,优点在于:(1)C语言是一门在教学、科研与生产中使用非常频繁的语言,市面上具有大量优秀的教材与教辅资料,而且网上也有非常多优秀的C语言开发课程,能方便学生进行资料查找与拓展学习;(2)对于科教专业的学生来说,C语言的学习有利于亲近硬件,理解硬件。为进行后续的Arduino课程的学习,可以很快地理解和上手;(3)可以为学生自学别的编程语言,诸如Python、R语言、Java等,打下坚实的基础。
但是,通过长期调查发现,学生对于这门课的满意度与获得度都不高,因此,这门课的通过难度大。其中一个最主要原因就是C语言教学。尝试了很多种教学方法的引入进行教学改革,效果仍然不理想。对原因深层剖析如下:
其一,专业中贫困生多,农村学生多,在高中阶段,基本没有接触过编程语言,民族地区信息技术发展仍然滞后,少数民族中小学生信息技术素养偏低。[1]很多同学坦言这是第一次接触编程语言。C语言、C++以及Pascal是全国青少年信息学奥林匹克竞赛(NOIP)指定用语。CCF NOI2019正式选手获奖中,贵州尚无获得金牌和银牌,只有三块铜牌。多年来,难有金牌和银牌。因此在初高中编程语言的掌握程度不高。
其二,二本学校的学生普遍英语和数学基础差。由于英文基础差,即使编程语言中只有少量的英文单词,也会让学生产生畏惧情绪。特别是计算机教材的例子中的变量名、函数名等,很多都是选取英文单词进行简写。进一步加剧了这一种情况。学生变成了强行记忆字母组合,而不是根据变量需要存储的值的意义的英文单词的简写,这样去记忆。无疑加大了工作量,而且在程序书写时,常常由于记忆错误而造成程序出错。计算机算法需要数学功底和逻辑思维能力。由于学生数学基础差,因此学生比较抵触枯燥的算法逻辑的学习,学习效率不高。
其三,二本学校的学生专注力与自制力较差。高校的专业课程门类多,而且难有如同高中大量的习题课与复习安排。高校的学习模式决定了学生需要自己花大量的精力在课前课后学习。二本学校的学生专注力与自制力在丰富多彩的高校生活面前更加脆弱。因此,基本上靠课堂老师讲解与练习。一门课程得不到大量的练习,就会造成越学越困难,甚至有不少学生从开始学习时的兴趣满满到在中途放弃学习。
其四,C语言的编写程序比较自由、语法格式不固定、语法细节多。[2]需要在一开始就要培养严格的代码书写规范。而且C语言难以做到编写边运行。需要将整个程序基本写完,才能运行。每次运行是从第一行代码开始。这造成了学生难以很好地掌握编程。大量的精力用于去关注语法细节,加大了学习C语言的难度。
Blockly是一个开源的开发者库,用于添加基于代码块的应用程序,由Google开发并维护的,于2012年6月进行了发布。[3,4]Blockly增加了一个可视化代码编辑器的网页和移动应用程序。Blockly编辑器使用互锁的图形块来表示诸如变量、逻辑表达式、循环等代码概念。它允许用户应用编程原则,而不必过多地关注语法或命令行上闪烁光标。这样可以将大量的时间投入到计算思维的培养上面。Blockly将代码块变成了类似于积木的图形块构成,这使得用户从枯燥的码代码变成了可以通过类似玩拼图方式。将一个个代码块按照一定的顺序拼接起来,实现简单功能,然后再将每一个简单功能进行组合起来,最终构成实现一个完整功能的程序。Blockly可以在多个操作系统平台进行编程与运行,包括Windows、Linux、iOS以及Android。
与其他图形块编程语言最大的不同在于,Blockly可以将代码自动转化为JavaScript、Python、PHP、Lua、Dart以及XML这六种程序语言。这使得学生在掌握Blockly的基础上,平稳地过渡到其他更为常用的编程语言。这种特性,正好是Blockly能成为一门优秀的教学语言所具备的特性,能起到承上启下的作用,而不至于让别的语言的学习有突兀感,需要重新学习很多知识。可以在学习Blockly的同时,进行适当的扩展教学,为学习其他语言打下基础。Blockly的代码编辑器提供中文界面,这使得英语基础差的同学不产生一开始的畏惧心理。
算法与程序设计使用Blockly语言进行程序设计与算法展示,通过以设计为中心的小游戏,实现基础概念和高级应用融合,将理论和实践有机地结合在一起。学生通过设计游戏,掌握知识点,巩固教学内容。教师透过游戏的设计,反思学习效果。最终的目的是使学生在掌握Blockly的同时,得到编程素养、逻辑思维能力以及实践技能的锻炼,为独立的解决实际问题打下基础。具体的教学目标有以下几个方面:
了解Blockly的概念和应用范围;掌握Blockly的编程方式;掌握Blockly的八大代码块类型:逻辑、循环、数学、文本、列表、颜色、变量以及函数;了解算法的概念和表示方法,特别是搜索算法与排序算法;掌握字符串的处理;掌握链表的概念与运用,包括动态链表和数字链表;掌握项目的设计开发流程;了解中小学生编程学习的特点。
算法与程序设计以“培养计算思维”“提高创新能力”“提升中小学信息教育”为宗旨。作为科教专业的专业基础核心课程,培养学生具备从现实中抽象归纳问题的能力,简单趣味游戏程序开发能力以及中小学信息技术教育能力,为贵州中小学基础教育输送更多优质的能胜任信息技术教育的人才。
教学过程中,按照“基本语言块和基础概念的讲解-应用举例-设计题目-程序设计-编写与实现-总结”这样的流程进行。通过基本语言块和基础概念的讲解,将基本应该掌握的知识点讲解透彻。通过应用举例,进一步讲解和演示知识点的具体用法。利用精心设计的题目,让学生自行设计程序,巩固所学的知识。经过模型的建立、代码的编写以及功能的实现,能让学生熟悉程序设计的基本开发模式与算法流程。最后,通过总结归纳,整理收获。
整个Blockly课堂教学的时间分配,首先前10分钟的时间,进行知识讲解,接下来的15分钟,进行应用举例,向学生演示编程的技巧与用法。然后用45分钟的时间,让学生完成一个简单的程序设计,在学生编程的同时,巡查发现学生的编程问题。在学生课堂练习结束后,利用10分钟的时间,对学生的成果进行展示,并进行点评,提出不足,如何进行改进完善的思路,最后10分钟进行课堂教学总结,并且重点讲解学生遇到的共性问题,以及如何处理这些问题的方法。
算法与程序设计是一门基础知识与实践能力培养为主的课程,侧重考查学生在实践中运用知识的能力。因此,这门课采取考察的形式。最后的综合成绩=期末成绩(50%)+平时课堂成绩(50%)。期末考查以实现一个相对复杂的游戏为要求。从程序设计逻辑,代码的优化等几个方面来评分。而平时课堂成绩,主要是学生每一次的课题实践作品的评分。
综上所述,Blockly比C语言能更好地完成算法与程序设计的教学要求。而且,Blockly将会在非计算机的教育类专业应用的越来越多。通过教改探索,为科教专业以及相关专业在计算机教学方面提供一条新的思路。