Configure an OpenDSA eTextbook


OpenDSA is an eTextbook project developed at Virginia Tech. OpenDSA materials include many visualizations and interactive exercises that support courses in a wide variety of Computer Science-related topics such as Data Structures and Algorithms (DSA), Formal and Programming Languages.

OpenDSA has hundreds of visualizations and exercises. Most algorithms and data structures are illustrated by interactive algorithm visualizations. Students could enter their own test cases to see how the algorithm or data structure works on that input, and they can control the pacing of the visualization.

A course instructor who is using the Canvas LMS can add OpenDSA materials directly into their Canvas courses appearing as Modules and Assignments in Canvas. Below are the detailed instructions for how to configure an OpenDSA eTextbook.

Before you begin: If you have not already done so, create an OpenDSA account. You should use the email address that is associated with your LMS. Then send an email to opendsa@cs.vt.edu asking for instructor access.

Once you are provided with instructor access, click on the Create Book menu item located at the top of the page to configure a new eTextbook.


You will be taken to a new page (shown below) where you can create your own Book Instance.

Following is the explanation of each field:

Load Existing Configuration (Optional)

1. Select Reference Configuration: You may select from a number of configuration files that are stored on the OpenDSA server. These can be useful as a starting point for creating your own configuration.

2. Select Your Configuration: If you have created/uploaded a configuration to the OpenDSA server in the past, you may load it and make modifications to it. If you only wish to change the point values of the exercises in the book, you may update the existing configuration directly. If you wish to modify the content of the book (e.g. add or remove modules), you must save your configuration as a new template book.

3. Select Configuration File: If you have a book configuration file (.json), you may load it using this option.

Book settings

These are global settings that describe or apply to the entire book.

  • Title: This will be the title of the book
  • Description: A short description of the book
  • Language: The language of the content in the book. This will determine which modules are available for you to choose from. The vast majority of OpenDSA content is currently only available in English.
  • Code Languages: OpenDSA modules sometimes contain sample code. You may select which languages you wish for these code samples to appear in. If you select multiple languages, the code sample container will have a tab for each language (unless you disable Tabbed Code-include), with the tabs ordered based on how you order the languages in the interface. You may reorder the languages using drag-and-drop. It is important to note that code samples are usually not available in every language, but most code samples are available in Java.
  • Global Exercise Options: These are options that will apply to every exercise.
    • JSAV Debug: This option can be useful for developers of OpenDSA exercises. It enables the debug flag for JSAV exercises, which results in some debugging information being printed to the browser console.
  • Global Slideshow Options: These options will apply to all slideshows, unless explicitly overridden for individual slideshows. Note that these generally should not be changed from Not Required and 0 Points if you are planning to use the configuration for a Canvas course. This is due to current limitations preventing multiple gradable items per Canvas assignment.
    • Required: Whether the completion of the slideshow is required for module proficiency.
    • Points: The number of points completion of the slideshow is worth.
  • Global Khan-Academy Exercise Options: These are options that will apply to all Khan-Academy style exercises, unless explicitly overridden for individual exercises.
    • Required: Whether the completion of the exercise is required for module proficiency.
    • Points: The number of points the exercise is worth.
    • Threshold: The number of questions the student must get correct to achieve proficiency.
  • Global Proficiency Exercise Options: These are options that will apply to all proficiency style exercises, unless explicitly overridden for individual exercises.
    • Required: Whether the completion of the exercise is required for module proficiency.
    • Points: The number of points the exercise is worth.
    • Threshold: The proportion of steps the student must get correct to achieve proficiency. Must be between 0 and 1, where 1 means the student must get all steps correct to achieve proficiency.
  • Global External Tool Options: These are options that will apply to all external tool exercises unless the same settings are specified for the specific external tool, or overridden for a specific external tool exercise.
    • Points: The number of points the exercise is worth.
  • Global Code-Workout Options: These are options that will apply to all Code-Workout exercises, unless explicitly overridden for individual exercises.
    • Points: The number of points the exercise is worth.
  • Other Options: These are simple options that are either enabled or disabled.
    • Build JSAV: Controls whether or not the JSAV library should be rebuilt whenever the book is compiled.
    • Display Module Completion: If enabled, will force the "Module Complete" message to appear even if the module contains no required exercises. If disabled, the "Module Complete" message will not appear, even if the module DOES contain required exercises.
    • Narration Enabled: This controls whether or not a button should be shown for each slideshow that will turn on text-to-speech narration for that slideshow.
    • Suppress ToDo: Controls whether or not TODO messages are displayed. This should generally be enabled.
    • Tabbed Code-include: Controls whether or not code samples are displayed in a tabbed interface. If enabled, it will display code samples in each of the languages selected in Code Languages section (if the code exists) in a tabbed container. If disabled, it will display the code in a single language (the first language for which the code exists with the order of precedence determined by the order specified in the Code Languages section).

Book Content

This two-pane drag-and-drop interface allows you to specify the content that should be in your book. Before you can select the content in your book, you must first either 1) select the book language, or 2) load an existing configuration.

  • The left pane (Included Modules) lists the content that is included in your book.
  • The right pane (Available Modules) lists content that is available to be included in your book.
  • Books are organized into chapters, with each chapter containing one or more modules. You choose the names of chapters, as well as which modules should be included in each chapter.git status.
  • A module may contain zero or more sections, and a section may contain zero or more exercises and/or slideshows.
  • To add a chapter to your book, click the "+ Chapter" button and enter a name for the chapter.
  • To remove a chapter and all of its modules from your book, right click on the chapter, and then click "Delete".
  • To add a module to your book, left-click and hold and drag a module from the Available pane and drop it (release your left mouse button) in the Included pane in the desired chapter. You can select multiple modules by holding Ctrl (Mac: ⌘) and clicking on the desired modules. To select multiple sequentially listed modules, click on the first module, then hold Shift and click on the last module.
  • To remove a module from your book, right click on the module in the Included pane, and then click "Remove".
  • Reorder chapters and modules in your book using drag-and-drop. The order of the chapters and modules in the Included pane will be the order of the chapters and modules in your book.
  • To override the global settings for an individual exercise, right click on the exercise, and then click "Edit Settings".
  • To hide a section in the book, right click on the section, and then click "Hide Section".

Saving Your Configuration

Once you are finished configuring your book you can:

1. Click "Save New Configuration" to save the configuration as a template book to the OpenDSA database. The book will then show up in the list of available books when creating a new course.

2. If you have loaded one of your existing configurations you can click "Update Configuration". You can then update your Canvas course by regenerating it. Note that this option does not support removing chapters and/or modules.

3. Click "Download Configuration" to download a JSON file containing the configuration.