Working source for the OpenDSA eTextbook project
Switch branches/tags
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
AV Revised one of the Church encoding slide shows Dec 13, 2018
DataStructures minor touches Dec 10, 2018
Doc Merge branch 'master' of Jun 17, 2018
Exercises Cleanup for Files material Oct 22, 2018
Fig added more introductory content: Basic OO, UML and process. Added con… Aug 8, 2015
JSAV @ 2036c55 Update JSAV version Feb 23, 2018
QBank @ b5e65ef Update QBank, fix C++ support in InsertionsortAV Jun 18, 2014
RST Revised one of the Church encoding slide shows Dec 13, 2018
SourceCode Update CS3 slides, fixes to graph slideshows Nov 29, 2018
Storyboard Move Irena's material to production, other minor cleanups Aug 11, 2018
config undoing change Dec 10, 2018
khan-exercises @ 90eb167 Update khan-exercises submodule revision Mar 29, 2018
lib updated with global ff option Dec 10, 2018
tools necessary changs for ff option Dec 10, 2018
.eslintrc Delint ptrSwapCON, update eslintrc May 29, 2018
.gitignore Add .DS_Store to .gitignore Jun 12, 2018
.gitmodules Removed submodule OpenPOP May 17, 2018
.python-version Update .python-version Nov 2, 2018
MIT-license.txt Minor updates to license, alg anal example Jul 17, 2016
Makefile Add CSCD320 config Sep 22, 2018
OpenDSA.sublime-project Add NewKA book and related files Aug 25, 2015 Tweak yet again Aug 13, 2017
WebServer Update WebServer script to support Windows Jul 27, 2017 Update recurtutor tracing Dec 21, 2015 Update recurtutor tracing Dec 21, 2015 working Jun 7, 2017
howToEnableThirdPartyCookies.html update 3rdParty cookies html page Jan 20, 2016
requirements.txt Add script Jun 7, 2017 update Sep 26, 2015 init Jun 5, 2017

OpenDSA (Development Channel)

This is the development repository for the OpenDSA project.

The goal of the OpenDSA project is to create open-source courseware for use in Data Structures and Algorithms courses, that deeply integrates textbook-quality content with algorithm visualizations and interactive, automatically assessed exercises.


System documentation can be found at


To check out a read-only copy of this repository:

git clone git:// OpenDSA

To check out a read-write copy of this repository (requires permission to commit to the repo):

git clone OpenDSA

Once you have cloned this repository, you will need to initialize and update the submodules and compile some of the libraries. Do the following:

make pull

[Note that this probably won't work unless you have the proper tools installed. See:

In order to pull a more recent copy of JSAV than what is in the submodule:

git pull

The source files for the documentation can be found in the "Doc" directory. Changes to the documentation source, once pushed back to the repository, will automatically revise the public version at You can also re-compile the documentation by going to the "Doc" directory and typing "make". The result will then be in "Doc/manual".

Directory Structure

The major components in the directory structure are as follows:

AV: Source code for various algorithm visualizations and associated exercises. Subdirectories divide the content by topical areas.

Books: Created by the build process, this contains compiled versions of "textbooks".

config: This holds configuration files for specific books (whose output will go to the "Books" directory).

Doc: Documentation. Currently includes a template for Khan Academy multiple choice questions, and documentation for using the various Sphinx directives that we have created.

Exercises: Our Khan Academy Infrastructure-based exercises. Subdirectories divide the content by topic.

JSAV: The JavaScript Algorithm Visualization library (JSAV). This is a submodule for the OpenDSA repository, linked to: Thus, when you check out OpenDSA, you must get the JSAV submodule by either running the command "make pull" or by doing the following: git submodule init git submodule update More information about JSAV can be found here:

lib: System-wide library files

Makefile: Primarily for source file validation and to generate some of the "textbooks" to the Books directory.

MIT-license.txt: The license file. OpenDSA is distributed under an MIT open source license.

ODSAkhan-exercises: Obsolete, will be removed soon. We used to keep our own hacked-up copy of the Khan Academy exercise framework.

QBank: A question bank system under development. This is a submodule maintained at: This file

RST: Contains our custom Sphinx directives used during the build process and the source for tutorial content written in reStructuredText (RST) format and divided by language and sub-divided by topic area.

SourceCode: The sourcecode for code snippets contained in the tutorials. Ultimately, we hope to support code snippets in Processing (a Java dialect), Python, and JavaScript. In this way, instructors would be able to generate versions of tutorials that support any or all of these three languages.

**Storyboard: Materials related to "storyboarding" designs for tutorials. This concept never gained much traction, and this might be removed at some point.

WebServer: A command for invoking a simple python-based web server that will enable you to run the Khan Academy exercises if your machine is not running a true web server. You only need to have python installed for this to work.

khan-exercises: The Khan Academy exercise framework. This is a submodule maintained at: This is a mirror of the actual khan-exercises repository (, that we buffer here for stability.