我为何创立Geekuni

Geekuni 是我创建的一个在线学习环境,旨在帮助人们学习Perl编程。Geekuni与其他许多在线学习课程不同,因为学生的作业由导师机器人进行评估,从而提供即时反馈。重点是实践学习而非理论。

背景

在成为Perl开发者之前,我是一名学者。我大部分时间都在研究旅行商问题,直到有一天我被分配了一个教350名一年级学生使用Unix命令行界面的任务。

这门课程没有特别难的地方;我提供了课程表,解释了像lscat这样的常见Unix命令。学期结束时,这门课有考试。问题是,不及格率令人震惊。我的学生们大部分时间都在Windows上编写Java,所以对许多人来说,我的考试是他们唯一使用Unix的机会。

对于下一个学期,我准备了很多学生练习,并编写了一个小型的Perl脚本来自动检查学生的作业。每当学生尝试练习时,他们就会运行我的脚本,脚本会告诉他们是否正确,如果不正确,他们可以再次尝试,直到通过。令我惊讶的是,学生们在第一周内就完成了所有练习,我不得不增加课程材料以保持他们的兴趣。学期结束时,他们正在编写复杂的shell脚本,执行进程,并使用Sed和Awk等程序。课程的通过率超过90%。

离开学术界后,我成为了一名Perl开发者,并开始开发一个更复杂的导师机器人。我的关键洞察是,学生们通过实践学习编程最好,而大部分评估和反馈过程都可以自动化。随着时间的推移,这个项目发展成了Geekuni。

Geekuni的技术堆栈

公开的网站是一个Web应用,用户可以查看课程大纲并创建账户。它基于StarmanDancer2。模板由集成Bootstrap的Template::Toolkit提供。应用程序类是用Moo编写的,DBIx::Class提供了数据库接口。

课程笔记和练习托管在Moodle上,这是世界上大学中使用的最成熟的开放源代码学习管理系统之一。在Moodle的一位核心开发者Jamie Pratt的帮助下,我编写了插件,帮助学生启动AWS实例以获取导师机器人的反馈。

每个学生的AWS实例称为“eBox”。我使用Net::Amazon::EC2来管理它们。eBox与Moodle API集成,为学生提交提供反馈。它使用PPI来解析学生的代码,然后遍历依赖关系Graph以确定学生需要解决的任何问题的本质。

展望未来

我的前雇主NET-A-PORTER已经使用了Geekuni的课程材料作为他们内部Perl培训课程的教材。我很乐意帮助其他组织和个人使用Geekuni进行自己的培训。我目前的重点很大一部分是解决日常的实践问题——作为一名学者,我曾经研究旅行商问题,现在我在解决“导师机器人扩展问题”上工作!


这篇文章最初发布在PerlTricks.com上。

标签

反馈

这篇文章有什么问题吗?请通过在GitHub上创建问题或拉取请求来帮助我们。