Michael Gage


Subscribe to Michael Gage feed
Michael Gagehttp://www.blogger.com/profile/07857444244882435786noreply@blogger.comBlogger23125
Updated: 14 hours 41 min ago

Installing the WeBWorK opaque server and the Moodle opaque client

Thu, 05/25/2017 - 12:56
p.p1 {margin: 0.0px 0.0px 21.0px 0.0px; line-height: 42.0px; font: 27.0px 'Helvetica Neue'; color: #111111} p.p2 {margin: 0.0px 0.0px 21.0px 0.0px; line-height: 21.0px; font: 20.0px 'Helvetica Neue'; color: #111111} p.p3 {margin: 0.0px 0.0px 22.5px 0.0px; line-height: 22.5px; font: 17.1px 'Helvetica Neue'; color: #111111} p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px 'Helvetica Neue'; color: #111111; min-height: 17.0px} p.p6 {margin: 0.0px 0.0px 22.5px 0.0px; line-height: 22.5px; font: 17.1px 'Helvetica Neue'; color: #0d6ea1} p.p12 {margin: 0.0px 0.0px 21.0px 0.0px; line-height: 42.0px; font: 27.0px 'Helvetica Neue'; color: #111111; min-height: 33.0px} p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px 'Helvetica Neue'; color: #000000; background-color: #ffffff; min-height: 17.0px} p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; line-height: 21.0px; font: 15.0px 'Helvetica Neue'; color: #000000; background-color: #ffffff} p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px Courier; color: #333333; background-color: #f8f8f8} p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px Courier; color: #999988; background-color: #f8f8f8} p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px Courier; color: #333333; background-color: #f8f8f8; min-height: 18.0px} p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px Courier; color: #dd1144; background-color: #f8f8f8} p.p22 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 15.0px Courier; color: #000080; background-color: #f8f8f8} li.li4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.5px 'Helvetica Neue'; color: #111111} li.li7 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.6px; font: 16.5px 'Helvetica Neue'; color: #111111} li.li8 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 16.5px Courier; color: #111111} li.li9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.5px Courier; color: #111111} li.li10 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 16.5px 'Helvetica Neue'; color: #111111} li.li11 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.6px; font: 16.5px Courier; color: #111111} li.li15 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.5px Courier; color: #333333; background-color: #f8f8f8} li.li16 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.5px Courier; color: #333333} li.li17 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.5px Courier; color: #990073; background-color: #f8f8f8} span.s1 {font-kerning: none} span.s2 {font-kerning: none; color: #111111} span.s3 {font-kerning: none; color: #0d6ea1} span.s4 {font: 17.1px 'Helvetica Neue'; font-kerning: none; color: #0d6ea1} span.s5 {font: 16.5px Courier; font-kerning: none} span.s6 {font: 16.5px 'Helvetica Neue'} span.s7 {font: 16.5px 'Helvetica Neue'; font-kerning: none} span.s8 {font: 16.5px Courier} span.s9 {font: 16.5px 'Helvetica Neue'; font-kerning: none; color: #0d6ea1} span.s10 {font: 16.5px Courier; font-kerning: none; color: #333333; background-color: #f8f8f8} span.s11 {font: 16.5px Courier; font-kerning: none; color: #008080; background-color: #f8f8f8} span.s12 {font: 16.5px Courier; font-kerning: none; color: #dd1144; background-color: #f8f8f8} span.s13 {font: 16.5px Courier; font-kerning: none; color: #0086b3; background-color: #f8f8f8} span.s14 {font: 16.5px Courier; color: #333333; background-color: #f8f8f8} span.s15 {font: 16.5px Courier; font-kerning: none; background-color: #f8f8f8} span.s16 {font: 17.1px Courier; font-kerning: none} span.s17 {background-color: #f8f8f8} span.s18 {font-kerning: none; background-color: #f8f8f8} span.s19 {font-kerning: none; color: #111111; background-color: #f8f8f8} span.s20 {font: 16.5px 'Helvetica Neue'; font-kerning: none; color: #111111} span.s21 {color: #333333} span.s22 {font-kerning: none; color: #333333} span.s23 {font-kerning: none; color: #008080} span.s24 {font-kerning: none; color: #dd1144} span.s25 {font-kerning: none; color: #0086b3} span.s26 {font-kerning: none; color: #000080} ol.ol1 {list-style-type: decimal} ul.ul1 {list-style-type: disc} ul.ul2 {list-style-type: square} ul.ul3 {list-style-type: circle}
Installing the WeBWorK opaque server and the Moodle opaque client


The Opaque question type and the Moodle Opaque client were created by Tim Hunt to allow webservices to power questions used in the Moodle quizzes. They were specifically designed to work with the OpenMark question engine at the Open University in England with the expectation that they could interoperate with other question engines as well. The WeBWorK Opaque server described in this document accepts requests from the Moodle Opaque client and returns a rendered PG question. The combination of the Moodle Opaque client and the WeBWorK Opaque server allows any WeBWorK question to be included in a Moodle quiz giving Moodle quizzes access to the entire range of mathematics questions commonly used in WeBWorK homework installations, in particular all of the questions in the OpenProblemLibrary. The WeBWorK/Opaque question type behaves much like STACK questions (created by Chris Sangwin) and supplements the mathematics questions available from STACK (System for Teaching and Assessment using a Computer Algebra Kernel).This is a first attempt to interface WeBWorK (or to my knowledge any question engine besides OpenMark) with the Opaque client. Suggestions for improvements particularly from experienced Moodle users familiar with question “behaviours” and how to configure them to best advantage are welcome.The main steps are as follows:
  1. Install the opaque question type client in Moodle
  2. Configure the Moodle question engine (and test)
  3. Create a Moodle quiz with opaque questions (and test)

The steps above do not require you to set up your own opaque server. You can use the publically available opaque servers listed to test that the Opaque client and Moodle quiz have been set up correctly. If you already have a WeBWorK installation then adding the WeBWorK Opaque server is straight forward. “Install the WeBWorK Opaque Server”. For information on installing a WeBWorK server from scatch see https://github.com/openwebwork/ww_install and http://webwork.maa.org/wiki/Installation_Manual_for_2.12_on_Ubuntu_16.04To see the tools available for duplicating an existing WeBWorK course asa course using Moodle quizzes read the section “How to transfer a WeBWorK course with homework sets to a Moodle course with quizzes”.

Read more »
Categories: Planet WeBWorK

Using WeBWorK questions in Moodle quizzes -- the Moodle/WeBWorK question bridge

Fri, 06/19/2015 - 18:00
This is a copy of a post that I made to the Moodle forum on Quizzes.

I’m happy to announce a version of WeBWorK that can serve mathematics questions via a Moodle quiz.  This gives a tighter connection between Moodle and WeBWorK, allowing students to work exclusively with the Moodle quiz interface while WeBWorK produces the mathematics questions and processes the student answers in the background.  The result is similar to using STACK to produce and process mathematics questions.

This is a first attempt at realizing the question level WeBWorK-Moodle bridge which I proposed in this forum in my earlier post last January ( https://moodle.org/mod/forum/discuss.php?d=277922) and on my blog (http://michaelgage.blogspot.com/2015/01/connecting-webwork-to-moodle-2xs.html )

It makes most of the 25K+ mathematics questions written for WeBWorK’s OpenProblemLibrary (http://webwork.maa.org/wiki/Open_Problem_Library) available for use in Moodle quizzes as well.  The OPL began with questions designed for single and multivariable calculus courses (and that is still the majority of the collection) but has expanded in both up and down to include questions for linear algebra and differential equations, complex variables, operations research, and statistics; as well as precalculus and developmental mathematics problems and many other math subjects.

To see this Moodle/WeBWorK connection in action,  view the Moodle course for linear algebra and differential equations at (https://devel3.webwork.rochester.edu/moodle/course/view.php?id=21).  You will need to login as “visitor”, using the password “visitor” in order to view the quizzes. (Guests are not allowed to view Moodle quizzes.)

This is  a mockup of the matrix algebra/ODE course which I taught in 2009 using the Moodle/WeBWorK assignment connection (which presents an entire homework assignment using the WeBWorK interface).  In each week  you’ll see the original WeBWorK assignment that I used (the icon is a yellow spider web on blue background) and near it the Moodle Quiz version of the same assignment.  Try each of them to get a comparison between the WeBWorK/Moodle assignment bridge and the new WeBWorK/Moodle question bridge.

I have set the behavior of the Moodle Quiz so that it closely approximates the original WeBWorK assignment.  These assignments are meant primarily for homework/practice not for normative assessment.  The student can retry each question as often as she wishes and if there are several answer blanks then evaluation is given separately for each blank.

The Moodle portion of this bridge is built on the Opaque question type module implemented by Tim Hunt for interfacing with webservice test engines.  I am indebted to Tim for help and advice while I was implementing this Moodle/WeBWorK question interface.

Information for installing and configuring the Moodle Opaque question type is available on github at https://github.com/moodleou.  Specifically you need the opaque qtype module:  https://github.com/moodleou/moodle-qtype_opaque and the opaque behaviour module:  https://github.com/moodleou/moodle-qbehaviour_opaque.  

I’ll provide more detailed suggestions for creating your own Moodle/WeBWorK questions later but for those somewhat familiar with both WeBWorK and Moodle here is the short explanation.
1. You create a new Opaque engine pointing to the url: https://devel3.webwork.rochester.edu/opaqueserver_wsdl and set the question bank URL for the engine to https://devel3.webwork.rochester.edu/webwork2/spring09mth165 .
2. For each question the questionID should be the same as the path of a WeBWorK problem in the OpenProblemLibrary with the following replacements.
The initial segment should be “library” instead of “Library”, each slash is replaced by two underscores, and each hyphen is replaced by three underscores. (This is required in order to conform to the Opaque client naming scheme.)
For example:
is obtained using the questionID:

For those who are really impatient the WeBWorK server function is provided by adding the project opaque_server along side a standard WeBWorK course. The Opaque Server can be found at (https://github.com/mgage/opaque_server) along with minimal documentation for installing.   That repo will be moved to the standard WeBWorK github site (https://github.com/openwebwork) after further testing (and after the documentation has been expanded).

This is the first version of the Moodle/WeBWorK question bridge so the behavior may change slightly in the future.  Because STACK and WeBWorK are already very similar I would be interested in creating a question type that was interchangeable between the two background mathematics engines.  Instructors would be able to mix STACK and WeBWorK questions in the same quiz in such a way that it was invisible (or nearly invisible) to students which engine was handling the question.

Your comments are welcome.

-- Mike Gage, University of Rochester, Rochester, NY

Categories: Planet WeBWorK

Embedding single WeBWorK problems in HTML pages

Tue, 06/16/2015 - 10:28

Whether writing a full text book or just an explanation and worksheet for a class it is often useful to include an active (even better an interactive example) within the text itself. You can always use a link to refer to a WeBWorK homework set but that doesn’t have the immediacy of a problem embedded in the page itself.  
Now you can use WeBWorK to do that -- there is a new mechanism that allows you to export the content of an individual problem without all of the buttons and navigation items that usually appear for a standard homework set. Here is an example.
Problem 1 -- interval notation

In many websites this problem is interactive, try it.   After the jump I have attached a link to an HTML page with many more examples which you can try out. You can also download the page and modify it to display other questions.  On the HTML page I have wrapped each example with a "knowl" slide down javaScript that allows you to slide open or to close each example question individually.

Read more »
Categories: Planet WeBWorK

Connecting WeBWorK to Moodle 2.x's question type for use in Moodle quizzes.

Mon, 01/19/2015 - 16:40
This note was posted on moodle's quiz forum on January 7, 2015.

I am working on plugging WeBWorK in as a back end for analyzing mathematics questions in a way similar to STACK. I will be using the opaque question type as a starting place. 

I am just beginning this project and I expect to have questions for this forum as I proceed so I thought it a good idea to introduce myself.

I am Mike Gage, a math professor at the University of Rochester, (Rochester, NY, USA) and one of the originators of the open source online homework system WeBWorK. It was originally designed to deal with mathematics at the calculus level but it now has questions from middle school through ordinary differential equations, linear algebra and complex analysis.

It already interoperates with Moodle as an assignment module -- there is single sign-on between Moodle and WeBWorK and after the student finishes their WeBWorK homework assignment the grades are returned to the google grade book. My goal is to make WeBWorK work as a question type for Moodle2.x. We already have a question type version for Moodle1.9 

For those interested here is an example of a course using WeBWorK for assignments (search for the spiderweb icon and click on it). https://hosted2.webwork.rochester.edu/moodle/course/view.php?id=3

For those interested in an example of WeBWorK being used to create question types in Moodle 1.9 (Created by Matt Leventi in 2007) https://devel1.webwork.rochester.edu/moodle/mod/quiz/attempt.php?q=256&forcenew=1 
(you can log in using the guest button). This version could use improvement but I don't plan to work on this further unless there is a large demand -- it seems better to put the effort into a Moodle2.x version. 

Finally for those interested in WeBWorK in its native form you can look at this link:
https://hosted2.webwork.rochester.edu/webwork2/2014_07_UR_demo/ (you can login using the guest button)

The home wiki for WeBWorK is http://webwork.maa.org/wiki

Thank you in advance for considering the questions I will have as I start on adapting
the opaque question type to WeBWorK. 

Take care,


Categories: Planet WeBWorK

WeBWorK::Asheville May 19 - 22, 2014

Mon, 05/26/2014 - 19:24
WeBWorK::Asheville   May 19 - 22, 2014
WeBWorK::Asheville::2014 was held at Western Carolina University from Monday, May 19 through Thursday May 22, 2014.   Thanks very much to Geoff Goehle at WCU for organizing the code camp.  
This was a small focused code camp attended by Mike Gage, Geoff Goehle, Peter Staab, Bruce Romano, Jason Aubrey  and John Travis and devoted principally to making progress on 
  • WeBWorK 3 -- the new AJAX based interface being developed by Peter Staab
  • the install script -- automatically installing the entire WeBWorK stack being developed by Jason Aubrey

In addition we made a start on writing a grant proposal for dissemination of WeBWorK to community colleges and to high schools, worked on refining examples that use both MultiAnswers and Scaffolding (sequential or compound problems) in the same WeBWorK question, and created a first draft of a procedure to be followed when checking in new code to the github.com/openwebwork repository.  

This camp  and previous code camps are supported by the NSF through a national dissemination grant to the MAA. 
Read more »
Categories: Planet WeBWorK

WeBWorK accessibility projects

Fri, 11/01/2013 - 06:41

There are a number of centers using WeBWorK that are interested insuring that our online homework system is accessible, that it meets universal design goals and can be used as widely as possible.  Using MathJax to represent mathematical equations has been a big boost in that direction.

Here is a post from Portland Community College one of the active centers working on the accessibility aspect of WeBWorK.  The summer MathFest conference will be held in Portland, OR in August 7-10, 2013 and there are tentative plans to hold a code camp in Portland devoted to WeBWorK accessibility on the three days proceeding MathFest. Details are still being worked out but if you are interested or have ideas or suggestions email me or Alex Jordan at Portland Community College.

Below is the report.

-- Mike

Report from Portland Community College
Kaela Parks: Director of Disability ServicesKaren Sorensen: Accessibility Advocate for online courses
Chris Hughes, Scot Leavitt, Alex Jordan: Math faculty
Making Math More Accessible at Portland Community College
At Portland Community College (PCC), Disability Services (DS) is tasked with ensuring the accommodation process unfolds appropriately across and throughout a district serving approximately 90,000 students per year, 50,000 of whom are seeking credit.  In recent years the options for curricular content format and delivery have changed considerably, bringing new barriers, but also new opportunities for making math more accessible. Many courses are now designed around online engagement points that tap vast databases, generating individualized browsing sessions any time of day or night, giving users valuable and almost instantaneous feedback. While Disability Services can convert known problem sets ahead of time, and hire aides to serve as readers and scribes, it is not practical, nor does it provide equally effective communication, to try and address barriers on the fly.
The truth is that while there will always be some need for individualized accommodation, for example creating tactile representations of graphs, there is much that can and should be done on the front end to minimize the need for manual adjustments. If online engagement points comply with established Web Content Accessibility Guidelines and use proper structural markup for math content, users who rely on text to speech, braille translation, magnification, or voice recognition, can still typically get what they need. The content is built for flexibility. However, when these best practices are not honored, there is often no way DS professionals can ensure equally effective communication. We can’t reach behind the firewall and “fix” content by adding descriptions to images, putting equations into MathML, or redesigning the interface to ensure keyboard navigation.  What DS can do, and should do, is partner with Faculty, Instructional Support, and other stakeholders to help the institution recognize our shared responsibility to ensure equal access through ethical course design and curricular material adoption processes.
At PCC, online instructors develop their own courses within the learning management system. They choose the color and formatting of their text, the media, publisher materials and third party web sites and applications to use in their courses. And since the spring of 2012, all new and revised online courses paid for development by the Distance Education (DE) department are reviewed for accessibility. But how is an instructor supposed to know what’s accessible and what isn’t?
The Distance Education department has seen accessibility as an area that instructors need support. To that end, they hired an Accessibility Advocate who trains instructors and reviews courses for accessibility. And last fall (2012) the DE department co-sponsored with the Math department, two math faculty in their study of accessible mathematics. This subject specific study was so successful that the DE department hopes to emulate it with other academic program areas, especially in the STEM fields.
Math faculty members, Scot Leavitt and Chris Hughes investigated both the accessibility of content generated by the instructor and that which is delivered by homework management systems. In addition to studying commercial homework management systems such as MyMathLab, they ran a battery of accessibility tests (assisted by Math faculty Alex Jordan) on WeBWorK. The results from the WeBWorK experiments were superb- the screen reader JAWS was able to navigate easily around the web page and, most importantly, could read even the most complicated mathematical expression with the greatest of clarity.
WeBWorK is currently the only math homework management system fully endorsed by the Disability Services Office at PCC, and they are providing strong support in the creation of a dedicated server to host it. The server should be fully functional by the end of Summer 2013, and ready for wide-spread use across the college at some point within a year. Supporting WeBWorK in this way allows PCC to provide instructors with an alternative to commercial offerings that have known accessibility issues. By establishing our own WeBWorK server we ensure our community has access to a powerful homework management system that is more usable to more people more of the time. It also provides the institution with a means to ensure access for students who are enrolled in sections built around inaccessible engagement points by providing an equally effective alternative. 

Details of the Math accessibility study and other resources can be found at http://www.pcc.edu/resources/instructional-support/access/.
Categories: Planet WeBWorK

WeBWorK::Rochester::2013 October 4 - 7, 2013

Wed, 10/09/2013 - 17:44
WeBWorK::Rochester::2013, held at the University of Rochester from Friday October 4 through Monday October 7, was dedicated to
  • putting final touches on release/2.8 of WeBWorK 
  • integrating the new user interface created by Peter Staab into the development branch of WeBWorK
A small group of experienced WeBWorK developers participated in this code camp: Davide Cervone, David Gage, Mike Gage, Geoff Goehle, John Jones and Peter Staab. My thanks to all of them for their contributions to a very successful weekend.  My thanks also to Louise Wingrove for organizing the lodging and meals for participants.

This camp  and previous code camps are supported by the NSF through a national dissemination grant to the MAA. ( link to www.nsf.gov  once it is back up and running again. :-)  )

The first outcome of the camp is an updated release/2.8 which we plan to merge with the master branch on December 1, 2013.  We combined the original release/2.8 with most of the fixes and small features which have been submitted to the develop branch over the last three months.  Both release/2.8 and the develop branch have been running smoothly under moderate course loads on the MAA testcourse site and on the hosted2 site at the University of Rochester.  The activity devoted to release/2.8 over the next few months will be responding to bug fix requests, minor adjustments of features and general polishing of the instructor experience.  Very little has changed in the student interface and there have been very few requests for changes in this aspect of WeBWorK.  While not specifically adapted to mobile devices the student view of WeBWorK works acceptably well on iPhones, iPads and Android mobile devices.

Features of release/2.8 are listed on the wiki at: http://webwork.maa.org/wiki/Release_notes_for_WeBWorK_2.8  
(You can type release/ 2.8 into the search box of the wiki to find it.)

You can also view all of the work involved in creating release/2.8, step by step,
viewing the commits page on github. https://github.com/openwebwork/webwork2/pull/182/commits
The most recent commits are at the bottom.

The will be more exposition about new features in release/2.8 (and some under advertised features of release/2.7) in subsequent blog posts.

It should be noted that LibraryBrowser1, although it has not changed its name, has received substantial improvements in release/2.8 from the work of John Jones.  In general it should be much faster because some of the ajax calls used in librarybrowsers2&3 have been used to speed up rendering of individual problems on a library page.  When enabled, the library page also allows for the easy tagging of library problems.  (see http://webwork-jj.blogspot.com/2013/07/webwork-opl-workshop-charlottesville-va.html for more details)

The second outcome of WeBWorK::Rochester::2013 is the integration of a new AJAX/javaScript
instructor interface, largely created by Peter Staab at Fitchburg State University, which has been merged into the develop branch of WeBWorK.  This interface provides instructors with behavior that feels more like a "google app" instead of the form based interface that we have been  used to since the mid 2000's.  Peter began work on this project during WeBWorK::Rochester::2012 held a year ago June.

One of the early outcomes was "ClasslistEditor3" which has been available as an option in both release/2.7 and release/2.8.  The current version includes the ClasslistManager (renamed and improved from ClasslistEditor3) and HomeworkManager which combines the duties of the Library Browsers, the HomeworkSetsEditors(1&2) and the Instructor tools page. The HomeworkManager's library browsing functions are built on the experience gained from the prototype LibraryBrowser2 and LibraryBrowser3 which were written by David Gage.  All of these tools have been available for testing in their embryo form on previous releases, but they have now progressed to the point where they can usefully speed up many standard instructor tasks.

WeBWorK::Rochester::2013 allowed Peter to explain in person his work and his vision to several of the other core WeBWorK developers. (Peter has not been able to attend any of the code camps since last June.)  We now have a clearer idea of what has to be done to finish the transition.  We were able to make significant strides in improving reliability during the code camp itself but much more remains to be done.

The net effect of using ClasslistManager and HomeworkManager is that instructors can manipulate classlists -- add students, change passwords, or homework assignments -- create, assign, etc. immediately.  The updates of these changes to the back end server are done asynchronously and are invisible to the user.

At the moment the develop branch is fairly wild.  Some actions don't behave as you expect or as they should;  there are many features of the older editors and browsers that have not yet been implemented in the new interface. In some cases things that work fine on small sets or classes slow down drastically when the scale is increased. We expect that it will take many months before this develop branch is ready for use on a regular basis.

On the upside -- the student interface is not affected, and so far at least there is no affect on stored data.  Since the old editors are still available one can simply switch to them for features that are not yet implemented and then switch back to the new "managers" for their added convenience on tasks where they work well.

One other thing we need to watch out for.  The new javaScript interface will initially be a step backward as far as localization (translation in other languages) is concerned.  We will be enlisting all the help we can for the translating effort but there is a lot of new and quite different code that has to be internationalized.  Similarly we are concerned about whether accessibility is helped or hurt by the switch to interactive apps.  We are using standard libraries, all of which are concerned with accessibility issues, but it will take time and we look for a lot of constructive feedback to preserve the gains in accessibility that we achieved between release/2.5 and release/2.8 and insure that these gains are not lost in this next release (most likely to be called WeBWorK3 ).

For those helping with development:

  1. submit bug fixes and small feature tweaks to the release/2.8 branch
  2. submit new features to the develop branch

In all cases make sure that your are in sync with the branch you will submit to before you
send a pull request.  If the commit does not merge cleanly it will be returned for more work before it is even reviewed.

-- Mike

Categories: Planet WeBWorK

WeBWorK::Vancouver - June 27 - 30, 2013

Wed, 07/17/2013 - 09:51
Hi again,

Close on the heels of our participation Sage Edu Days comes the code camp at Vancouver.

We had a significant number of first time participants at this code camp:  Alex Jordan and Chris Huges, Portland Community College; Liz Brauer, ECE department at Northern Arizona University, Nandor Sieben, Math Dept at Northern Arizona University; Nora Franzova, Langara College, Vancouver; Aori Nevo, Stevens Institute of Technology, NJ.  One of the purposes of these code camp is to widen the pool of developers who feel comfortable making contributions to the WeBWorK code base.

Additional guests dropped in for part of the code camp: Davor Cubranic, Statistics dept at UBC; John Hsu, Center for Teaching, Learning and Technology at UBC; and Steven Wittens, developer of MathBox.

The remaining participants were Anneke Bart, St. Louis University; Robert Beezer, U. of Puget Sound; Mike Gage, U. of Rochester; David Gage, U. of Waterloo; Djun Kim, Myplanet Digital; Arnie Pizer, U. of Rochester and John Travis, Mississippi College.

Here are a few highlights from the code camp:

  • Yoav Freund and Matt Elkerj from UCSD gave a presentation via Skype on using webwork and machine learning to discover patterns in the past_answer log that indicate that a student is floundering and to step in before this occurs with additional scaffolding. They have a video on you tube at  https://www.youtube.com/watch?v=yYqKaYckjO8 which presents this very well. There is clearly a lot more that can be done but this is a very intriguing start.
  • Greg Kraus from NCSU gave a presentation on the accessibility of WeBWorK including both strengths (of which there are many -- especially when using MathJax) and weakness that can be improved. He has an initial document at 
    • https://docs.google.com/a/ncsu.edu/document/d/1n1aUjAxRqAxxwfUUCf0uAj923f5QokpFu-fYUvJJPcU/ listing specific items that can be fixed in the presentation layer.  
      • If you would like access to this document (and in particular if you might have time to work on some of the fixes) please write Greg (greg_kraus) at ncsu.edu.
    • Aori Nevo has already started preliminary work on this and contributed a few patches to github.
    • Alex Jordan and Chris Hughes from Portland Community College report that their IT/accessibility team is delighted with WeBWorK particularly compared to MyMathLab. I've asked them to write a blog post on their findings when they get a chance.
  • Steven Wittens gave a marvelous demonstration of MathBox, a mathematics presentation tool built on top of three.js which allows you to "show" not explain. Examples of a similar presentations are at:
  • David Gage created a package for Vagrant which allows you to set up a development site for WeBWorK on your own computer in about 5 mouse clicks and in 5 minutes. Watch David's blogpost for more details. 
  • David Gage and Aori Nevo worked on a prototype white board that allows many students to draw and the drawings are echoed on the instructors board. It's built with web components which simplifies the code. There is a lot of potential here. 
  • John Travis and Jason Aubrey presented two different ways in which Sage and WeBWorK can interact.
    • JT has a number of examples of using sage as an applet (sagelets?). The technology is available in WeBWorK-2.7 (the current master branch) 
    • Jason has added a macro that will take a program written for Sage (essentially in python) and ship it off to the sage engine to be processed and to return an answer. You might use this to symbolically integrate a function which WeBWorK would not be able to do. (This is available in release/2.8 and develop branches). 
    • Both of these approaches integrate WeBWorK and the sage cell server being developed by Jason Grout and others. The technology works very well once all the connections are set up. It could still use some work with graceful failure and error reporting when one or the other of the webservices is not connecting properly.
  • Alex and Chris also worked on the surprisingly difficult problem of correctly checking factored polynomials in the context of algebra and pre-calculus. It's difficult because one does not want to accept mathematically equivalent answers (e.g. unfactored polynomials) but the exact definition of simplified form is not well defined. (is 2x+1 correct? or 2(x+1/2). How about 2x+2 and 2(x+1)?). They are using Sage as one approach to the answer. It also gave rise to some serious but amusing questions about factoring polynomials over finite fields as possible approaches to the solution. I'm sure the algebra/pre-calculus students will be thrilled.
  • Mike and Nandor added code that makes Chromatic.pm much more portable. (Chromatic requires a compiled C program in order to check coloring on graphs.) This should make Nandor's graph theory questions (in the NAU sublibrary) much more widely available.
  • Nora was able to convert the entire placement test for Langara College into WeBWorK format.
  • Liz was adding to her collection of Electrical engineering problems (in the NAU subsection of the OPL). Thanks to Davide Cervone we are dealing successfully with the use of j as the representative of the square root of minus one. :-)
  • There were additional tweaks to the Library Browser, the OPL and also to MathView -- the very recent HTML5 based equation editor which is

Thanks to all who participated in another very successful code camp.  And our particular thanks
to Nora Franzova at Langara College and to Djun Kim from UBC/Myplanet Digital  for making all of the local arrangements.

Those who will be at MathFest in Hartford, Connecticut this August should drop by the WeBWorK
exhibit (part of the MAA exhibit) and say hi to John Travis and any other WeBWorKers who show up.

-- Mike

Categories: Planet WeBWorK

Sage Edu Days 5, June 19 - 21, 2013

Fri, 07/05/2013 - 08:43
Thanks very much to the folks at Sage and at UTMOST for inviting us to participate in the Sage Edu Days 5 in Seattle, WA  June 19 - 21.  Jason Aubrey, Mike Gage and John Travis from the WeBWorK team participated.  This is the third year that we have collaborated with Sage to augment the interaction between the two software applications.

As a result we have a new macro file "sage.pl" which simplifies the creation of sagelets -- plugin interacts that augment the power of WeBWorK questions.  In addition Jason Aubrey created AskSage(), a new subroutine which allows WeBWorK to query an instance of sage to have an expression evaluated.  These provide two different mechanisms for  providing high level CAS support to WeBWorK questions by remotely accessing a sage cell server.  The sage cell server has been under development by Jason Grout and the rest of the Sage team over the last three to four years.

The new sage interaction features are available in WeBWorK  release/2.8 which is now "on deck" in the webwork github site:   https://github.com/openwebwork/. Release/2.8 is undergoing final testing and bug squashing before being merged into the "master" branch.   To try it out you will want to use  the branch release/2.8 of both webwork2 and pg.  These are available by simply executing "git fetch" on an up-to-date installation of WeBWorK.  (See Github   and  release/2.7 for details.) While you are at it you should download the new changes to webwork-open-problem-library and run OPL-update to update the library database so as to incorporate the improvements made at the WeBWorK OPL workshop in Charlottesville, VA earlier this month. Preliminary release notes are available at http://webwork.maa.org/wiki/Release_notes_for_WeBWorK_2.8

More refinements and many more examples demonstrating the new sage interaction features are expected from the upcoming work at WeBWorK::Vancouver June 27-30  and the PREP13 model course workshop in Washington, DC, July 10-13.

Release/2.7 was incorporated into the "master" branch on June 15, 2013.  The separate 2.7 branch on the openwebwork site will soon be removed.

-- Mike
Categories: Planet WeBWorK

WeBWorK::AnnArbor, June 1-3, 2013

Thu, 06/06/2013 - 13:58
Hello everyone.

We've completed another successful three days of concentrated development at the WeBWorK::AnnArbor code camp hosted at the University of Michigan.

As a result  we have a new translation of WeBWorK into Chinese, a new data/database model that will support new and oft requested WeBWorK features, continued work on our collection of turnkey modelCourses and a new version (2.7) of WeBWorK that will become WeBWorK's stable release in a few days.  We also have documentation of the upgrade path for existing WeBWork installations using the SVN repository to the Github repository so that existing installations can take advantage of the new features and bug fixes and more.

Read more »
Categories: Planet WeBWorK

Achievement Items

Tue, 05/21/2013 - 12:07

Hello everyone,  Geoff Goehle here on Mike's blog (again).  I wanted to write a post about a new feature which should be coming to the develop branch sometime.  Its the ability for the achievement system to reward students with "items" which they can use to change the parameters of their homework in a limited fashion, i.e. extend a due date or get partial credit on a question. I'll say more about what items are below, and will leave off with a quick description of how they are implemented.  
Read more »
Categories: Planet WeBWorK

Answers, Themes and Essays, Oh My!

Fri, 04/05/2013 - 19:04
Hello everyone.  Geoff Goehle on Mike Gage's blog again.  Mike wanted us all to write a bit about what we got done at WeBWorK::Raleigh.  My time was split up between several different projects: adding comments to essay answers, modifying the Show Past Answers page to be suitable to students, and creating the math4 theme. I will talk about  each after the break.
Read more »
Categories: Planet WeBWorK

WeBWorK::Raleigh -- March 7-11, 2013

Wed, 03/13/2013 - 21:06
WeBWorK developers from across the US and Canada gathered in Raleigh, NC to work on polishing new WeBWorK features -- some for immediate release and some for later.  The event was hosted at North Carolina State University.  Alina Duca, a faculty member of the NCSU mathematics department, handled local arrangements.  Thank you Alina.

The mathematics department building, SAS Hall, is truly gorgeous, well equipped, light and airy.  I think it's the nicest facility we've used so far at a code camp.

There were a lot of exciting developments. The details will be rolled out over the next couple of weeks as we create thorough descriptions for each feature.

Read more »
Categories: Planet WeBWorK

Math Achievements and WeBWorK

Thu, 02/21/2013 - 19:06
Now that WeBWorK version is making its way onto more and more servers, I (being Geoff Goehle from Western Carolina University) wanted to write a bit about a new feature available to professors that want to add a bit of fun to the homework process.  WeBWorK instructors now have the ability to create and award "Math Achievements" and "Math Levels" to students for solving homework problems and for practicing good WeBWorK behavior.  In a nutshell, students can earn achievements by meeting preset goals.  For example, they might earn an achievement for solving 3 homework problems in a row without any incorrect submissions, or for solving a problem after taking an 8 hour break.  Earning achievements and solving problems earns students points and after a student gets enough points they will be given a new "Math Level".  After the break I will talk a bit more about what the achievements are and go into detail about how to enable them, modify them, and even create your own achievements.
Read more »
Categories: Planet WeBWorK

Essay Answers in WeBWorK

Fri, 09/28/2012 - 13:39

Hello everyone,
Geoff Goehle here, writing on Mike's blog.  This post is to advertise a new upcoming feature in WeBWorK, the ability to write and grade “essay” or “discussion” style questions.  Quite a few WeBWorK problems already contain open ended questions, but because answers to these could not be graded by a computer they were not recorded. Now the “Pgessaymacros.pl” macro provides the ability to record these answers and present them to the instructor for manual grading. Follow the jump to see a demonstration of essay answers in action. Read more »
Categories: Planet WeBWorK

Internationalization of WeBWorK -- A Call for Help

Sat, 07/07/2012 - 07:03
First  a short news item:  Those not in the US have long remarked on the confusion caused by due dates such as:   06/07/2012   for their students.  Is that the 7th of June or the 6th of July that the homework is due?   

Danny Glin from the University of Calgary (and one of the participants at WeBWorK::Rochester::2012 code camp) has come to the rescue and created the ability to customize the format for dates for your site or for your course.

The customization takes place in the conf/ localOverrides.conf or if you want to customize only one course  the course.conf file.  The new software is available in the webwork repository at github.com/openwebwork/webwork2-dev.  

Thanks, Danny.

This fix is currently part of the 2.5.1 beta version of WeBWorK which will be issued as a stable release some time in late 2012.  It is already pretty stable and is being used successfully at many sites this summer.  Eventually we'll make it possible to choose common time formats from the course administration page, but we'll take this one step at a time.

And this brings me to the larger issue of this post.

WeBWorK is going international.  We already have much of the WeBWorK interface localized so that commands appear in any of several languages such as French, Spanish, Turkish and English.  (Localization is software-speak for presenting the user interface in the local language, with the local timezones and the local manner of expressing dates, currencies and so forth.)  

The project is far from  completed in these languages (if you switch to languages other than English on the course configuration page you will still notice that some of the buttons and links still appear in English) but there has been significant progress.  Much of this progress is thanks to the initial work by Ben Walter and his colleagues at the Middle East Technical University in Northern Cyprus. Since then Grant He with some help from me has continued to markup large parts of the current code base
so that the "strings" can be individually translated and presented in any language.  Those using old versions of WeBWorK can see the internationalization effect for themselves by using the demo courses at https://hosted2.webwork.rochester.edu/webwork2/maa101, (maa102, etc) and using profa for login and profa for the password.  

To finish this task and change the internationalization of WeBWorK from its current proof-of-concept stage to a finished and polished product  will take a focused and sustained effort.  The initial burst of progress came from massive and enthusiastic effort from a few people, but to  make sure that every phrase has been marked for translation and that every translation has been checked for colloquial accuracy will require more organization.

This is what I think will be required:  (1) We will need people to volunteer to work to translate phrases from English to their native language.  (2) We will need one or two people who are familiar (or willing to become familiar )  with the perl language who will continue to mark up old (and sometimes new code) to make sure that all strings, including commands, buttons, warning strings, directions and so forth are properly marked up so that the strings can be sent to the translators.

 (3) Most importantly we'll need an Internationalization Coordinator, one person or two people working together, who will  be the central organizers for localization.  The Internationalization Coordinator will recruit translators, see that they have up-to-date lists of strings to be translated, (bug them until they get around to translating them) and then place the translated strings into the WeBWorK releases so that new languages or upgraded translations for old languages are available for all users of WeBWorK.

 Volunteers interested in helping WeBWorK thrive and grow internationally by serving for a term as the Internationalization Coordinator should contact Mike Gage (gage@math.rochester.edu) or  Jason Aubrey (aubreyja@missouri.edu)  The Internationalization Coordinator has duties similar in many ways to that of a a journal editor, although probably not as time consuming.

While the central organizing job does not involve a lot of time (it's mostly about making it possible for others to do work) it does need to be done on a steady and sustained basis.  For example when new translations come in they need to be promptly placed where they can be downloaded to update active sites. This is both for the sake of WeBWorK students and to encourage the translator to review their work and make corrections by giving them rapid feedback.   I've been fulfilling this role to some extent, but while a lot might get done over one  short period other WeBWorK issues will distract me, submissions will pile up and the whole translation process slows down. This job needs a person who can take it on as their mission, make it the focus of their attention for a year or so and then pass it on to someone else.

Preliminary instructions for the translator job are at http://webwork.maa.org/wiki/Instructions_for_translators.  Translating is a task that many people can contribute to in their spare time with the Internationalization Coordinator keeping track of what is
left to be done.  The best software I've found so far for this job is the open source Poedit java applet described on the wiki page above.

Marking up the code using the CPAN  Localization::Maketext::Simple package is a slightly more technical job that can be done well by undergraduates with some supervision.  Preliminary instructions about using the CPAN module can be found linked to http://webwork.maa.org/wiki/Localization. Those writing new interface code for WeBWorK should also look at this page and include the "maketext()" markups as they write the new code in order to ease the work load of the code mark up crew.

There is general information on the localization process on the wiki at http://webwork.maa.org/wiki/Localization.

Writing or translating homework problems into other languages is a separate project which is  closely tied to the new Open Problem Library project.  We currently know of collections of problems in French, Spanish and Turkish that we hope to include in the OPL.  As the number of problems, and the number of languages increases this project will undoubtedly require its own coordinator.  Some have already remarked that it will be interesting to compare calculus homework problems across countries since even calculus problems will probably have cultural differences as well as linguistic ones.

-- Mike

Categories: Planet WeBWorK

WeBWorK Open Problem Library 3.0

Fri, 07/06/2012 - 19:46

As Djun Kim mentions in his post the National Problem Library, having grown beyond one language and one country, is now the WeBWorK Open Problem Library (or OPL for short).

Adding problems in new languages,  allowing publishers to include their problems in the library and improving the search facilities so that you can find the type of problem you want faster than you can write it yourself are going to required a dedicated effort.

Schemes need to be devised for attaching metadata to the problems (automatically when possible) and software for weeding out near duplicates needs to be developed.  In addition we need procedures for new submissions that both makes it easier to submit your favorite problem or your fix of a problem with errors but also allow for a system of checks and balances that guarantees that the submitted problems meet certain standards.

Since we will probably never all agree on what makes a "high quality" problem we also need some kind of rating mechanism that will help instructors find the problems that fit their course and teaching style.

It's a tall order.

Fortunately a few members of the WeBWorK community have volunteered to take the lead in devising OPL 3.0 which will meet all of these criteria.  They are Djun Kim at University of British Columbia; John Jones, who was involved in creating the original NPL, at Arizona State University; Dick Lane at University of Montana, George Jennings at California State University at Domincan Hills and Tyler Dzuba, a science librarian at the University of Rochester with experience in metadata and digital library design.  Anyone else interested in working on the project should contact one of these leaders.

Some of the early discussion is already taking place on the webwork-devel mailing list
( http://webwork.maa.org/mailman/listinfo/webwork-devel ).  As consensus emerges summaries will be posted on the wiki in the section for developers for further comments.  (A search of OPL should bring up most of the relevant information.)

Thanks very much Djun, John, Dick, George and Tyler for taking the lead in this important project.
Improving the usefulness of the OPL is one of the most requested features that has come up in our surveys of WeBWorK users.

The library group is just the first team arising from our intent to bring focus to the various active projects being developed within the WeBWorK community:

My next post will concern our attempt to bring focus
to the "internationalization" or as it's called in software speak "localization" effort for WeBWorK.  This involves making the WeBWorK application itself work in a many languages in a convenient and sustainable way and the solicitation of WeBWorK problems written in many languages.

-- Mike

Categories: Planet WeBWorK

Summary for WeBWorK::Rochester::2012

Mon, 06/18/2012 - 11:02
Summary for WeBWorK::Rochester::2012   

The WeBWorK::Rochester code camp, focused on user interface improvements, was held at Rochester from June 6th through June 9th, 2012.  It was a great success.  This was the first working gathering of WeBWorK developers since our summer 2007 meeting at AIM (American Institute of Mathematics); we hope it will kick start a spate of development over the summer on the look and feel of WeBWorK.  In conjunction with PREP courses last summer and two additional code camps this summer, we hope to flatten the learning curve significantly for new users of WeBWorK and to improve the overall usability of the system.

We have a lot to report, including significant progress in WeBWorK interface design, new and developing infrastructure procedures for supporting WeBWorK users and developers, discussion about the social structure of the openWeBWorK development community, and a report on our collaboration with the Teaching Open Source organization through their POSSE workshop at RIT.  

Oh yes -- and since WeBWorK now has contributions in more than one language and from several countries -- we changed the name of the National Problem Library to the WeBWorK Open Problem Library (WOPL) or Open Problem Library for short.  More on that later -- it was quite a discussion!

If you are really impatient, you can stop reading and go explore the new stuff, bugs and all, at https://hosted2.webwork.rochester.edu/webwork2/maa101 (or maa102, etc). Sign in as profa and use profa as the password.  Use your iPad!!!! -- it’s not pretty yet but it works!!!

Below we’ll first describe the daily progression of the code camp for those who weren’t there, and especially for those who haven’t participated in previous code camps.  They are intense experiences.  A lot can get done; it’s hard work, but it’s also fun and satisfying.  

We’d like to encourage others to plan and hold local code camps to work on aspects of WeBWorK that they would like to develop.  No permission is needed from any central WeBWorK authorities, but those of us who have been doing this for a while will be glad to help out in any way we can.  Let us know.

At the end of this note we’ll list specific accomplishments (deliverables :-) ) for the week.

As a last item before describing our meeting, here is the list of WeBWorK events scheduled to  take place this summer and fall.  We hope to see you at one or more of them. Keep track of the events section in the wiki (http://webwork.maa.org/wiki) for new additions.

  • WeBWorK::Clinton - June 20-22, 2012 (John Travis)
  • WeBWorK Consultants Workshop - August 1, 2012 (Arnie Pizer)
  • Mathfest Exhibit Presentations - August 2-4, 2012 (John Travis and Jason Aubrey)
  • WeBWorK::Winona - August 5-8, 2012 (Jason Aubrey and John Travis)
  • MAA JMM Mini Course - January 8-10, 2013 (Joint Math Meeting in San Diego ) (Jason Aubrey and John Travis)

Read more »
Categories: Planet WeBWorK

Creating an RPM for WeBWorK

Wed, 08/10/2011 - 20:56
Chris Tyler gave us the outline of the procedure for creating an RPM for fedora (and relatives). Similar procedures can probably be followed for ubunutu.  How does the creation of .dmg files for MacOS compare?

Here is the outline:

  • (1) run rpmdev-setuptree to create ~/rpmbuild and subdirectories

  • (2) place the source code in ~/rpmbuild/SOURCES

  • (3) cd ~/rpmbuild/SPECS

  • (4) create a skeleton spec file: rpmdev-newspec NAMEOFPACKAGE

  • (5) edit the spec file as appropriate

  • (6) build the package: rpmbuild -ba *.specfollowed by links to some tutorials:

  • http://fedoraproject.org/wiki/How_to_create_an_RPM_package
    ------------------------------------------------Since we have tarballs on sourceforge  grabbing the WeBWorK files is fairly straightforward.  Because we have been training the WeBWorK community to use svn in order to obtain just-in-time bug fixes, the tarballs have fallen a bit behind the current code base and our rpm will be a bit out of date.  This should not be too bad however since using svn after installing the package will update the code. (It will not however load any new CPAN modules that are required.)
    The biggest problem was finding corresponding names for the CPAN modules that are required by WeBWorK.  There is a reasonably up-to-date list in webwork2/bin/check_modules.pl which is used to troubleshoot new webwork installations. Replacing :: by -  and  prepending   perl- to the cpan package name worked in most cases to find the fedora package.  Documentation is at http://fedoraproject.org/wiki/Packaging:NamingGuidelines#AddonPerl
    The naming scheme will be different in other distros.  Is there a tool for translating package names from one distro to another?

    We'll try building this later today on the england.proximity machine.  Preliminary attempts were blocked with errors which we'll try to work through.  One downside to this current procedure seems to be that you'll need half a dozen computers and operating systems to create packages for distribution.  Presumably this could be done on a virtual machine.

    Categories: Planet WeBWorK

    Downloading and compiling firefox.

    Wed, 08/10/2011 - 04:57
    Building Firefox from the nightly build.

    This is a slightly scary operation, but it turned out alright (I think). Following instructions
    at https://developer.mozilla.org/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites
    I first grabbed the libidl autoconf213 yasm tools using macports. This project stalled because of conflicts with an existing installed item and I had to deactivate it. (/usr/local/bin/prove -- a command line tool for running tests agains Test::Harness).

    The scary part is that it rebuilt perl 5.8 and then built perl 5.12 as well. I depend on the perl defined in /opt/local/bin to run the webwork server running on my laptop! I had to stop that server while I was compiling (it caused another conflict similar to the one for prove) but after firefox was built the webwork server started up again. (whew). The build took about an hour and produced NightlyDebug.app

    Categories: Planet WeBWorK