Dynamic Learning: An open-source project to teach effectively using interactive visualisations
Tags: education, visualization, teaching, coding
Published: 2020-10-23 12:42:44

Visualizations are extremely powerful aids in education. If you are familiar with youtube channels like [3Blue1Brown](https://www.youtube.com/watch?v=WUvTyaaNkzM), [Zach Star](https://www.youtube.com/watch?v=3gjJDuCAEQQ), [Minute Physics](https://www.youtube.com/watch?v=tmNXKqeUtJM) or [Physics Videos by Eugene Khutoryansky](https://www.youtube.com/watch?v=BBQXREXV1Rw) (If you are not already, you should probably check them out, they are really good), you can't help but be amazed by how beautifully they explain difficult STEM topics. And this is because they make use of visualizations.

Now imagine a world in which every teacher could teach as beautifully as they do! That is our end-goal and the project that I'm going to describe is a small step towards that.


An open-source [project/community](https://github.com/dynamic-learning) comprising teachers and developers who are genuinely interested in using visualisations to aid their teaching.


If you are also a person who would love to see this, read on. This project would definitely keep you interested. 
 
To begin, I asked myself the most important question:
## How to make a tool that would best help in teaching this way?

For explaining topics in a visual way, teachers can make use of interactive visualizations, visualizations that we can interact with to get real-time responses. The advantage of interactive visualization is it can be used either in live classes or in recorded lessons. Also, students themselves can experiment with them to learn more about the system under study.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ncetra3tymn001buyz0b.gif)

Currently, the web is one of the best platforms for creating and sharing visualizations. There are plenty of tools available for creating them. For this project, I've chosen to primarily work with an open-source javascript graphics library called [p5.js](https://p5js.org) because it is very beginner-friendly, but powerful enough for our needs. There is also an [online web editor](https://editor.p5js.org/jithunni.ks/sketches/npDe92dP_) exclusively made for p5.js where we can very easily code and share visualizations.

I've been thinking about this problem for quite some time now. I want to help teachers teach using visualizations and this is a list of features that I think will help them adopt this teaching methodology.

* Provide with a large repository of interactive visualizations from which teachers can easily browse through and find visualizations for a specific topic.
* The ability to easily bring about whatever modifications that teachers want to, in the visualizations to suit their needs.
* If the visualization that teachers need is not present in the said repository, they should be able to request the community of programmers and collaborate with them to create it. In this way, with time, we will have more and more visualizations enriching the repository.
* A facility where they could organize and keep visualizations for a particular topic (maybe in the form of slides) so that they don't need to create these slides every time they present the same topic. Teachers may also share their slides with other teachers.
* A tool where teachers can write/draw theorems/equations/diagrams and show interactive visualizations simultaneously. 

## How Dynamic Learning fits the bill!

Dynamic Learning is an open-source project/platform that is being developed for addressing these requirements. Let's see what it offers.

* A central repository called [simulation collection](https://dl-next.herokuapp.com/simulations) where we provide a collection of visualizations/simulations that can be added to [lessons](https://dl-next.herokuapp.com/workbook/5f7b2e204f79be001765eda9) prepared by teachers. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/paf1rkbco771rqwdtttg.gif)

* We only have four simulations in the repo now, but an increase in users will inevitably lead to more and more simulations.

* Teachers will request new simulations to the programmer community and collaborate with them to develop more of them from [here](https://github.com/dynamic-learning/simulation-ideas).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ulrx6p3ysxgzrhqlxaqq.gif)

* The simulations are developed and saved in the [online p5 text editor](https://editor.p5js.org/jithunni.ks/sketches/npDe92dP_). The advantage of this is that any time anyone can have access to the code for the visualization.
* Teachers can create a duplicate of the visualization if they want and customize them according to their need if they know how to code (Or they can even get the help of the programmer community for making this change).
* [The workbook creator](https://dl-next.herokuapp.com/workbook/5f7b2e204f79be001765eda9) can be used to organize visualizations into slides. These slides can be saved and shared with the other teachers.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/g6sh6xa0tcac40ftaxdt.gif)

* The workbook creator also has a draw mode using which they can draw, write and add annotations.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dkb17i0ig8kcvdriinu4.gif)

* Teachers can create accounts and save, organize, share the lessons that they create.

The project is under active development and we need your support to improve and make it better.

## How can you contribute?

* Introduce the project to someone you know who is interested in teaching using interactive visualizations or who loves to code interactive visualizations.
* Use Dynamic Learning in your lessons.
* Suggest new STEM visualizations by creating new issues [here](https://github.com/dynamic-learning/simulation-ideas/issues).
* Develop new visualizations, save them in p5 online text editor and share the link, we will add them to the simulations repo.
* Use the application and report bugs here - [front end] (https://github.com/dynamic-learning/next-client/issues), [back end](https://github.com/dynamic-learning/graphql-server/issues).
* Suggest new features in the application.
* Help develop new features.
* Improve the code quality and add test cases in the application.

A lot of work has been put into making it this far. Thanks to all the contributors who helped. Thanks to [Processing Foundation](https://processingfoundation.org/) for developing amazing tools like p5.js and p5.js web editor which inspired me to start the project in the first place. Hoping to find more like-minded people willing to contribute.

If you are interested in contributing. Do leave a comment or contact us at developers@dynamiclearning.io

PS - I've used the terminologies `interactive visualization` and `simulation` interchangeably. They both refer to the same thing at least in the context of this project.

Some useful links-
[Webapp](https://dl-next.herokuapp.com/)
[Sample workbook](https://dl-next.herokuapp.com/workbook/5f7b2e204f79be001765eda9)
[About the project](https://dl-next.herokuapp.com/about)
[Project organization](https://github.com/dynamic-learning)
[Front end source code (NextJS, React)](https://github.com/dynamic-learning/next-client)
[Back end source code (NodeJS, GraphQL)](https://github.com/dynamic-learning/graphql-server)
[Simulation ideas](https://github.com/dynamic-learning/simulation-ideas)
[GSoC 2018 article](https://medium.com/processing-foundation/improving-science-and-math-education-using-p5-js-d434beea465c)
[GSoC 2019 article](https://medium.com/processing-foundation/visualizing-stem-education-with-dynamic-learning-4106748c6fcd)
[Simulation Repo](https://dl-next.herokuapp.com/simulations)