[This blog post can be seen as a follow up to JLM progress]
As every year in September, JLM is currently used in the introduction class at our school. That's traditionally the most intense period for the framework, with about 60 students using it more than 30 hours over 2 weeks. This period is also very active on the development, since these teaching are a real dream to coach. Even if we are only 1 or 2 teachers for 60 students in labs, we have almost no question. Things run just incredibly smoothly, giving us a lot of time to hack on the code with Gérald
Linearity is gone
As reported a few weeks ago, my previous goals were to:
- hack a backtracking lesson using a sort of debugger;
- spread the good news on JLM
- improve the modularity by breaking the linearity of the lessons.
Well, once again, we missed the deadline for SIGCSE (as every year since 3 years), but I'm pleased to report that the linearity lived. We changed the linear dependencies to a more generic schema. Actually, it works better when the dependencies are a tree instead of a generic graph. That is because of the layout algorithms in the JUNG library: it looks simply awfully when I try to use them for generic graphs instead of trees. But at the end of the day, it just works. Just check the following snapshot: each exercises is depicted by a little icron representing its universe, and the exercises that you passed are marked by a little tiny gold star. It's not only good looking, that's also interesting for the students. Now that the linearity is gone, we can ad as much exercises as we want on each notion. This way, the students needing more time to acquire the thing can have enough exercises without risking to bother the faster students.
Bye bye IRC and twitter, hello jabber and identi.ca
A while ago, I implemented a IRC forum so that the students can discuss their difficulties this way. I think that the best way to acquire a notion is to teach it (after all, I didn't knew nothing of Java for my first year at ESIAL -- ahem).
The bad news is that IRC is filtered out at ESIAL, so my little forum were ineffective. Gérald hacked another forum using XMPP, and even if it's a rather dirty hack (every students are logged using a unique identifier which talk to itself, (mis)using the status field to identify the students), it seems to work well. I'm delighted: having the students solving their difficulties together makes more time for us to hack on JLM during the labs...
Last year, Gérald implemented a twitter stream where each success at a exercise gets posted to twitter. That's kinda useless for the pedagogy (as a teacher, identifying the students who fail the exercises and thus need your help would be more useful), but that's fun and the students usually like it. The problem is that the library we used is not in Debian, blocking the integration of JLM itself. Plus, twitter4j will probably not be integrated before a long while since it integrates non-free code chunks here and there. The good news is that Gérald pushed some code relying on identi.ca instead.
Debian, nous voila! I already packaged smack, our dependency for XMPP. Unfortunately, it also have a little licensing issue that I reported upstream. I guess that it will be sorted out very soon (Damn, those java guys are not very good with the licensing of their code).
(provable) feedback
This identica integration presents an unexpected advantage: the project web page allows you to save you entire account, including all your posts (twitter seems to forbid that to not load their servers). This is very precious since it allows us to come up with the following graph, which clearly demonstrate that students actually work with the platform outside of the teaching hour. Yuhu! It work, they like it! Naturally, the bad side is that they will finish all the proposed exercises sooner, and that we have to come up with something else to keep them occupied until the end of the 30 planned hours. A robozzle universe seem to be feasible, stay tuned
I just hope that identi.ca will not suffer too much from this situation: at some point during the afternoon, we had almost 10% of all the post presented on their main page coming from our little experimentation... Well, if they close our account, we'll move to the LDN servers: I'm sure these guys could love the publicity it would give them in the eyes of the ESIAL students.
On this graph, each unique account is given a horizontal line, while the other axes represents the time going on. Each time that a student successfully passes an exercise, a little green dot is depicted. The red area are the time at which the teaching occurred. As you can see, we implemented this feature during the first teaching, on the 9/6, and deployed it live the day after. It is clear that the density of points is higher during the classes, of course, but you can see several students having rather long working sessions outside of these hours. Actually, one of them is currently working while I'm blogging: he forced me to update this graph twice now. Duuude. Stop it. It's late already, go get some sleep and stop working!
Please note that you have to use the JNLP version of JLM to get all these good improvements, I didn't update the jar on my webpage yet.
Next steps
I guess that I'll have to stop playing on JLM and do some work on SimGrid next week. After all, I'm on leave from my university and my activity should have nothing to do with teaching this year... But I can't help but thinking that designing JLM is more a research project (on what the right teaching tool would look like) than a pure teaching activity. Plus, it just makes more fun than all the politics associated to regular science this days.
But ok, I swear to do more SimGrid work next week than this one (won't be hard ).