我怎么写一个有效的测试套件科迪课程吗?

8视图(30天)
通过引入 科迪课程 最好,我经常被问到如何有效地使用MATLAB的力量来挑战学生的代码。
1评论
本·霍金斯
本·霍金斯 2017年10月27日
这个答案很过时。不幸的是,它真的出现在Google搜索结果。这些与最近更新科迪是必要的,以我的经验。

登录置评。

接受的答案

MathWorks社区团队
MathWorks社区团队 2014年2月27日
编辑:MathWorks社区团队 2014年6月9日
首先,我们需要理解为什么MathWorks使得测试套件可见学生。鼓励学生使用MATLAB计算机来解决问题。为做到这一点,学生必须能够测试套件代码复制并粘贴到一个MATLAB脚本,反过来,称他们的解决方案的功能。一旦满足,然后他们的解决方案功能复制到科迪课程评估。
有鉴于此,考虑学生如何“游戏系统”提供以下的测试套件 科迪Times2问题 :
断言(isequal (times2 (1), 2));
断言(isequal (times2 (11)、22));
断言(isequal (times2 (3), 6));
断言(isequal (times2 (29), 58));
这里,测试套件的简单调用学生的函数,times2,使用显式数据值来确定学生的代码返回预期的结果。这种方法在道德上是危险的,因为一个学生可以简单地编写一个或一系列if条件语句,妥协的方法。
每个测试套件是一个MATLAB脚本。这里我们利用这种力量来更有效地评估学生的代码以响应Times2问题,
X =兰德(1);
Y_answer = x * 2;
断言(times2 (x), Y_answer)
这还带来了两个问题,1。它揭示了学生的答案代码需要实现(即返回x * 2),和2。它不适用复杂的编程问题。
既然我们已经检查什么 不做 让我们讨论一个更有效的方法来评估学生的MATLAB代码。教师已经有一个参考解决每个编程问题分配,传统上提供给助教人员手动评分。 受保护的MATLAB代码 提供如何使用这些的关键参考解决方案作为广义食谱的一部分写一个有效的测试套件。万博 尤文图斯
首先,编译你的参考解决方案 受保护的MATLAB代码
第二,每分钟把这文件的某个地方被科迪课程在线访问。这肯定不是学校的防火墙后面,它必须公开。一种选择是使用的公共文件夹 免费的dropbox帐户 。如果使用DropBox,它将有助于“ 复制公开链接 “使用web界面。
第三,实现测试用例的测试套件使用受保护的参考解决方案代码,例如:
% %测试学生的功能正确性的代码
urlwrite (“http://url/ProfsFunction.p”,”。/ ProfsFunction.p ');
目录“。”);
i = 1:10
data_vector =兰德(1000 1);
prof_answer = ProfsFunction (data_vector);
student_answer = StudentsFunction (data_vector);
断言(isequal (prof_answer student_answer),“学生代码给出了一个错误的答案”);
结束
适应这对于更复杂的问题需要您适应data_vector随机选择一些适合你的主题。或者,您可能希望将一个 数据文件 从您的测试套件中随机选择输入/输出值。
第四,添加一个测试用例,以防止学生尝试打电话每分钟的文件,例如通过解析学生直接解决方案文件,
% %测试试图作弊
发现= 0;
fid = fopen (“StudentsFunction.m”);
(~ feof (fid))
s = fgetl (fid);
k = regexp(年代,“urlwrite \ (| ftp \ | mget \ (| web \(|流\(|写入文件\ (| sprintf \ ');
如果~ isempty (k)
发现= 1;
结束
结束
文件关闭(fid);
断言(isequal(发现,0))
第五,使用地图解决方案作为“最后防线”。Typically, honest solutions which are correct follow similar patterns. Horizontal bars of these patterns form on the solution map. The few stray solutions below these bars which Cody Coursework has marked correct merit manual code inspection.
有很多可能性的MATLAB语言提供了实现测试套件。在未来我们将添加的更多信息和示例,我鼓励你分享自己的见解如下答案或评论。
2的评论
1月
1月 2014年3月23日
编辑:1月 2014年3月24日
搜索“网络”将导致错误,例如,当它发生在一个评论。这将是非常令人沮丧的学生,当他的方案失败了,因为他的名字包含这个字符序列。
经过几次讨论在这个论坛很明显,p的内容功能不是隐藏的安全,因为调试器显示几乎所有的细节。我鼓励任何老师阅读代码的学生个人而言,虽然自动评估可以并将作弊了。
[编辑]你可以让科迪的虚拟机加载并运行代码从外部链接?这难道不是一个巨大的安全问题?

登录置评。

更多的答案(0)

标签

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!