# Julia and online course materials

**URL:** <https://discourse.julialang.org/t/julia-and-online-course-materials/84173>\
**Category:** Teaching & Outreach\
**Tags:** question, documentation\
**Created:** [July 13, 2022, 1:33pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173 "2022-07-13T13:33:47Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [July 13, 2022, 1:33pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/1 "2022-07-13T13:33:47Z")

</div>

I am potentially maybe on the fence sort of considering having my own course website outside of our university LMS (Canvas). I seem to recall some other people doing the same thing, and I’m wondering what sort of tooling that people have chosen. My class is not a programming class (basic finance), although there will be some lectures that involve quantitative topics and pair nicely with coded examples.

Documenter.jl is the first thing that came to mind, but of course this isn’t its main purpose so I’m worried it would be kind of a hacked together solution.

Pure Franklin.jl is another, and I’m somewhat familiar because I use it for my own website already, but it seems like this might lead to too much work for what it’s worth.

Another option that I am aware of is [GitHub - rikhuijzer/PlutoStaticHTML.jl: Convert Pluto notebooks to HTML in automated workflows](https://github.com/rikhuijzer/PlutoStaticHTML.jl) but I haven’t dug into it much. A first glance is that this could be what I am looking for, but I want to hear what others are using.

I also remember seeing a post about this not too long ago [GitHub - jverzani/QuizQuestions.jl](https://github.com/jverzani/QuizQuestions.jl), and I think it would be nice if any solution would also allow me to use this package.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [July 13, 2022, 2:43pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/2 "2022-07-13T14:43:13Z")

</div>

Canvas LMS is a bag of smelly garbage. Practically anything would be better for managing a course than that. Just consider file management, or the grade book…

I would go with notebooks on Github. But, the big question is whether integration with some course enrollment and/or grade management tools at your university will be required. I don’t have any suggestions there.

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [July 13, 2022, 3:12pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/3 "2022-07-13T15:12:34Z")

</div>

Just to clarify, I only need the site to host some (very high quality!) lecture materials. Gradebook will still be in Canvas and I do not need any enrollment functionality as I will just make the site available to the public. I’m also not really interested in any functionality like auto-graded homework problems or whatnot, beyond the simple questions package I referenced already.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [July 13, 2022, 4:06pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/4 "2022-07-13T16:06:23Z")

</div>

Check out [Quarto](https://quarto.org/). I just stumbled on it recently so I haven’t used it yet myself, but it looks like a very good fit for your needs.

---

<div class="post-metadata">

**Author:** ![j\_verzani](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/j_verzani/32/8551_2.png) [@j\_verzani](https://discourse.julialang.org/u/j_verzani)\
**Post date:** [July 13, 2022, 4:17pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/5 "2022-07-13T16:17:38Z")

</div>

If you don’t mind managing the pages yourself, and like authoring in markdown, either weave or converting `.jmd` files into `Pluto` notebooks (e.g. [CalculusWithJuliaNotes.jl/markdown-to-pluto.jl at main · jverzani/CalculusWithJuliaNotes.jl · GitHub](https://github.com/jverzani/CalculusWithJuliaNotes.jl/blob/main/docs/markdown-to-pluto.jl)) plus QuizQuestions can make it fairly easy to create a single .html file for a lecture with self-grading questions from a markdown file. (The Pluto ones look better and offer the option to download and run, but do require some effort when authoring, to keep the variable names distinct and definitely take more time to generate.)

Another alternative is to use Documenter+QuizQuestions, which will manage the pages by making entry points. Checkout [Index · SPMLJ](https://sylvaticus.github.io/SPMLJ/dev/) for a great example of that. I don’t think you should worry that it is hacked together, especially if its workflow is already familiar to you. (It integrates nicely with github, it has an easy to follow layout, …)

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [July 13, 2022, 5:03pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/6 "2022-07-13T17:03:58Z")

</div>

Quarto looks pretty cool! I actually used Pandoc last year for everything, which is what it builds on, so perhaps it wouldn’t be too big of a switch.

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [July 13, 2022, 6:01pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/7 "2022-07-13T18:01:34Z")

</div>

I have used Documenter.jl and like it. It is also nice to make a package, containing the codes to be run.

For example: [Sistema simulado · FundamentosDMC.jl](https://m3g.github.io/FundamentosDMC.jl/stable/sistema/)

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [July 14, 2022, 12:18am UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/8 "2022-07-14T00:18:54Z")

</div>

I came across [Prismia](https://prismia.chat/shared/prismia-course-library) recently; seems like it has a novel interactive element.

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [July 17, 2022, 5:01pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/9 "2022-07-17T17:01:13Z")

</div>

Follow up here, I am playing around with Quarto and seem likely to use it. I guess there will be a presentation at JuliaCon about it too. It has alright Julia support but I think there are plenty of improvements that could be made (it is practically brand new anyway).

---

<div class="post-metadata">

**Author:** ![j\_verzani](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/j_verzani/32/8551_2.png) [@j\_verzani](https://discourse.julialang.org/u/j_verzani)\
**Post date:** [July 26, 2022, 11:03am UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/10 "2022-07-26T11:03:00Z")

</div>

A follow up here. After this thread and after browsing the JuliaCon speaker list and seeing the the great JJ Allaire was behind quarto, I decided to investigate. I am very pleased I did so. It wasn’t so hard to get going. I wrote a small script to convert many `.jmd` files into `.qmd` files, as the markdown used by quarto differs a bit, and had to make some (small but needed) changes to my `QuizQuestions` package. I had been kinda fond of using many Pluto notebooks for this project of mine, but really appreciate the more polished look of the quarto site.

---

<div class="post-metadata">

**Author:** ![fabgrei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fabgrei/32/4214_2.png) [@fabgrei](https://discourse.julialang.org/u/fabgrei)\
**Post date:** [July 27, 2022, 1:49pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/11 "2022-07-27T13:49:50Z")

</div>

I created a [template repository](https://github.com/greimel/pluto-course-template) to set up a [website](https://greimel.github.io/pluto-course-template) similar to the MIT Computational Thinking course. The repository is actually a slimmed-down fork of that course repository, and thus 95% @fonsp 's work.

I’ve been using it for two of my courses. I am adding features to the template repository as I need them for my own courses.

---

<div class="post-metadata">

**Author:** ![cortner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cortner/32/204_2.png) [@cortner](https://discourse.julialang.org/u/cortner)\
**Post date:** [July 28, 2022, 12:10am UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/12 "2022-07-28T00:10:34Z")

</div>

Maybe helpful for some - Inuse Jupyter notebooks for teaching, assignments anf grading. But I manage submission and release if grades and feedback by interacting with Canvas via Python scripts. I found that this works very smoothly.

---

<div class="post-metadata">

**Author:** ![eduardo-zambrano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eduardo-zambrano/32/38099_2.png) [@eduardo-zambrano](https://discourse.julialang.org/u/eduardo-zambrano)\
**Post date:** [July 30, 2022, 6:01pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/13 "2022-07-30T18:01:59Z")

</div>

That is just fantastic. Thank you for your work on this!

---

<div class="post-metadata">

**Author:** ![TI36XPro](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ti36xpro/32/33658_2.png) [@TI36XPro](https://discourse.julialang.org/u/TI36XPro)\
**Post date:** [July 30, 2022, 6:12pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/14 "2022-07-30T18:12:56Z")

</div>

There are a lot of nice suggestions here. Certainly seems like you have options.

[Here](https://jamesdossgollin.me/environmental-data-science/Spring22/02_probability/) is a website I found when perusing [Julia in the Classroom](https://julialang.org/learning/classes/) links. I think it is quite nice. Seems to be built using the pluto notebook approach you described above. Just an example.

Alternatively, maybe you could build the course site using [Weave.jl](https://github.com/JunoLab/Weave.jl), use the HTML output, and host them on github pages? Just another thought.

---

<div class="post-metadata">

**Author:** ![fabgrei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fabgrei/32/4214_2.png) [@fabgrei](https://discourse.julialang.org/u/fabgrei)\
**Post date:** [July 30, 2022, 6:20pm UTC](https://discourse.julialang.org/t/julia-and-online-course-materials/84173/15 "2022-07-30T18:20:53Z")

</div>

> [@TI36XPro](#):
>
> [Here](https://jamesdossgollin.me/environmental-data-science/Spring22/02_probability/) is a website I found

You can build a website like this with my [template repository](https://github.com/greimel/pluto-course-template) linked above.
