A light and simple Audience Response System


A light and simple Audience Response System


I developed ARSino in Autumn 2017 and used it in the academic year 2017-18 at Newcastle University. More info on the history in the blog post of the same title. ARSino is made of two main components: the Presenter’s Console and the Audience interface. The former is used by the presenter to activate the question he’s seeking answer to and to show the bar graphs of responses. The latter is used by the audience to answer/vote and get some feedback on their actions. For the creation of the questions themselves, I have not created any interface as the database components of web2py allow the ease manipulation of tables, which also includes the creation of questions.

Presenter’s Console

This is designed to be displayed on a large screen, typically via a projector. Expected resolution is Full HD, but works well on somewhat lower ones. To keep things simple, when the question is first shown, all the bars are present, but with 0%. The presenter would ask the audience to vote and then refresh the page (standard browser function, such as ctrl+R) to see the page populated with the most recent data. I often refreshed a few times, just to make sure we captured also the later votes. But you might want to do it only once after a good time, to prevent peer-influence on the voting. As you can see in this screenshot, the following question was not easy for the students (note that although by then I had explained polarisation P and the d33-mode of operation, I had not mentioned stacked actuators, so the students had only a few minutes to “invent” the multilayer stacks):

Inventing the piezoelectric multilayer stack actuators

The presenter’s interaction with ARSino happens via the Menu item visible just under the title (“Questions in session”). It’s a drop down menu where all the questions assigned to the current session (1207A in this case) are displayed and can be made active. The ARSino controller (as in Model-View-Controller) will search the database for such questions and populate the menu automatically. The allocation of questions to a session is done with the web2py database interface. Without a hope to fully explain this here, this is the list of tables specific to ARSino:

  • db.domanda (holds the questions)
  • db.sessione (holds session codes with scheduled date and brief description)
  • db.OdG (associates session to questions and some statistics)
  • db.risposte (holds all the responses to all questions/sessions)

The audience Interface

The audience is given a short url (perhaps using a link shortening service) that points to ARSino. The first screen they should see is:

and once they touch the text box:

As you can see, I’ve tried to optimise the interface for the mobile phone as this is how students are asked to interact with ARSino (yes, there are some dangers in inviting students to switch on their mobiles!). I’ve actually removed a lot of the good CSS and javascript that web2py adds to pages for portability, because I was worried about bandwidth and latency (in class we cannot waste minutes for webpages to load!). Also note that we are using session cookies to remember what session the member of the audience is attending (key if more sessions are run contemporaneously from the same server) and that he has replied. Next they would see the active question:

Note that there are some issues with styling for long questions as they don’t all fit, however scrolling is possible and the full question is shown at the same time on the big screen. Once the student makes a choice (by tapping on the desired line/button), he receives an acknowledgement and a reminder of his response:

Responding more than once is not allowed:

The source code in the form of web2py web app is available in github. A test site is hosted at the audience interface is here and the presenter’s console is here (login as with password arsino).

Note: I use the pronoun he, with no prejudice to the actual gender of the person I’m talking about. I think the use of (s)he or he/she etc. is way too cumbersome.

Michele Pozzi
Engineer and scientist


ARSino is a light and simple ARS powered by web2py and Python