陶凯
(淄博职业学院,山东淄博 255314)
社会在进步,这两年最火的词汇无疑是“人工智能”,特别是AlphaGo大败柯洁、李世石引起了人们对人工智能的重视。而人工智能的基础——计算机编程也正式纳入了高考,2017年浙江省正式将编程纳入高考,不止浙江,教育大省北京和山东也确定要把编程基础纳入信息技术课程和高考的内容体系。上海今年发布了《人工智能基础》(高中版)并已在部分中学开始基于教材内容进行授课。未来是人工智能的时代,我们的衣食住行将与人工智能息息相关,计算机语言将超越英语成为普通话以外最重要的“第二语言”。越来越多的大学开始增设人工智能相关专业,计算机专业毕业生的薪资待遇,尤其是程序员的收入节节高升。
这一系列的现象的背后是一个关键的社会问题:即编程技术的需求量激增并在各个方面发挥着越来越重要的作用,但是大多数人还“没有能力认识到,更不用说去思考或解决技术带来的挑战或可以解决的问题”。国务院于2017年发文指出,实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广,编程教育已经提升到了国家战略的角度。
然而现实是,现在的非计算机类专业的大学生们很少从事计算机编程。大多数学生认为编程是枯燥的、难以学习和掌握的。这很不幸,因为与编程相关的技能可以在非常多的专业方面发挥核心作用。“编程中固有的算法思维,对于理解信息技术系统如何以及为何如此工作至关重要。”此外,在编程中不断使用抽象思维可以指导和规范一个人对问题的处理方式。从本质上讲,编程是一个非常有价值的生活技能,也是学习其他科目的基础的一个要素。也正因为如此,我们希望能够在非信息类专业中引入Code Combat项目,改变大学生们对编程的认识,提升他们学习编程的兴趣。
CodeCombat是一款有趣的开源编程游戏,它使用代码来操控游戏人物,让你一边沉浸在游戏乐趣中一边学习编程技术(JavaScript、Python等)。从最初小白入门级的单人关卡到后来高难度的多人对战,各个层次的程序都可以乐在其中并从各种战斗中不断吸取编程知识,如图1所示。
CodeCombat的创始人Nick Winter在开始学习编程时,也曾使用了知名的CodeCademy,但他还是觉得太乏味了然后放弃,他了解到自己的朋友们也遇到了这样的情况。后来他想明白了背后真正的原因:人们想要有趣且高效的学习,但得到的却是缓慢且乐趣不足的课程。因此,Nick Winter和小伙伴们一起创造了CodeCombat,希望能让想学习编程的人可以真正享受这一过程,而不是将编程当作枯燥的敲代码。
图1 CodeCombat关卡知识深度不断增加
图2 CodeCombat卡通形式的画风
CodeCombat整体的画风是可爱卡通风格,音效精致,如图2所示。整个游戏关卡有九百多关。Code Combat支持中文,不管是从玩游戏还是学习的角度来讲,都是一个非常棒的选择。
(1)从学生角度来看,CodeCombat的设计从第一个关卡就使用了真实可行的代码,让学生尽快动手写代码来学习程序语法和合适的结构是至关重要的。
(2)从课程内容来看,CodeCombat提供了编程入门的所有必要知识。CodeCombat目前共有6个场景,场景中涉及的知识点由易到难,从基本的语法、参数、变量,到IF语句、函数、四则运算、输入处理,再到循环、数组、远程方法调用、绘画、模块等,涉及到编程知识点的方方面面。同时,CodeCombat支持Python、JavaScript、HTML5、Css3等多种程序语言的学习,学习内容丰富。
(3)使用CodeCombat学习编程不需要购买任何昂贵的设备以及教材,CodeCombat本身只是一个运行在网络上的程序,因此,学生们只要能够连接网络,打开浏览器就可以访问CodeCombat项目开始学习。这对于在校学生的学习提供了极大的便利性。
非信息类专业一般并不会直接开设编程课程,因此我们可以把CodeCombat作为非信息类专业的一门选修课在高校中开展。
(1)学习条件及学生要求。软件环境:Linux服务器,搭建平台环境有Node.js 6,npm 3.10.10,Github等。
学生基本素质要求:富有创意、对编程有兴趣、能持之以恒的参与训练学习。
(2)学习目标。通过CodeCombat课程学习,培养学生对信息多元文化的宽容和尊重。培养学生多角度思考问题解决问题的能力和创新精神;培养学生持之以恒不畏困难的良好品格。让学生发现计算机运行的原理和规律,激发学生进一步学习的热情。促进学生的个性特长发展,丰富学校选修课程。
(3)组织形式。CodeCombat后台提供班级建立以及学习进度管理,学生通过教师提供的二维码注册,可以方便与教师沟通。教师也可以在后台很容易的追踪自己班级的学习进度。
(4)课时安排。学生可以在学校机房、图书馆或者宿舍等任何可以使用电脑上网的地方进行学习,学生的所有学习进度都可以被老师追踪,因此CodeCombat可以作为没有固定时间地点的课程进行开展。
(5)考核。通过考试并不是我们学习的主要目的,但是教师们仍然可以有多种形式的考核方式对选择使用CodeCombat来学习的同学进行考核。比如教师们可以在管理界面根据学生们的通关数量对学生进行阶段性的考核。CodeCombat还提供了一个竞技场,学生们学有所成以后可在竞技场相互切磋,既可以展现自己的学习成果,又可以激励学生们不断学习进步,老师们也可以利用竞技场的分数作为考核的参考依据。
CodeCombat本身也是一个游戏,游戏是鼓励交流、发现、试错的媒介。好的游戏能够让玩家学习到技能,正如学生在学习过程中所做的那样。基于网络的CodeCombat也正如此,它可以提供在线交流的平台,让所有使用者互相交流学习经验促进大家共同进步。和其他游戏一样,CodeCombat为通关和代码简洁效率高的人提供各种奖励奖励,这种奖励能为学习提供动力并富有激励性,而不单调乏味。
CodeCombat是一个开源的社区项目,上百名程序员创建了各种关卡,给CodeCombat的源代码添砖加瓦,添加新功能、修复Bug、测试。CodeCombat在一直不断的改进,支持更多的语言,增加更多的知识点,让学生们学到更多更新的内容。
这基于游戏的学习方式,把它与传统教学方式比较,区别毋庸置疑:类似游戏的CodeCombat能帮助学生记住知识,使学生们更加能够集中精力,以及取得更高成就。CodeCombat同时提供实时反馈,使得学生调整他们的代码语句解决方法,并且从整体理解概念,而不局限于“正确”或者“错误”的答案。把CodeCombat充分开发和利用到教学中来,也迎合了国家推进混合式教学模式改革,同时可以推动学生的自主学习,提高学生的参与度和学习兴趣。