Hi, Alexandre,
I’ve used Jupyter notebooks and electronic submissions for a Python programming course, however, we ‘rolled our own’ auto-grader for certain assignments. The notebook format is, in my opinion, ideal for teaching programming and assigning exercises and projects.
The Racket kernel for Jupyter was intuitive to install/set up on my local machine, but I’d advise for a large class, if you have the resources, setting up a Jupyter Lab instance on a server and allowing students to log into that, rather than troubleshooting each individual setup. (This, of course, depends on the size of the class; my sections have all been ~40, for a total enrollment of ~160/semester.)
Using GitHub with Jupyter is a good combination; GitHub has web-based previews of Jupyter notebooks which allow for reading (no execution) without having to download or run Jupyter locally most of the time.
We’ve been using Jupyter notebooks with GitHub Classroom