OpenDSA: Open Source Interactive
Data Structures and Algorithms
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-reltated topics such as Data Structures and Algorithms (DSA), Formal Languages, Finite Automata, and Programming Languages.
OpenDSA materials include many visualizations and interactive exercises. Our primary philosophy is that students learn this material best when they engage them material and then practice it until they have demonstrated their proficiency. This page shows a sampling of screenshots (and 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".
- Here is an example book instance that shows off some of the most polished material.
- Here is an example book instance for a typical Data Structures and Algorithms course taken after a traditional CS2 course.
- Here is a book instance that shows all of the exisiting modules, including ones that are not fully ready for classroom use.
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:
Nearly two hundred instructional modules, where each
module is the equivalent to one topic, such as one sorting algorithm,
corresponding to a couple of pages in a standard textbook.
Each module is of textbook quality.
An "eTextbook" can be created from any
collection of modules,
as defined by
an editable configuration file,
making it easy for an instructor to create a custom textbook for a
Every algorithm or data structure is illustrated by an
interactive algorithm visualization. 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.
Every module contains multiple interactive assessment activities
that give students immediate feedback on their proficiency with the
This means many hundreds of exercises.
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.
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.
OpenDSA-Related Publications and Presentations
- E. Fouh, S. Hamouda, M.F. Farghally, and C.A. Shaffer, "Automating Learner Feedback in an eTextbook for Data Structures and Algorithms Courses", to appear in Challenges in ICT Education: Formative Assessment, Learning Data Analytics and Gamification, Santi Caballo, ed., Elsevier, 2016.
- 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.
- S. Hamouda, Enhancing Learning of Recursion PhD Dissertation, December 2015.
- N. Maji, An Interactive Tutorial for NP-Completeness, MS Thesis, May 2015. Defense presentation
- E. Fouh, Building and Evaluating a Learning Environment for Data Structures and Algorithms Courses, PhD Dissertation, May 2015.
- 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.
- 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.
- 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.
- 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.
- A.M. Paul, QBank: A Web-Based Dynamic Problem Authoring Tool, Masters Thesis, Virginia Tech, June 2013. Defense presentation
- 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
- 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.
- E. Fouh, M. Sun, and C.A. Shaffer, OpenDSA: A Creative Commons Active-eBook, a poster presented at SIGCSE 2012, Raleigh, NC, March 2012.
- 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.
- 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.
For more information, or to get involved, please contact Cliff Shaffer at .
The OpenDSA Project is supported by the National Science Foundation (see more).