laby icon indicating copy to clipboard operation
laby copied to clipboard

laby as web application

Open nthiery opened this issue 7 years ago • 5 comments

We are teaching an introductory programming class, in C++ at Université Paris Sud. We have been using for years "laby" in our first computer lab, and it's always proven very effective in engaging students and exposing them with the first constructs that they will learn in detail over the following weeks (if, for, functions, ...). We are also using it for the fête de la science at LRI. Thanks so much!

One thing has been bothering us though: students and participants would go out of the lab with a strong desire to play further at home, but then be stuck with the installation barrier. To resolve this, we would want to have laby available online as a web application.

Manpower permitting, we are considering reimplementing laby, reusing as much as possible of the existent (data, translations, artwork, ...). In term of technology we are planning to use the Jupyter interactive computing environment; in practice, each level would be a jupyter notebook, which would include explanations, a graphical widget (implemented using Jupyter widgets, and their c++ bindings and plots) displaying the labyrinth together with execution controls, and an input box for the user to enter her program.

Rationale for this technology stack:

  • We are already using Jupyter in our computer labs, with the cling C++ interpreter. So our students will learn right away the environment they will use later on.
  • This can be easily deployed for local use (in the computer lab), in our JupyterHub server (from home), or on a public server (e.g. binder ).
  • Jupyter is inherently multi-language; so even if we will focus on C++, generalizing to other languages should not take too much efforts. Ideally just by linking to a small C++ library defining and controlling the widget.
  • The student will keep a trace of the program they wrote for each labyrinth, for later reference or discussion with the teacher.
  • Jupyter supports syntax highlighting, introspection, online documentation, ...
  • Teachers can easily customize the notebooks to their taste, e.g. for integration in a larger body of notebooks.
  • If desired, it should be possible to connect this to nbgrader for autograding.

What do you think?

cc: @JoelGay

nthiery avatar Dec 04 '17 10:12 nthiery

For the record: one of the former students of this clas, Donovan Trinh, will be working on this in the coming months; this will happen on: https://github.com/nthiery/laby-jupyter/

nthiery avatar Jan 25 '18 10:01 nthiery

Well, that took a while, but I finally got to build on the early experiments of Donovan, and an alpha version is out, and can be tried online with Binder: https://github.com/nthiery/laby-jupyter/ . If everything goes well, we will put it in production this coming week with our 400 students. Feedback most welcome!

nthiery avatar Sep 08 '19 09:09 nthiery

I just had a look. That's awesome!

sgimenez avatar Apr 30 '20 08:04 sgimenez

Thanks :-)

It was indeed put in production and it worked out reasonably well. I have students currently working on support for Python. Hopefully some of the limitations will be polished too.

nthiery avatar Apr 30 '20 09:04 nthiery

@nthiery it's failing :( Just tried it but didn't start image sorry wrong repo, I should report it in its own repo.

dgutson avatar May 20 '23 14:05 dgutson