# ANN: Grader.jl: Autograder for Julia coding problems

**URL:** <https://discourse.julialang.org/t/ann-grader-jl-autograder-for-julia-coding-problems/83318>\
**Category:** Teaching & Outreach\
**Tags:** announcement\
**Created:** [June 24, 2022, 4:39pm UTC](https://discourse.julialang.org/t/ann-grader-jl-autograder-for-julia-coding-problems/83318 "2022-06-24T16:39:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ctessum](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctessum/32/19444_2.png) [@ctessum](https://discourse.julialang.org/u/ctessum)\
**Post date:** [June 24, 2022, 4:39pm UTC](https://discourse.julialang.org/t/ann-grader-jl-autograder-for-julia-coding-problems/83318/1 "2022-06-24T16:39:32Z")

</div>

Hello all,

I’ve created an [autograder for Julia assignments](https://ctessum.github.io/Grader.jl/dev/). It can run code written by a student and grade it against an answer key or other criteria. Currently it outputs grade results in a format compatible with [PrairieLearn](https://prairielearn.readthedocs.io/en/latest/), but other formats could be added. I hope it is useful to someone, and comments/suggestions are welcome!

---

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [June 27, 2022, 7:18am UTC](https://discourse.julialang.org/t/ann-grader-jl-autograder-for-julia-coding-problems/83318/2 "2022-06-27T07:18:54Z")

</div>

Awesome, thanks, I immediatelly started following releases on GitHub!

---

<div class="post-metadata">

**Author:** ![stepanzh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stepanzh/32/34851_2.png) [@stepanzh](https://discourse.julialang.org/u/stepanzh)\
**Post date:** [July 29, 2022, 1:58pm UTC](https://discourse.julialang.org/t/ann-grader-jl-autograder-for-julia-coding-problems/83318/3 "2022-07-29T13:58:24Z")

</div>

Can Grader.jl support this workflow, which I find pretty?

**Teacher perspective.** Create a template repository with an ordinary Julia package. The package does not contain full `src/` implementation, but the package contain `test/`-s with scoring, e.g. `@gradedtest foo() == 1.5 score=1`.

**Student perspective.** Fork or download the template. Implementing `src/`. Running `pkg> test` and see scoring table with list of (un)completed tasks.

---

<div class="post-metadata">

**Author:** ![ctessum](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctessum/32/19444_2.png) [@ctessum](https://discourse.julialang.org/u/ctessum)\
**Post date:** [July 29, 2022, 4:25pm UTC](https://discourse.julialang.org/t/ann-grader-jl-autograder-for-julia-coding-problems/83318/4 "2022-07-29T16:25:31Z")

</div>

Thanks for your interest! I think that definitely could be done. However, there isn’t currently any integration between `Grader.jl` and `Test.jl`, and that would have to be added for your workflow to work. There is also the question of how to communicate each student’s grades back to some central database for purposes of grade tracking and reporting. That could probably be done with github actions but might be a heavy lift.

Anyway, overall I think `Grader.jl` could be a component in a larger system to realize the workflow you describe, but it definitely doesn’t do the whole thing. I currently use the [prairielearn](https://prairielearn.readthedocs.io/en/latest/) framework to accomplish a similar workflow.
