acm-header
登录

ACM通信

BLOG@CACM

大规模学习编程


菲利普·郭

来源:pgbovine.net

我刚刚结束了我作为助理教授的第三年,这大概是申请终身教职之前的一半。现在似乎是后退一步,反思过去三年我和我的学生(来自两个国家的学生)所做的研究的好时机加州大学圣地亚哥分校罗彻斯特大学)和其他合作者。在这篇文章中,我将总结这段时间内我们发表的所有论文,并展示它们是如何组合在一起的。

大规模学习编程

我过去三年的研究集中在一个学期上创造了2015年被称为大规模学习编程.它横跨了人机交互在线学习以及计算机教育

过去几十年的研究一直致力于改进传统的计算机编程教学方式k - 12还有大学教室,但世界上绝大多数人——低收入地区的儿童、有全职工作的成年人、快速增长的老年人口以及发展中国家的数百万人——没有机会获得高质量的课堂学习环境。因此,推动我研究的核心问题是:我们如何才能更好地了解数百万来自不同背景的人,他们现在正在网上学习编程,然后设计可扩展的软件来支持他们的学习目标?为了解决这个问题,我使用定量和定性研究方法来研究学习者,并建立了新的互动学习系统。

自从我开始担任助理教授以来,我发表的所有论文都属于三个主要的研究方向之一大规模学习编程

  1. 了解不同背景的人学习编程的原因和方式
  2. 设计新的编程环境来支持学习者
  3. 为与编程相关的教学材料设计新的格式

现在我将快速浏览一下这些出版物。点击下面的链接查看他们的摘要,并从我的网站上下载完整的pdf文档。

1.了解不同背景的人学习编程的原因和方式

改进编程教学方式的一个关键前提是了解人们目前学习的原因和方式,以及他们面临的障碍。为了实现这一目标,我一直在研究传统上被低估的学习者群体和被低估的课外学习环境。

我最近研究了60岁及以上的老年人如何学习编程[Guo2017) (CACM博客).我发现,他们经常被年龄相关的原因所激励,比如随着年龄的增长保持大脑的活力,弥补年轻时错过的学习机会,与年轻的家庭成员联系,以及改善他们的就业前景。他们报告了各种与年龄相关的挫折,如认知能力明显下降,缺乏与导师和同龄人互动的社交机会,以及难以应对不断变化的软件技术。

克里斯Parnin和他的学生,我们研究了女性程序员在寻求和提供流行的帮助时所面临的独特挑战堆栈溢出问答网站(Ford2016].我们发现五个参与障碍对女性的影响比男性更大:1)不了解网站的某些功能,2)觉得自己不够资格参与提问和回答,3)被庞大的在线社区所吓倒,4)与陌生人在网上互动感到不安,5)害怕花时间在网站上让人觉得她们在偷懒。

我的学生Jeremy Warner和我也研究了最近的现象活动,在那里,大学生们聚集在一起,通过创建软件原型来学习编码[Warner2017hack].我们发现,有时间限制的黑客松形式能让人兴奋和专注,而且学习是偶然地、机会地和来自同行的。然而,一些学生因为过度竞争的氛围、不受欢迎的文化以及担心没有足够的经验而不愿参加;女性报告这些因素的频率高于男性。

最后,Parmit Chilana我发现并研究了一个新兴的大学生群体[Chilana2015]及科技公司的专业人士[Chilana2016联合工作与Rishabh辛格),他们想要学习编程,但实际上并不需要为他们的工作编写代码。我们称这些人为会话的程序员因为他们的主要目标是学习足够的编程知识,以便能够与程序员进行富有成效的技术对话。

2.设计新的编程环境来支持学习者

当前的编程环境旨在最大限度地提高已经是专家的专业人员的生产力。相反,我一直在创建新的环境,以解决程序员新手所面临的独特挑战,希望这些环境能够简化他们最终成为专家的道路。

首先,我构建了一系列工具来帮助初学者克服学习编程的一个基本障碍:理解计算机运行每一行源代码时“幕后”发生了什么。这些工具都建立在基于web的Python Tutor编程环境之上(pythontutor.com)是我在2010年创建的[Guo2013].Python Tutor(尽管它的名字已经过时了!)允许用户用Python、Java、C、c++、JavaScript、TypeScript和Ruby等语言编写代码;它运行用户的代码,并自动可视化计算机正在一步步地做什么。到目前为止,来自180多个国家的超过350万人使用过Python Tutor为了理解和调试他们的代码,这就提供了一个庞大的全球用户基础来测试在其上构建的新工具。

我用一个叫做Codechella的实时协作模式扩展了Python Tutor [Guo2015chella,它允许多个用户连接到相同的可视化会话,并一起工作来解决编程问题和互相指导。我用Codeopticon跟进了这些想法[Guo2015opticon],一个实时活动监控仪表板,允许一个导师同时观看几十个人在Python导师网站上的工作,并同时指导多个学习者。我和我的学生Hyeonsu Kang然后把Python导师变成了Omnicode [Kang2017],这是一种实时编程环境,可以不断地可视化所有数值程序值的整个历史,让程序员可以鸟瞰程序的执行情况。最后,与克里斯Parnin和我们的学生Ian Drosos,我们创建了HappyFace [Drosos2017),一个medically-inspired疼痛量表嵌入到Python Tutor中,让用户自我报告他们的挫折程度。

我在这里要解决的第二组挑战与这样一个事实有关,即新手在安装、配置和管理复杂的软件工具时遇到了困难,而这些工具是成为程序员所必需的。我创造了一个术语叫做命令行BS-ery亲切地提及这些外在复杂性的来源瓦解新手。为了帮助消除这些复杂性,Jeremy Warner和我创建了CodePilot [Warner2017pilot,它是一种编程环境,通过将实时协作编码、测试、bug报告和版本控制管理集成到一个统一的系统中,让新手快速开始结对编程和测试驱动开发。同样,我和我的学生张雄也创建了DS.js [Zhang2017),一个书签这让新手通过直接在任何现有网页上编写代码来分析结构化数据,而不需要在自己的计算机上下载数据集和配置数据分析软件,从而开始学习数据科学。

3.为与编程相关的教学材料设计新的格式

我的第三个主要研究方向是研究与编程相关的教学材料现有格式的缺点,然后设计新的教学格式,提高这些材料的创造者和消费者的用户体验。

合作布拉德-米勒他的学生杰里米·华纳和我研究了人们如何使用流行的数字教科书来学习编程,如何像计算机科学家一样思考:互动版Warner2015].我们发现执行代码的能力,并看到它的可视化使用Python的导师直接在教科书的背景下上课尤其受到读者的欢迎。

我和我的学生(由Joyce Zhu领导)分析了一个热门MOOC的所有论坛信息,计算机科学与使用Python编程导论Zhu2015].我们发现,人们经常想要讨论运行时代码的执行状态,但由于论坛是纯文本的,所以这样做很困难。根据这些发现,我们建议学习编程的一个更好的讨论论坛应该集成自动生成的执行状态可视化,并支持源代码和输出的内联注释。

受上述作品的启发,我和我的学生Mitchell Gordon创作了Codepourri [Gordon2015],这是一种新的教程格式和众包工作流,可以让Python导师用户通过直接注释运行时代码可视化来一起创建循序渐进的教程。由于学习者远远多于专家,使用学习者作为一群志愿者工作者,比单纯依赖专家是一种潜在的更可扩展的方法来创建编程教程。我们发现,大众创建的简单代码教程是准确的,信息量大的,甚至包含一些专家讲师所忽略的见解。

最后,回到消除命令行BS-ery,我的学生Alok Mysore和我创造了Torta [Mysore2017这是一个macOS应用程序,它允许用户通过简单地在他们的计算机上演示预期的操作来创建跨越多个命令行和GUI应用程序的逐步教程。Torta系统:a)自动记录一个屏幕播放视频以及操作系统事件,如文件系统修改、文件差异和进程调用;b)生成一种新的混合媒体教程,具有视频和文本格式的优点;c)逐步向遵循教程的人提供反馈,甚至自动为他们运行某些步骤。

朋友们,就到这里吧。在接下来的几年里,我打算沿着这三个方向继续发展,然后逐渐向外扩张。请继续关注!

参考文献

  1. Guo2017郭建平。老年人学习计算机编程:动机、挫折和设计机会。美国计算机学会计算系统人为因素会议,2017年。(论文荣誉奖)

  2. Warner2017pilot杰里米·华纳和菲利普·郭。CodePilot:为新手程序员搭建端到端的协作软件开发。美国计算机学会计算系统人为因素会议,2017年。

  3. Warner2017hack杰里米·华纳和菲利普·郭。Hack.edu:考察在校学生和非在校学生对大学黑客松的看法。国际计算机教育研究会议(ICER),2017年。

  4. Mysore2017Alok Mysore和Philip J. Guo。Torta:使用操作系统范围的活动跟踪生成混合媒体GUI和命令行应用教程。美国计算机学会用户界面软件与技术研讨会,2017年。
  5. Zhang2017张雄,郭杰。js:把任何网页变成一个学习数据科学的以例子为中心的实时编程环境。美国计算机学会用户界面软件与技术研讨会,2017年。(论文荣誉奖)

  6. Kang2017姜玄洙和Philip J. Guo。Omnicode:一个面向新手的实时编程环境,具有始终保持运行时值可视化。美国计算机学会用户界面软件与技术研讨会,2017年。

  7. Drosos2017Ian Drosos, Philip J. Guo, Chris Parnin。HappyFace:识别和预测大规模学习编程的令人沮丧的障碍。IEEE视觉语言与以人为中心计算研讨会,2017年。

  8. Ford2016德奈·福特,贾斯汀·史密斯,菲利普·j·郭,克里斯·帕宁。天堂不插电:确定堆栈溢出上女性参与的障碍。软件工程基础国际研讨会(FSE), 2016年。

  9. Chilana2016[张国强,张国强,张国强。]从软件行业的角度理解对话式程序员。美国计算机学会计算系统人为因素会议, 2016年。

  10. Chilana2015] Parmit K. Chilana, Celena Alcock, Shruti Dembla, Anson Ho, Ada Hurst, Brett Armstrong, Philip J. Guo。非计算机专业学生对入门程序设计的看法:对话型程序员的兴起。IEEE视觉语言与以人为中心计算研讨会, 2015年。

  11. Guo2015opticon郭建平。Codeopticon:计算机编程的实时一对多人工辅导。美国计算机学会用户界面软件与技术研讨会, 2015年。

  12. Guo2015chellaPhilip J. Guo, Jeffery White, Renan Zanelatto。Codechella:用于实时辅导和协作学习的多用户程序可视化。IEEE视觉语言与以人为中心计算研讨会, 2015年。

  13. Gordon2015Mitchell Gordon和Philip J. Guo。Codepourri:使用一群志愿者学习者创建可视化编码教程。IEEE视觉语言与以人为中心计算研讨会, 2015年。

  14. Zhu2015乔伊斯·朱,杰里米·华纳,米切尔·戈登,杰弗里·怀特,雷南·扎内拉托,菲利普·j·郭。面向特定领域的计算机编程学习可视化讨论论坛:一个流行的MOOC论坛的实证研究。IEEE视觉语言与以人为中心计算研讨会, 2015年。

  15. Warner2015杰里米·华纳,约翰·杜伦博斯,布拉德利·n·米勒,菲利普·j·郭。高中、大学和网络学生如何不同地参与交互式数字教科书。教育数据挖掘国际会议(EDM),短论文,2015。

  16. Guo2013郭建平。在线Python导师:面向CS教育的嵌入式基于web的程序可视化。计算机科学教育技术研讨会(SIGCSE), 2013年。


没有发现记录

Baidu
map