MATLAB Grader. How to check vectroization in students solution?
2 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I would like to chck in MATLAB Grader if the students have used vectorization, eg. they write in their solution
x = (1:5).^(5:-1:1)
instead of
x = [1^5 2^4 3^3 4^2 5^1]
Is it possible?
1 件のコメント
Martin Rudolph
2020 年 6 月 2 日
編集済み: Martin Rudolph
2020 年 6 月 2 日
Hello,
Referring to:
you could try something like that (with sprintf values from the reference solution could also be used):
SolutionFile = fileread('solution.m');
if ~contains(SolutionFile,'(1:5).^(5:-1:1)')
error('You did not vectorized the code as intended, please refer to the following example...')
end
or something less specific to allow alternative solutions:
if ~contains(regexprep(SolutionFile,'\s',''),'.^')
error('You did not used the elementwise power operator')
end
or
MaxNumber = 4;
NumberOfPowerOperators = numel(strfind(SolutionFile,'^'));
if NumberOfPowerOperators>MaxNumber
error('You used the power operator to often, it seems you did not vectorized your code properly')
end
Using splitlines and a loop you could also check each line for the amount of used operators. However, even if you write a complex test you cannot consider all possible solutions by the students. But a few lines of code may help you to identify strange solutions for a manual review.
回答 (1 件)
Cris LaPierre
2020 年 3 月 27 日
編集済み: Cris LaPierre
2023 年 10 月 10 日
There is no built-in way to check that they used element-wise operators (.^).
You can prohibit the use of the keyword for, to avoid their solving it with a for loop.
My suggestion would be to assign the number to use randomly. That way, they can't hardcode their solution.
% provide the following as locked line in the student template
n = randi([4,10]);
% Student provides their solution underneath
x=(1:n).^(n:-1:1);
Because the reference and learner solutions share the same random number seed, the reference solution would just be
n = randi([4,10]);
x=(1:n).^(n:-1:1);
6 件のコメント
Cris LaPierre
2020 年 3 月 27 日
編集済み: Cris LaPierre
2020 年 3 月 27 日
Let me recommend our Teaching with MATLAB self-paced course. I'd suggest quickly browsing all the chapters, as they all focus on our resources for teaching online. Chapter 6 in particular covers MATLAB Grader.
Also, Grader comes with some pre-built problems. The Getting Started with MATLAB Grader collection was specifically designed to help you get started. The last page of the Teaching with MATLAB course contains a table that helps identify problems to use as a template for common requests (working with files, random numbers, etc). For example, look at the Coordinate transformations Navigating a robot problem to see how you can use random numbers to create variables for your students to use.
Cris LaPierre
2020 年 3 月 27 日
Grader is essentially a variable checker. It is not a good solution for interactive/gui exercises. It should work well for your laboratories provided the code does not cause grader to time out (<1 minute to run and assess code).
コミュニティ
その他の回答 遠隔学習コミュニティ
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!