During our teachers’ summit, we raised the point that Web-based development environments might be underused. One of the participants even mentioned that the full learning experience could be done via a Web-based environment: teachers could publish interactive learning material (e.g., notebooks), students could do their homework online without having to install anything locally, and finally, teachers could grade the students’ work on that same cloud-hosted platform.
The purpose of this thread is to create a working group on this topic to identify better what are the common needs of teachers, how covered these needs are with the existing solutions (scastie, gitpod, jupyter, replit, polynote, etc.), and what could be done to improve the status quo. Currently, at the Scala Center we don’t plan to work on Web-based development environments, but that could change if we identify a possible project that would have a great impact on education.
We are currently using either Jupyter with Almond or IntelliJ. But these solutions are not fully suitable for our purpose. We would be interested in having suggestions for online environments with feedback and being able to test them.
When teaching introductory programming at university level we also include knowledge of terminal, editor and build tools in our learning goals, so web-based execution is not critical there.
But at Lund Unviersity we also have a science center that reach out to pre-university education with activities around programming for kids. Many school teachers don’t have any privileges to even install things on there teacher computers and even less on kids’ computers so in many schools, a web-based solution is critical. One problem here is that there is a need for a back-end infrastructure that has a hosting cost. Currently we at Lund University sponsor the Kojo project by hosting http://ikojo.in/ on our servers that allow programming in Scala 2 + simple graphics libs, but there are risks of bottlenecks if many schools offer simultaneous large loads etc.
All this would be a totally different ballgame if the compilation could be done on the client side in the browser. So one suggestion for an interesting Scala Center project could be to make the compiler compile in ScalaJS and run in the browser. Would that be feasible?
That’s an interesting idea! I’ve just discussed with Sébastien and he told me that there are a bunch of obstacles to get there, unfortunately. First, in lots of places the frontend of the compiler relies on an actual file system, second, to support macros the compiler currently classloads the classfile implementation of the macro, which would require significant changes if we want to do it on the client-side, and third, the Scala.js backend also produces classfiles that are used by downstream tooling such as zinc, to support incremental compilation. It could be possible to find workarounds to all these problems but the maintenance costs on the long-term might be quite high because it would require a fork of the compiler.
I just started this issue, that perhaps can attract some more input on what it would take…
I just wanted to note that there is https://weblab.tudelft.nl/ which is a web based course management thingy that does allow students working on solutions in a web based editor (supporting scala), as well as automated grading (using hidden tests).
I am not affiliated with weblab, but we did use it in the past (about 5 years ago) for some of our own courses, and from the students point of view that was nice in the sense that they did not have to worry about any form of setup.
We eventually stopped using it because it did too much for our needs (and has some complexity involved on the lecturers/tutors side). But it is something to consider in this space.
However, as far as I am aware its closed source and they did not have much willingness to release anything, but they were interested in outside investments.
I’ve been developing Scala 100% online/in the cloud for the last year via Metals in GitPod and it’s been very nice. They provide unlimited hours for free to OSS maintainers.