Speed Reader

Peter-Michael Osera
University of Pennsylvania


Spritz Animation

Speed reading techniques base on Rapid Serial Visual Presentation (RSVP) have gained popularity recently thanks to a proliferation of speed reading apps such as such as Spreeder and Spreed and companies such as Sprtiz that are bringing speed reading to a variety of devices and platforms. However, while some people espouse the benefits of these apps, their actual effectiveness is questionable as there has been little in the way of substantial research that investigates their effectiveness.

Thankfully, RSVP speed readers are simple applications that we can prototype and play with. In this assignment, students build their own prototype speed reader applications, extend their speed reader in various ways, and then assess the effectiveness of their speed reader by running small-scale experiments on themselves and their friends.



Summary Students build a speed reader that displays text files using Rapid Serial Visual Presentation (RSVP) and test the effectiveness of RSVP by running small usability studies on themselves and their friends. Students practice core CS1 skills (file IO, string processing, graphics) and gain exposure to interface design and evaluation and the science of speed reading.
Topics File IO, string processing, graphics, animation
Audience CS1
Difficulty Intermediate. The core speed reader with several extensions served as a reasonable weekly homework assignment for my summer CS1 course.
  • Relatable: Everyone knows how to read, and most people like reading and wish they could read faster. This is especially true of undergraduates that are likely inundated with required reading while they are working on this assignment.
  • Engaging: After implementing their own speed reader and trying it out, my students were amazed that (after some practice) they are able to read at high WPM rates. They then naturally ask the question "am I actually comprehending what I am reading?" which leads nicely into the evaluation portion of the assignment.
  • Extensible: The basic speed reader is simple to implement. The base program can serve as a lab assignment or in-class exercise. However, various extensions give it more depth. Also, after students try out their speed reader, they tend to brainstorm even more ways to make their speed reader better which gives ample opportunity for bonus credit.
  • Plentiful Data: By design, the speed reader works over plain text so students can pull in data from a variety of sources to test their speed reader, for example, from Wikipedia or Project Gutenberg. The can also convert their own PDFs and ePUBs to plain text using Calibre or a free online document converter.
  • Requires Graphics Libraries: The speed reader itself is a graphical application and requires some way to display text and animation, for example, a GUI or TUI library (examples of which are provided in Python). Skeleton code can alleviate the boilerplate that commonly bogs students down with these libraries, but the application is already fairly small as it is (60-70 lines of Python code) so providing such support may not be desirable.
  • Some Hackiness: Depending on the library used, different tricks are necessary to achieve the effects required for the speed reader. These tricks tend to not be particularly elegant—using monospace fonts in lieu of having a way to measure the size of a rendered string—and may feel fiddly and tedious to the student.
Dependencies A GUI or TUI library to render and animate text, for example, Tkinter in Python, Swing in Java, or an ncurses-equivalent.
  • The evaluation portion of the assignment can be minimized or cut altogether in the interest of time. Note that students will naturally want to know if what they built is actually effective for real-life reading, so it is worthwhile to have some discussion about usability even if you don't make it a formal part of the assignment.
  • The are numerous extensions for students to implement and test on top of their basic speed reader. Some ideas are given in the sample write-up. Some additional ideas:
    1. Indicators for paragraph breaks.
    2. Pruning of citations from Wikipedia article text.
  • Students can also be tasked with creating a more elaborate interface, for example, controls for starting and stopping the reader or changing the font size.