技术文章和通讯

MATLAB编程课程作业的自动评分

作者:Duarte Guerreiro Tomé安图内斯,埃因霍温工业大学


当我开始教书的时候最优控制与动态规划用MATLAB®在埃因霍温工业大学(TU/e),我预计班级规模约为40人。令我惊讶的是,有150名学生入学。起初我很高兴,但我很快意识到这门课程的受欢迎带来了一个严重的问题:我只有两个助教。那个学期,一位助教几乎把所有的时间都花在了评分上;他花了三天时间来测试学生们的MATLAB代码,并记录一项作业的成绩。

下次我教这门课时,我们使用Cody Coursework™自动给作业打分。这种方法显著提高了学习效果。它使助教能够花更多的时间直接与学生一起工作,通过对学生的工作提供即时反馈来激励学生,并向我展示学生们学习得很好的概念和他们需要帮助的地方。

用MATLAB教学最优控制与动态规划

有些教师教授最优控制和动态规划,特别强调数学——特别是庞特里亚金极大值原理。其他人则绕过数学,直接进入应用程序。我试图找到一个平衡点,但我更倾向于后一种方式,因为TU/e是一所技术大学,我们的学生通常更喜欢实际应用而不是抽象理论。

MATLAB使我能够在理论与实践之间找到平衡。学生在课堂上学习概念,然后在MATLAB中实现和测试。例如,他们学习如何应用庞特里亚金极大值原理,用MATLAB中的数值方法求解两点边值问题。学生们需要的许多其他函数都内置在MATLAB中;例如,当他们想使用线性二次型调节器(LQR)或卡尔曼滤波器时,他们可以简单地从他们的脚本调用它,而不必自己实现它。动态规划和决策问题,如生成出售资产的最优策略,可以很容易地在MATLAB中编写代码。

虽然我的学生来自广泛的背景,大多数进入班级已经熟悉MATLAB。少数不懂MATLAB的转校生随着课程的进展很容易就学会了;他们以前没有经验,这从来不是障碍。

评分作业自动与科迪课程

把科迪课程引入课堂很简单。我为学生们提供了一些如何提交解决方案的建议;不需要长时间的训练。

对于三个课程作业中的每一个,学生编写MATLAB函数来解决特定的问题。当学生认为他们所写的函数是正确的,他们提交给Cody Coursework进行评分。Cody Coursework使用我的助教和我创建的测试套件自动为作业评分,然后就解决方案的正确性提供即时反馈。学生可以自由地重新提交解决方案,直到他们对自己的成绩感到满意为止。

第一个分配,离散优化,被证明是相对容易的。第二种方法是近似动态规划,因为没有最优解,所以更具挑战性。这意味着学生必须尝试许多次优策略,包括模型预测控制、铺展和确定性等效控制。在这次作业中,学生们开始意识到即时评分的价值。如果他们提交了一个错误的解决方案,他们可以回到他们的代码中寻找改进的方法,而不必等待咨询我或助教。

在最后的作业中,学生被要求调优LQR控制器的矩阵以满足特定的一组约束。再一次,他们使用Cody Coursework立即检查他们的解决方案,并继续改进它们,直到满足要求。助教和我依靠Cody Coursework来给作业打分,并提供结果的总结,我们用它来监控进度(图1)。

图1。针对第二次作业中的问题,总结Cody课程作业的结果。

图1。针对第二次作业中的问题,总结Cody课程作业的结果。

自动分级的意外好处

我使用Cody Coursework的主要目的是尽量减少助教批改作业的时间。我发现Cody Coursework还有其他好处。

对作业的即时反馈被证明是一个重要的激励因素。看到自己的同学成功地完成了一项作业,说明这个任务是可以完成的,并激励正在努力坚持下去的学生。另一方面,掌握材料的学生更容易互相竞争,争取第一个找到正确答案。

我的助教和我监测Cody Coursework的结果,以跟踪正确和不正确的解决方案,解决方案提交的时间,以及提交的大小(以代码行计算)(图2)。我们使用这些信息来确定学生们觉得困难的概念,以便稍后在课堂上复习这些概念。

图2。Cody课程作业解决方案地图,显示正确和不正确的提交的学生解决方案,以及他们的大小和到达的顺序。

图2。Cody课程作业解决方案地图,显示正确和不正确的提交的学生解决方案,以及他们的大小和到达的顺序。

我们设计了Cody Coursework所使用的测试,以逐步检查学生作业中更复杂的方面。例如,对于包含成本函数的问题,我们创建了一个没有终端成本的测试和一个有终端成本的测试。考虑了终端成本的学生方案将通过两项测试,而没有考虑到终端成本的学生方案将只通过第一项测试。我们还使用了可见测试(其中显示了测试的正确输出)和隐藏测试(其中测试只显示代码是正确的还是不正确的)。这种粒度级别提供了一种更公平的评分方式,并帮助我们更好地了解学生吸收材料的情况。

扩大Cody课程的使用

对于未来版本的课程,我正在考虑使用科迪课程自动化考试评分。我也愿意让课程更具互动性。例如,如果学生没有掌握一个特定的概念,我可能会增加一个额外的,之前没有计划的作业。如果没有自动评分,像这样快速添加另一项作业是不可行的,因为这将占用助教的时间。

与此同时,我主张在TU/e扩大使用Cody Coursework。正如我的一些同事已经发现的,对于任何使用MATLAB的课程,Cody Coursework是一个非常有效的工具,节省了时间和工作,并充分吸引学生在课程作业。

注:Cody Coursework于2018年7月成为MATLAB评分器。

学生的反馈

学生对Cody Coursework的反馈是压倒性的积极。以下是我们收到的一些回复:

“事实上,对于一段非常复杂的代码,你可以得到即时的反馈(或确认),这是非常棒的,如果没有它,调试自己的代码将会非常混乱。这也激励着我在所有的MATLAB作业中取得100%的分数。”Joost P。

“Cody Coursework是一个很棒的平台。这让我对自己的解决方案更有信心,而不是等待老师的评价。“Manoj P。

我在Cody Coursework的经历非常积极。绿色复选框是获得高分的额外动力。”柯恩B。

“Cody Coursework最有用的特性是能够根据各种测试用例检查我们的解决方案,这有助于调试我们的代码,并以更通用的方式制定它。”Amrith V

“我喜欢你能立即收到反馈,这让你更容易发现代码中的问题……在相对较短的时间内,我从MATLAB作业中学到了很多东西。”路德。

关于作者

杜阿尔特·格雷罗Tomé安图内斯是埃因霍温工业大学的助理教授。他获得了里斯本高等学院(Instituto Superior Técnico, IST)的电气和计算机工程学士学位。他拥有IST系统和机器人研究所的博士学位。主要研究方向为网络控制系统、随机控制、多速率和采样数据系统、优化和动态规划。

发布于2016 - 93065v00

查看相关功能的文章

Baidu
map