OpenDSA: Open Source Interactive
Data Structures and Algorithms

OpenDSA logo

Click on the images to try things out.

Welcome to the homepage for the OpenDSA Active-eBook Project. We have created infrastructure and materials to support courses in a wide variety of Computer Science-related topics such as Data Structures and Algorithms (DSA), Formal Languages, Finite Automata, and Programming Languages.

OpenDSA materials include many visualizations and interactive exercises. Our philosophy is that students learn this material best when they engage the material and then practice it until they have demonstrated their proficiency. This page shows a sampling of screenshots (if you click on a screenshot, you will be taken to the actual artifact). In the same way, a given visualization or exercise could be incorporated individually into an instructor's own web pages.

But these visualizations and exercises were designed to be integrated with explanatory tutorials, with the basic unit of instruction being a "module". A module is a single HTML page, corresponding to a single section in a textbook, or a single topic that might be part of a lecture. Modules are collected together to form an OpenDSA "book instance". Book instances can be integrated into courses in the Canvas LMS.

For instructors, we have support for making assignments and tracking your students' progress through the material. Materials are created using the OpenDSA authoring and configuration tools.

There is a short online "course" available for people who want to learn how to use OpenDSA to teach a class or how to develop and contribute content to OpenDSA. There is an OpenDSA book instance and also a series of four short video presentations.

If you would like to contribute to our open-source project, please take a look at our Contributor's Guide.

OpenDSA materials are continuing to increase and improve. Already, our project includes:

We accomplish this through an open-source, creative commons environment. "Open Source" means that not only can anyone use the materials, they can also access the source code that generates the materials. "Creative Commons" means that anyone has permission to modify or remix the materials for their own purposes. You as an instructor (or even a student or professional who wants to self study) will be able to pick and choose from the selection of modules and exercises, automatically generating a custom textbook that contains exactly the topics you want. Since all materials are open source, you can rewrite any part if you don't like what is already there. Infrastructure will be included that lets you register students and then track their progress through the modules and exercises.

A major complaint of students in DSA classes is that they do not get enough practice problems, or sufficient other means of testing their proficiency. One of the most important aspects of our vision is a rich set of exercises to ensure that the student understands the material as he/she progresses through the book. Our modules will contain a mix of content, visualizations, and exercises. We make extensive use of the Khan Academy exercise infrastructure to build interactive exercises.

Khan Academy Exercise Huffman Coding AV

For more details on our project infrastructure, status, and issues, see our GitHub Organization and our main development repository. Our OpenDSA Piazza Forum contains discussions among project participants. Contact us at . if you would like to become involved. You can also see our materials for potential contributors.

If you are a new developer on the project, see the OpenDSA developer's Getting Started Guide. Further documentation for the OpenDSA infrastructure is available here.

Shellsort Performance

OpenDSA-Related Publications and Presentations

  1. V. Karavirta and C.A. Shaffer, Creating Engaging Online Learning Material with the JSAV JavaScript Algorithm Visualization Library (DOI, PDF), to appear in IEEE Transactions on Learning Technologies, 2016.
  2. E. Fouh, S. Hamouda, M.F. Farghally, and C.A. Shaffer, "Automating Learner Feedback in an eTextbook for Data Structures and Algorithms Courses" (site), in Challenges in ICT Education: Formative Assessment, Learning Data Analytics and Gamification, Santi Caballé & Robert Clarisó, eds., Elsevier, 2016.
  3. T. Farnqvist, F. Heintz, P. Lambrix, L. Mannila, and C. Wang, Supporting Active Learning by Introducing an Interactive Teaching Tool in a Data Structures and Algorithms Course, in Proceedings of the 47th ACM Technical Symposium on Computing Science Education (SIGCSE 2016), 663-668.
  4. S. Hamouda, Enhancing Learning of Recursion PhD Dissertation, December 2015.
  5. N. Maji, An Interactive Tutorial for NP-Completeness, MS Thesis, May 2015. Defense presentation
  6. E. Fouh, Building and Evaluating a Learning Environment for Data Structures and Algorithms Courses, PhD Dissertation, May 2015.
  7. E. Fouh, D.A. Breakiron, S. Hamouda, M.F. Farghally, and C.A. Shaffer, Exploring students learning behavior with an interactive eTextbook in Computer Science Courses (DOI), Computers in Human Behavior 41, (December 2014), 478-485.
  8. E. Fouh, V. Karavirta, D.A. Breakiron, S. Hamouda, S. Hall, T.L. Naps, and C.A. Shaffer, Design and architecture of an interactive eTextbook - The OpenDSA system (DOI, PDF), Science of Computer Programming 88, Special Issue on Software Development Concerns in the e-Learning Domain, 1(August 2014), 22-40.
  9. A. Korhonen, T. Naps, C. Boisvert, P. Crescenzi, V. Karavirta, L. Mannila, B. Miller, B. Morrison, S.H. Rodger, R. Ross, and C.A. Shaffer, Requirements and Design Strategies for Open Source Interactive Computer Science eBooks, in Proceedings of the ITiCSE Working Group Reports Conference on Innovation and Technology in Computer Science Education - Working Group Reports (ITiCSE-WGR'13), Canterbury, England, UK, July, 2013, 53-72.
  10. V. Karavirta and C.A. Shaffer, JSAV: The JavaScript Algorithm Visualization Library, In Proceedings of the 18th Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE 2013), Canterbury, UK, July 2013, 159-164.
  11. S. Hall, E. Fouh, D. Breakiron, M. Elshehaly, and C.A. Shaffer, Evaluating Online Tutorials for Data Structures and Algorithms Courses, Proceedings of the 2013 ASEE Annual Conference & Exposition (.pdf, presentation), Atlanta, GA, June 2013, Paper #5951.
  12. A.M. Paul, QBank: A Web-Based Dynamic Problem Authoring Tool, Masters Thesis, Virginia Tech, June 2013. Defense presentation
  13. D.A. Breakiron, Evaluating the Integration of Online, Interactive Tutorials into a Data Structures and Algorithms Course, Masters Thesis, Virginia Tech, May 2013. Defense presentation
  14. E. Fouh, D. Breakiron, M. Elshehaly, T.S. Hall, V. Karavirta, and C.A. Shaffer, OpenDSA: using an active eTextbook to teach data structures and algorithms, poster abstract appears in Proceedings of the 44th ACM Technical Symposium on Computer Science Education, SIGCSE 2013, Denver, CO, March 2013, 734.
  15. E. Fouh, M. Sun, and C.A. Shaffer, OpenDSA: A Creative Commons Active-eBook, a poster presented at SIGCSE 2012, Raleigh, NC, March 2012.
  16. C.A. Shaffer, V. Karavirta, A. Korhonen and T.L. Naps, OpenDSA: Beginning a Community Active-eBook Project in Proceedings of 11th Koli Calling International Conference on Computing Education Research, November 17-20, 2011, Koli National Park, Finland, 112--117.
  17. C.A. Shaffer, T.L. Naps, and E. Fouh, Interactive Textbooks for Computer Science Education in Proceedings of the Sixth Program Visualization Workshop, June 30, 2011, Darmstadt, Germany, 97-103.
Team members


For more information, or to get involved, please contact Cliff Shaffer at .


NSF Logo

The OpenDSA Project is supported by the National Science Foundation (see more).