
Problem Statement.
I’ve finally been making some progress towards building a Sage-based ‘problem server,’ as we were talking about way back in January. It’s clear that the tools developed have a wide scope of use. Before building something that gives open questions and reacts in really interesting ways to input, a stepping-stone is to build something that serves up individual math problems and asks for an answer. In some sense, such things are already done by Webwork and Moodle with varying degrees of success, but building a nice implementation would allow some new directions.
Now, I should stress that I think WeBWorK is pretty awesome, and has some really transformative potential. I’ve been encouraging its use in Kenya, and it’s been extremely interesting seeing it used in service courses in Strathmore University and now Maseno. These are places with ever-increasing class sizes, and a well-designed online homework tool promises to greatly improve student comprehension of the course material. The big database of existing problems in WeBWorK is also really helpful; there are over 26,000 problems in the Open Problem Library. There are three issues with WeBWorK that a new implementation could/should address:
- Modularity: WeBWorK is a pretty monolithic piece of software. It includes three essential components: a problem server, a problem database, and a learner management system (LMS). Basically, these should be busted out into three genuinely separate components. Breaking out the problem server allows easy integration into Moodle or another well-thought-out LMS, or else integration directly into things like online textbooks.
- Modernization: The WeBWorK codebase was mainly developed some time ago, and new versions are slow to come out. (The last stable release is from December, 2010, over two years ago.) The interface is also decidedly… Clunky. There’s a natural question of how one could improve the system using modern AJAX-type tools. Better interactivity will lead to a much better user experience. Things like one-button signup with Google or Facebook accounts is one thing I can think of off the top of my head that would greatly improve the user experience.
- Ease of Writing Problems: Currently, WeBWorK problems are written in a highly idiomatic version of Perl. I was interested in writing problems a couple years ago and got the feeling that it was, in the end, a bit of a black art. The documentation is a bit scant, and most mathematical objects have their own idiomatic libraries. Switching to a python/sage framework would mean that writing problems should become much easier: Sage already recognizes all of these mathematical structures. And if the problem definitions are in python, we’re really using the same syntax as our Sage work. This should make it much, much simpler to pick up a bit of Sage and then start writing problems.








