美国高校计算机科学原理课程介绍及启示

2018-01-31 07:49郭迎春
计算机教育 2018年1期
关键词:编程作业思维

师 硕,郭迎春,于 洋

(河北工业大学 计算机科学与软件学院,天津 300401)

0 引 言

计算思维(computational thinking)是目前国际计算机界广为关注的一个重要概念,最早由美国卡内基·梅隆大学计算机科学系周以真(Jeannette M. Wing)教授定义为“运用计算机科学的基本概念去求解问题、设计系统和理解人类的行为,涵盖计算机科学之广度的一系列思维活动”[1]。2008年,美国计算机协会(ACM)接受了周以真的计算思维理念,明确要求计算机导论类课程应该重点讲授计算思维的本质。目前美国高校甚至中小学,普遍开设了培养计算思维的计算机课程。在国内,2013年国家教育部高等学校大学计算机课程教学指导委员会发布了《计算思维教学改革宣言》[2],明确了计算思维能力培养在计算机基础课程教学中的中心地位,同时把计算机思维能力培养上升到创新人才培养和国家发展的高度。目前,已有众多院校对如何增强计算思维培养进行了相关的探索和实践,也取得了一定的进展[3-4]。然而计算机科学发展迅速,如何在新技术不断涌出的情况下更好地开展基于计算思维的教学实践,需要我们持续探讨。

1 计算机科学原理课程介绍

1.1 课程简介

内布拉斯加大学奥马哈分校CSCI 1200课程名称是计算机科学原理(Computer Science Principles),课程目标和授课内容与我国大学中的大学计算思维课程相近。CSCI 1200课程是大学指定的自然科学通识教育课程,主要面向大一新生,任何专业的学生都可以选修这门课程,以满足毕业时普通教育课程的要求。课程设计遵循美国大学委员会新的AP(advance placement)计算机科学原理课程,允许通过AP课程考试的高中学生获得大学学分。学生通过此门课程的学习,能掌握计算机科学的基本原理,学习解决问题的“计算”方式,提高计算思维的能力,并了解社会对持续计算创新的需要。

1.2 教学内容

CSCI 1200课程没有指定教材,提供了App Inventor 2: Create Your Own Android Apps和Blown to Bits: Your Life, Liberty, and Happiness after the Digital Explosion两本电子书为主要可选的参考教材。教学内容分为7部分。

(1)课程简介。包括计算机组成及应用、发展趋势、计算平台的改变、职业愿景、计算思维的概念等内容。

(2)信息表示。涉及数据及其存储、数制、不同数制之间的转换。

(3)编程基础。包括决策、布尔、逻辑及关系表达式、if/else块、随机化、列表、文本变量、循环控制、迭代等基础知识。

(4)图像处理基础。包括图像存储原理、颜色模式和像素表示。

(5)大数据和云计算。包括数据库、大数据和云计算的原理及应用。

(6)建模与仿真。包括建模和仿真的原理、实现及应用。

(7)APP Inventer 项目开发。包括:①PaintPot项目。实现画图功能,介绍在App Inventer平台开发APP项目的具体过程,包含媒体(声音和图片)控件的使用,使用画布控件绘图,控件触摸和拖动事件的处理,APP测试及封装发布。②Presidents’ Quiz APP项目。是一个以幻灯片形式显示不同总统图像及提示内容再要求填写总统姓名的测试游戏,旨在掌握如何定义列表、访问列表的元素和比较文本变量。③MoleMash 游戏项目。实现一个鼹鼠在运动场上随机位置弹出,玩家在其跳跃之前击中得分的游戏,旨在学习定时器的使用,实现简单动画功能。④Pong游戏项目。它是由用户控制球拍的弹球游戏,球在球拍和上、左、右3面墙壁之间弹跳,当球接触到球拍下面的墙壁时游戏结束,旨在掌握运动轨迹计算、多屏幕之间发送/接受参数、ListPicker控件等高级动画游戏的设计。⑤雅虎股市APP项目。使用Yahoo! Finance API获取股票的最新价格,目的是掌握应用程序编程接口(application programming interface,API)的使用。

1.3 教学实施

CSCI 1200是一门3学分课程,以每周一次综合讲座或实验的形式进行,每次150分钟,共授课16周。30名学生为一班,每班配置一名助教(teaching assistant, TA)负责习题课答疑、批改作业、指导项目设计及录入成绩。整个授课过程,每人配备一台电脑,全班共享若干台Android测试设备。

讲座课上,教师采用基于查询的教学方法,通过实际问题引入计算概念。授课过程,教师重视和学生互动,经常向学生提出问题或请学生直接在老师电脑上操作演示,学生也可以随时向老师提出问题。实验课上,教师会从实际应用出发,讲解多个开发项目。重视学生之间的团队合作,除了自己练习之外,在实验课上设有团队设计环节, 2~4人为一组,在限定时间内共同开发完成某一指定内容,并要求各成员之间交换团队角色。除有助教负责答疑外,授课教师每周提供一次2个小时的答疑,学生可以到教师办公室当面请教交流。整个教学过程,设置7次课堂测试,测试侧重基础知识的考察,多为概念解释、小型程序设计等。

内布拉斯加大学奥马哈分校使用Blackboard教学辅助系统,CSCI 1200课程的任课教师通过该系统发布授课计划、通知、课程提纲、讲义、例程、习题、作业和项目等相关的教学资料;学生可以通过该系统提交作业、项目设计以及查看成绩。

CSCI 1200课程总成绩是由作业40%、出勤和课上练习10%、课堂测试20%和项目设计30% 4部分组成。作业主要是编程练习。出勤和课上练习部分,缺勤1次扣掉1%的成绩,如果超过3次成绩直接为“F”,即不及格。项目设计是分组设计实现一个不限题目的Android移动APP,在学期中期任课老师将项目设计内容布置下去,最后一次课程每组学生进行至少20分钟的项目答辩,要求每名同学均参与答辩,并撰写包括小组成员、背景、需求分析、详细设计在内的项目书。成绩评定的说明及要求,老师在第一次课上直接公布给学生,并十分强调学术诚信,对作业、测试及项目设计抄袭采取零容忍政策,严格按照学校诚信准则执行。

1.4 作 业

第一周开始布置作业,整个学期共有9次,每次作业一般给学生5天左右的时间,即下次课前两天提交作业。教师为作业提供相应的程序框架和部分辅助代码,学生只需要实现部分程序。部分作业设有附加部分,完成后可得到更高的成绩。

作业1:在sites.google.com上创建自己的课程网站。要求:①按步骤创建新网站,在主页加入自己的名字、专业及简短的个人介绍。②创建不同级别的3个新页面,3个页面命名和结构为:CSCI 1200==>Assignments==> Assignment 1,即Assignments是CSCI 1200的子网页,Assignment 1又是Assignments的子网页。阅读http://www.bitsbook.com/excerpts网站提供的电子书的第一章,并撰写总结提交到Assignment 1网页。③自定义个人Google站点,对侧边导航栏进行修改、删除或添加新内容或链接操作,更改网站的Logo。④将建好的课程站点的网址提交到Blackboard系统。

作业2:扩展PaintPot项目。PaintPot项目是图形用户界面(graphical user interface,GUI)的一个实例。要求:①在项目的基础上增强GUI功能,改变项目中3个按钮的背景颜色以提示画笔颜色。②实现用户对画笔粗细的设置。③额外部分(增加20%成绩),实现画线和画圆两种画笔模式。④将项目的APK文件(PaintPot.apk)提交到自己的Google网站,并将项目在Google网站的网址及源码包(PaintPot.aia)提交到Blackboard系统。后面所有涉及编程的作业、提交内容及方式相同。

作业3:奇偶校验APP。要求:①创建新的App Inventor项目,该项目自动生成一个7位二进制字符串,并在字符串的开头添加一个正确的偶校验位。②额外部分(增加10%成绩),实现输入错误检查,单击提交按钮后检测用户输入内容是否为7位二进制字符串,如果不符合输入要求,显示“错误输入!请再试一次!”的错误提示。

作业4:答题APP。要求:①参考Presidents’Quiz App项目,设计问题、答案和图像,创建自己的答题APP,要求至少4个问题,题目类型不限。②修改用户浏览答题的方式:添加“上一个”按钮,单击时移动到上一个问题。添加“下一步”按钮,单击时若处于最后一个问题,不回到第一个问题而是保持在同一个问题,同时“下一步”按钮文本的颜色更改为灰色,表示不能向前移动;若不是最后一个问题,“下一步”按钮的文本颜色为黑色,并移动到下一题。③额外部分(增加10%成绩),用ListPicker控件实现选择答案来代替用Textbox控件输入答案。

作业5:MoleMash项目扩展。要求:①添加能量棒,初值设为200,每次超时能量棒数值减少10,能量等于0时结束游戏,并在画布上显示“能量为零”的提示消息。②增加“重置”按钮,将分数设置为0,能量棒设置为200。根据玩家得分控制鼹鼠运动速度,得分超过20分,鼹鼠移动速度变为0.5秒;得分小于10分,速度设置为1.5秒;其他情况为1秒。

作业6:编程练习列表和循环。要求:①用户输入整数,分别实现:生成0到n之间的所有整数生成0到n之间的所有偶数;生成从n到1的所有整数;生成个数为n的0~9之间的随机整数。②额外部分(增加10%成绩),分别实现文本框中数字的求和、求积计算,以及删除偶数、奇数的操作。

作业7:Pong项目扩展。要求:①下载Pong_noLab.aia源文件,在此基础上在画布指定位置上添加10个Image Sprites控件,并设置它们的图像作为游戏中的砖块。②实现球击中砖块时,砖块消失得分加10点;单击“重新启动”按钮,砖块再次可见。③额外部分(增加10%成绩),添加更多功能/操作,优化和增强应用程序。

作业8:撰写论文《论计算创新的影响》。要求:①说明创新的名称,即陈述计算创新的预期目的或功能(约150字)。②解释计算创新所带来的益处或害处(约250字)。③使用的具体细节,着重计算创新所使用的数据,包括数据的生成或转换、存储、隐私或安全问题(约250字)。④参考文献要求3~7个,并要求每条参考文献提供作者、标题、来源和发布日期的完整引用,对于在线参考需提供永久网址和访问日期,并要求至少两个参考文献是最近两年内的。

作业9:雅虎股市App项目扩展。要求:①下载Blackboard上对应的源代码,修改错误。②添加自定义股票报价屏幕,刷新按钮后,打开一个新屏幕,为APPL、GOOG、MSFT、IBM和INTC每个股票代码添加一个复选框,点击刷新按钮后,在屏幕上显示所有选定股票的符号、名称、最新价格、变更。

2 教学软件

CSCI 1200课程的练习和项目设计都使用App Inventor并在Android移动设备上完成。App Inventor是由Google的Mark Friedman和麻省理工学院的Hal Abelson教授联合领导开发的一款在线快速开发移动应用的工具,被认为是一种培养学习者计算思维能力的工具。目前已发展到APP Inventor 2,有离线和在线两种方式。App Inventor采用模块化、图形化的编程方式,正如Hal Abelson教授所说:“APP Inventor编写的应用程序或许不是很完美,但它们却是普通人都能做的,而且通常是在几分钟内就可完成”[5]。ai2.appinventor.mit.edu网站上提供了包括调试方式、设计和块编辑器概述、程序打包及发布等内容,这些内容为学习者提供了极大的支持。

2.1 调试方式

APP Inventor开发环境采用“浏览器+云服务”的模式,不需在计算机上安装配置复杂软件,通过浏览器访问AI服务器就可实现程序设计,因此开发环境简单。目前国内唯一的官方服务器是广州教育信息中心的服务器[6]。App Inventor提供3种调试方式:

(1)使用Android设备且有无线网络连接,无需在计算机上安装任何软件,只需在Android设备上安装Inventor Companion App即可,这种方式最佳。

(2)没有Android设备,需要在计算机上安装软件,以便可以使用计算机屏幕上的Android模拟器。

(3)没有无线网络连接,需要在计算机上安装软件,以便可以通过USB连接到Android设备,但USB连接选项可能会有些问题,尤其是在Windows上,因此将此种调试方式作为最后的选择。

2.2 设计和块编辑器

App Inventor由Designer和Blocks编辑器组成。首先通过设置屏幕和屏幕外组件来设计APP的用户界面,如图1所示。然后将块放在一起来对程序的行为进行编程,如图2所示。这种采用拖放构建块、图像化的编程模式,极易使初学者入门并在很短的时间内具备创建应用程序的能力。

2.3 封装和分享应用程序

构建应用程序后将其打包与朋友分享,能很好地促进编程主动性,激发学习兴趣。App Inventor提供了几种分享方式:

(1)以可安装在设备上的可执行形式(.apk)。

(2)以可以加载到App Inventor并重新混合的源代码(.aia)形式。

(3)在Google Play商店上发布。选择可安装的.apk文件进行共享,需要通过App Inventor工具栏上的“Build”菜单打包应用程序,如图3所示。以.aia文件共享应用程序,如图4所示,以方便其他人重新混合。

图1 设计App用户界面

图2 组块编程

图3 以.apk文件形式打包程序

图4 以.aia文件信息打包程序

3 课程特点分析与启示

3.1 课程特点

(1)以实例教学为主,重视能力培养。教师采用基于查询的教学方法,通过实际问题引入计算概念。带领学生进行课堂编程练习,注重计算思维和编程能力的培养。

(2)课程内容新颖,实验平台先进。教学内容不仅包括计算思维、编程基础等内容,还涉及大数据、云计算、建模和仿真等计算机学科中的新兴知识,极好地扩展了学生的科学视野。实验平台采用App Inventor,这种“所见即所得”的编程工具,不仅简化了软件安装及调试过程,还可以简易、方便地实现学生自己的创作想法,调动学生创作的兴趣。

(3)数字化教学手段充分运用。CSCI 1200课程在讲座课上使用投影仪,通过Blackboard系统和sites.google.com进行作业和项目的布置与提交等,数字化教学手段的运用提高了教学效果和效率。

(4)合理的作业和项目安排。作业多是教学项目的延伸和扩展,达到由浅入深训练学生编程能力的目的。项目设计按小组进行,涉及分析、设计、实现、测试、答辩等各个环节。作业和项目都有相应的文献检索和写作要求。这些环节的设置不仅有利于学生解决实际问题能力的培养,还提高了学生检索文献、撰写文档、团队合作及语言表达等各项素质。

(5)小班授课,师生互动良好。每班30名学生,并配备一名助教,教师每周提供2小时的答疑时间,这样的人员配置有利于提高教学质量,保证学生得到充分的指导与支持。

3.2 启 示

(1)结合学科发展前沿,注重教学内容更新。CSCI 1200课程内容包括大数据、云计算等前沿知识,实验环节采用App Inventor云平台,有利于学生学术思维的扩展并切身体会移动计算的益处。然而目前国内这些课程还多是侧重编程知识的讲解,实验平台多采用Visual Basic或Visual C++,学生并不能及时接触到计算机学科的科技前沿知识。

(2)合理安排作业及项目,注重学术诚信培养。CSCI 1200课程通过多次课堂训练、7次测试、9次作业和一个大型项目设计,强化了学生对程序设计技能的运用,采用网上提交、答辩等多种方式完成,灵活多样。而国内这门课程的训练还主要是通过作业(多数要求提交手写纸质作业)和有限次数的上机进行,方式单一,并且作业和项目雷同现象严重,通常整个班级学生的作业只有几个相似的版本,但教师查处抄袭却很困难。

(3)充足教学辅助人员,充分运用数字化教学手段。CSCI 1200课程采用小班授课并配备1名助教为学生提供充足的指导。国内这门课程多采用大班授课,通常班级容量有百人左右,由于师资原因,多数情况并不配备任何辅助人员,因此很难给予学生充分的指导和帮助。CSCI 1200课程通过Blackboard系统进作业布置及提交,较好地节省了师生处理作业的时间,极大地提高了教学效率。对比国内目前只有部分高校开发了电子教学辅助系统,但仍然存在系统功能不完善以及未得到充分运用等问题,数字化教学往往还只停留在投影仪的使用。

4 结 语

目前,将计算思维能力的培养作为大学计算机基础教学的核心任务,已经在国内外计算机教育领域达成共识。如何将计算思维落实在课程的教学中,对于计算机相关专业的本科教育非常重要。通过对美国内布拉斯加大学奥马哈分校CSCI 1200课程的课程内容设计、教学环节实施、实验平台应用等方面进行分析和总结,结合我国对应课程的实际教学情况提出一些看法,供同行们参考。

[1]Wing J M. Computational Thinking[J]. Communications of the ACM, 2006, 49( 3): 33-35.

[2]教育部高等学校大学计算机课程教学指导委员会.计算思维教学改革宣言[J]. 中国大学教学, 2013(7): 8-10.

[3]王大鹏, 王续琨, 刘德山, 等. 以计算思维为主线整合大学计算机通识课程[J]. 计算机教育, 2016(9): 95-98.

[4]张广兵. 再论基于计算思维的大学计算机基础课程改革[J]. 计算机教育, 2017(2): 84-87.

[5]Wolber D, Abelson H. App Inventor: Create Your Own Android Apps [M]. Sebastopol: O'Reilly, 2011.

[6]李霞. 基于计算思维的App Inventor递归算法教学[J]. 高教学刊, 2017(1): 77-78.

猜你喜欢
编程作业思维
思维跳跳糖
思维跳跳糖
思维跳跳糖
思维跳跳糖
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
作业
我想要自由