1. Introduction

This documentation describes various components of the OpenDSA system. This includes the support infrastructure for authoring OpenDSA modules, information helpful for developing AVs and exercises, documentation for the textbook configuration system (to control which modules and exercises are generated for a specific book instance and how the exercises are scored), documentation for using the front-end (client-side) portion of the logging and scoring infrastructure, and documentation for the back-end (server-side) API and data storage system.

AVs and exercises are typically built using the JavaScript Algorithm Visuailzation library (JSAV). Complete documentation for JSAV can be found at http://jsav.io.

If you are new to OpenDSA, it will help you to keep in mind as you look through this manual that it targets many different use cases. Fortunately, you do not need to absorb everything, because you are probably concerned with only one of several possible roles at any given time. Those roles include:

  1. Content developer: Someone who wants to create or modify modules, visualizations, or exercises. Content developers will want to read the sections on creating content.

  2. Instructor: Someone with a class to manage. If so, you want to read about the instructor tools. If you just want to set up a standard course configuration at Canvas, then you only need to read the instructions at https://opendsa.org. If you want to modify existing content, add new content, or create your own book instance by picking and choosing from the OpenDSA collection of materials, then look at compiling a book instance and the configuration system. [Note that you probably can do most of this with the online configuration system at https://opendsa.org.]

  3. System administrator: Someone who wants to set up their own copy of OpenDSA. OpenDSA separates the front end content delivery server from the back end data collection server. You might want to set up either or both, in which case you should look at the installation guides.

  4. OpenDSA Infrastructure developer: If you want to help to extend the OpenDSA infrastructure, then you will need to understand the details of the part of the system that you are targetting.