The project [algorithm-visualizer](https://github.com/algorithm-visualizer) consists of the following 3 repos.
-[algorithms](https://github.com/algorithm-visualizer/algorithms) contains public algorithms shown on the sidebar.
-[tracers](https://github.com/algorithm-visualizer/tracers) builds visualization libraries for each supported language based on the specifications, and executes users' codes to extract visualization data.
-[algorithm-visualizer](https://github.com/algorithm-visualizer/algorithm-visualizer) contains the frontend server written in React and the backend server written in Node.
## Directory Structures
### algorithms
-**Category A/** is the name of the category.
-**Algorithm A/** is the name of the algorithm.
-**code.cpp** is the implementation of the algorithm in C++.
-**code.java** is the implementation of the algorithm in Java.
-**code.js** is the implementation of the algorithm in ECMAScript.
-**README.md** is the description of the algorithm.
-**Algorithm B/**
-**Algorithm C/**
- ...
-**Category B/**
-**Category C/**
- ...
### tracers
-**bin/** is where executables are written to.
-**docs/** is where library documentations are written to.
-**src/** contains source codes.
-**common/** contains commonly used files.
-**executables/** contains the source codes of executables.
-**languages/** builds visualization libraries and defines how to execute users' codes for ...
-**cpp/** ... C++.
-**builder/** builds a visualization library based on the specifications.
-**skeleton/** provides the skeleton of the visualization library.
-**executor/** defines how to execute users' codes.
-**java/** ... Java.
-**js/** ... ECMAScript.
-**specs/** defines the specifications.
-**randomizers/** contains the specifications of randomizers.
-**tracers/** contains the specifications of tracers.
**NOTE** that for ECMAScript, it builds a web worker rather than a visualization library. Once browsers fetch the web worker, they will submit users' codes to the web worker locally, instead of submitting to the remote backend server, to extract visualization data. It not only enables browsers to visualize ECMAScript codes quickly, but also significantly reduces the load on the backend server.
@@ -11,12 +12,18 @@ Learning algorithms from text and static images is quite boring. For that, there
## Contributing
The project [algorithm-visualizer](https://github.com/algorithm-visualizer) is composed of the following 3 repositories.
**I want to add or improve an algorithm.**
- We have a separate repository for public algorithms. Check out the [contributing guidelines](https://github.com/algorithm-visualizer/algorithms/blob/master/CONTRIBUTING.md) in [`algorithms`](https://github.com/algorithm-visualizer/algorithms) repo.
**I want to improve the UI.**
- Check out the [contributing guidelines](https://github.com/algorithm-visualizer/algorithm-visualizer/blob/master/CONTRIBUTING.md) in this repo. The [directory structure](https://github.com/algorithm-visualizer/algorithm-visualizer/blob/master/PROJECT_DETAILS.md#algorithm-visualizer) might be helpful as well.
*[algorithm-visualizer/algorithms](https://github.com/algorithm-visualizer/algorithms): contains public algorithms shown on the sidebar. [Contribute](https://github.com/algorithm-visualizer/algorithms/blob/master/CONTRIBUTING.md)
**I want to enhance visualization libraries.**
*[algorithm-visualizer/tracers](https://github.com/algorithm-visualizer/tracers): contains visualization libraries written in each supported language. [Contribute](https://github.com/algorithm-visualizer/tracers/blob/master/CONTRIBUTING.md)
- It is highly recommended to read the entire [project details](https://github.com/algorithm-visualizer/algorithm-visualizer/blob/master/PROJECT_DETAILS.md) before working on it. Making changes to visualization libraries often requires quite a lot of work since you may need to work on all of 3 repositories: [`algorithms`](https://github.com/algorithm-visualizer/algorithms), [`tracers`](https://github.com/algorithm-visualizer/tracers), and [`algorithm-visualizer`](https://github.com/algorithm-visualizer/algorithm-visualizer). We encourage you to raise an issue about your idea of enhancement before working on it.
*[algorithm-visualizer/algorithm-visualizer](https://github.com/algorithm-visualizer/algorithm-visualizer): contains the front-end written in React.js and the back-end written in Node.js. [Contribute](https://github.com/algorithm-visualizer/algorithm-visualizer/blob/master/CONTRIBUTING.md)
**I have a question in regards to contributing.**
Take a moment to read `CONTRIBUTING.md` in the repository you want to contribute to.
- Raising an issue is another way of contributing!