A guide for how to attack an MP:
-
For each problem in the assignment, go into the VSCode
Workstation for the problem, and start a terminal window.
To make sure you have all the necessary pieces, in that
terminal window, start by
executing make. This will create the grader
executable. Still in the terminal window, run the
executable (./grader). Examine the failing
test cases for places where errors were produced by your
code. At this point, everything should compile, but the
score will be 0.
-
Read and understand the problem from the assignment on which
you wish to begin working. (Usually, working from top to
bottom makes most sense.) There is a tests
file in this directory. This is an important file containing
a partial set of test cases; you'll want to add more cases
to test your code more thoroughly. Reread the problem from
the main webpage for the problem, examining any sample
output given. Open the tests file in the
WORKSPACE directory. Review the test cases
given for that problem. Add your own test cases by
following the same pattern as of the existing test
cases. Try to get a good coverage of your function's
behavior. You should even try to have enough cases to
guarantee that you will catch any errors. (This is not
always possible, but a desirable goal.) And yes, test cases
should be written even before starting the implementation of
your function. This is a good software development practice.
- If necessary, reread the statement of the problem once more.
Place your code for the solution
in problem.ml
(or problem.mll
or problem.mly as specified by the assignment
instructions) replacing the stub found there for it. Implement your
function. Try to do this in a step-wise fashion. When you think
you have a solution (or enough of a part of one to compile and be
worth testing), save you work and execute make and
the
./grader again. Examine the passing and failing test cases
again. Each failure is an instance where your code failed to give
the right output for the given input, and you will need to examine
your code to figure out why. When you are finished making a round
of corrections, run make, followed by ./grader
again. Continue until you find no more errors. Consider submitting
your partial result so that you will at least get credit for what
you have accomplished so far, in case something happens to interfere
with your completing the rest of the assignment. You can submit one
problem at a time in earlier assignments. In later assignments,
problems tend to be pieces of functions. It is still worth your
while to do incremental submissions.
- When your code no longer generates any errors for the problem on
which you were working, return to steps 3) and 4) to proceed with
the next problem you wish to solve, until there are no more problems
to be solved. Each problem is submitted in PrairieLearn
indepentantly of the others, but some later assignments have only
one problem.
- When you have finished all problems (or given up and left the
problem with the stub version originally provided), you will need to
submit your code to PrairieLearn.
|