About OpenDSA: Open Source Interactive Computer Science Instruction

[Click on any of 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.

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.

Indexing KA Exercise Huffman Tree Exercise

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 opendsa@cs.vt.edu 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 Activity

See here for a list of papers and presentations about the OpenDSA project.