acm-header
登录

ACM通信

BLOG@CACM

关于使用AppInventor教授一年级编程课程的思考


朱迪·罗伯逊

每隔一段时间,我就会冒险,彻底改变我所教授的课程。今年,经过一些来自学生的唠叨,他们真的真的为了学习更多关于移动应用程序开发的知识,我决定在第一年的编程课上介绍Android开发。

在第一学期,我们一年级的学生学习了逻辑学、Java入门、学习技能课程和我的课程——交互式系统。我设计的交互系统是一个有趣的编程入门,学生们提出创造性的设计想法,尝试执行这些想法,把自己捆绑在一起调整他们的计划,并通常掌握自主学习。之前,学生们做了一个交互式3D宠物在第二人生尽管我很喜欢看他们的宠物,但我还是无法摆脱“第二人生”正在变老和衰老的感觉。我想要一些其他的环境,让学生们可以建立一些直观的,直接的,有激励作用的,让他们感到自豪的东西。开发Android应用程序似乎符合要求,但前提是我能找到一种方法在正确的水平上推销它。

就像在许多大学一样,我们的一年级新生在来到我们身边的时候,会有一系列的编程经验:以前从未编程过的人,Visual Basic黑客,越来越熟练的Scratch,以及不可避免的少数第一个单词的语法是正确的c。让新手在学习Java基础的同时学习Android开发,这似乎对他们不公平,但我希望他们在编程方面有一些早期的成功。AppInventor看起来是个不错的方法,所以我的搭档老师蒙德Grov我决定收养它。这是一个类似scratch的可视化编程环境,目标是Android。更妙的是,它有大量现成的、教学效果良好的教材,例如盒子里的课程.我喜欢翻转课堂模式,学生阅读课本章节,尝试实验练习,然后来上课巩固基本概念。

教材中的实例结构良好,易于理解。学生们喜欢这些练习,但并没有受到特别的挑战(事实上,我曾见过一个10岁的孩子也能轻松完成同样的练习)。有时学生们告诉我,他们只是机械地做练习,并没有真正吸收材料。

真正的挑战来自于我们要求学生们提出自己的应用想法,并在未来10周内实现它。学生很难估计一项任务的难度。AppInventor接口的表示和特性使某些任务(在普通开发环境中对初学者来说很难)变得微不足道。例如,使用数据库和使用二维码都是既简单又快速的。其他任务在AppInventor中几乎是不可能完成的,或者完成起来很乏味。因此,很难指导学生在他们的设计中应该有多大的野心。

明年,判断这一点将容易得多,因为我们从今年的学员中有例子向他们展示。

AppInventor代码的屏幕截图

来自学生游戏的示例代码

课程进行到三分之二的时候,我们介绍了使用Eclipse进行更传统的Android开发,并帮助学生在AppInventor中的块表示和他们在其他课程中学习的Java代码之间进行映射。经验丰富的程序员欣然接受Eclipse,而新手则感到绝望。

在学期结束时,在学生提名最佳应用程序的参赛者之后,我们面临着94个作品集的标记,包括学习日志条目。这些日志非常有趣,为我们了解学生使用AppInventor的经验提供了有用的见解。

许多学生对AppInventor环境中的bug感到非常沮丧。“它(AppInventor)仍处于测试版本,很多bug和错误不断出现,导致我的应用失败或随机删除部分代码。”或者“App Inventor是一个beta阶段的产品,缺少一些重要的东西,在使用它完成我的应用时,它破坏了我的屏幕,导致我不得不重做我花了一段时间创建的工作。”我们将在下个学年使用AppInventor的新版本,所以我希望这些问题能够得到解决。

刚接触编程的学生当然很欣赏AppInventor,他们评论道:“由于AppInventor是在模块中工作的,我发现我现在比直接使用Eclipse更好地理解了编程过程的结构。”

“我记得在课程开始的时候,我曾说过App Inventor对我这个初学者很有帮助,因为它打破了传统编程的结构,让我从一开始就了解全局。现在,当我结束这门课程时,我知道这正是它允许我去做的事情。”

“我真的很喜欢制作自己的应用,从设计阶段到整理最后一段代码。这是一个很好的学习过程,我可以自信地说,我为从中得到的东西感到骄傲。”

然而,更有经验的学生对此感到恼怒。这群人的一些比较礼貌的评论包括:

“在这门课程开始的时候,我非常兴奋地创建了自己的应用程序,因为我在学校喜欢编程,所以等不及要开始。在早期阶段,我发现app inventor非常容易使用和有用;然而,当我开始创建更复杂的应用程序时,我发现应用程序的发明者是非常受限制的……我个人发现Eclipse更好地开发Android应用程序,因为软件有更多的灵活性和自由,尽管这是有挑战性的,但完成每一个任务的奖励更大。”

令人欣慰的是,这个学生的内在动机是在一个更具挑战性的环境中解决问题。

另一名学生在不同环境之间的转换中是这样思考的:“虽然Eclipse一开始似乎很难掌握,但在App Inventor中工作一段时间后,它开始成为一种阻碍而不是帮助工具,用户开始发现程序的局限性。”

他的一个同学有另一种观点:“虽然我认为app inventor太简单了,阻碍了它的发展,但我现在甚至可以说,app inventor的易用性使它成为未来程序员的绝佳切入点。而eclipse IDE有太多可能出错的地方,从而破坏程序的稳定性。”

我会推荐使用AppInventor来教一年级的计算机科学学生编程吗?答案是肯定的“是”。如果你有一个混合能力的课程,我建议在让学生进入一个功能更全面的开发环境之前,花6周的时间在上面。如果你打算这样做,学生们将需要大量的支持来管理过渡(卸下他们的训练轮!)

如果你教的是完全的新手、非计算机科学专业的学生或更年轻的学生,或者是一门强调产品理念而不是实现的课程,App Inventor将是理想的选择,因为它是根据这些场景开发的。最后一点:根据我的经验,计算机科学家喜欢抱怨他们被要求使用的技术。为了显示自己的编程能力而指责开发工具是极客-男子文化的一部分。所以,不要把学生的抱怨太放在心上,因为对老师来说,可能没有什么“恰到好处”的适居区。


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map