Code Monkey home page Code Monkey logo

algovisualizer's Introduction

algovisualizer's People

Contributors

tonymin avatar jxr98 avatar uupuna avatar irisb5 avatar bjhbbbjh avatar mhaboali avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

algovisualizer's Issues

[FEATURE] visualize DFS search

User Story:
As a: User

I want: to visualize depth-first-search on a graph

So that: I can observe the behavior of DFS algorithm

[FEATURE] Default graph

User Story:
As a: user

I want: to start off with a default graph to use for simulation

So that: I can spent less time on creating the environment for simulation

[BUG]

Describe the bug
There's a bug with the function connectNodes() in class ForceSimulationGraph.

To Reproduce
Steps to reproduce the behavior:
modify the update function in class ForceSimulationGraph (line 123 from self.connectNodes(self.link.source,self.link.target); to self.connectNodes(0,2);)

Expected behavior
node0 is connected to node2

Screenshots
line123

Additional context
nope

[FEATURE] generic graph

User Story:
As a: developer

I want: a graph model for visualization with ability to modify traverse the graph

So that: I can build simulation models for search algorithms

[TEST] Test for svg_graph.js

The following module/function/system need to be tested:

Let's think how we can test this module.

Might be tricky since part of the module interfaces with D3 library and there's graphical parts to it.

[FEATURE] Sorting algorithm visualization

User Story:
As a: user

I want: to simulate the following sorting algorithms

  • insertion sort
  • binary insertion sort

So that: I can learn how these algorithms work and differ from each other

[FEATURE] Delete nodes/edges

User Story:
As a: user

I want: be able to delete nodes and edges in the graph

So that: I can remove unwanted parts of the graph

[TEST] Jest does not allow HTTPS imports

The following module/function/system need to be tested:

We cannot test anything that depends on D3 since we are using HTTPS imports. This caused some core visualization modules to go untested. We need to find a way to unit test these core modules

[FEATURE] Visualize BFS search

User Story:
As a: User

I want: to visualize breadth-first-search on a graph

So that: I can observe the behavior of BFS algorithm

Modify UI of the index page

Describe the issue or proposal here:

I want to reorganize the index page. The model is this.

Screenshot/mock-up:

indexPage

Will finish Mar 14, 2023

[FEATURE] Test coverage report

User Story:
As a: developer/product manager

I want: to know the test coverage of my product

So that: I can identify potential areas of weakness in the system

[FEATURE] Automated deployment

User Story:
As a: developer

I want: to automatically deploy the website with latest changes.

So that: I can see the changes live in action

[FEATURE] Modeling edge weight

User Story:
As a: user

I want: the graph model to support edge weights

So that: I can study the impact of edge weights on algorithm behavior

[BUG] More than one link can be formed between two nodes in the log pannel.

Describe the bug
More than one link can be formed between two nodes in the log pannel.

To Reproduce
Steps to reproduce the behavior:
just draw a line between two nodes for 2 times.

Expected behavior
Only one link can be formed between two nodes. svg_graph class will check if a link already exists before creating a new one.

Gonna finish in about an hour.

[FEATURE] Pseudo random number generator (optional)

Native JS does not offer pseudo RNG.

We may want to have pseudo RNG so it is available when we want to generate deterministic random tests and random simulation environments.

Main criteria for the RNG:

  • near uniform distribution
  • high performance, assuming RNG will be called many times

[FEATURE] return to the last state

User Story:
As a: user

I want: to return to the last state when I accidentally click to create a circle

So that: I don't need to start again

[FEATURE] Log panel

User Story:
As a: user/developer

I want: to have a text panel where I can see status reports of the simulation and diagnostic information (as developer)

So that: I can see additional information about the current and past state of the simulation

[UI] labeling for array visualizer

Add the following APIs for labeling in array visualizer allowing developers to add labels to describe their visualization:

  • Title label
  • Left end label
  • right end label
  • legend labels

[TEST] A* testing

The following module/function/system need to be tested:

unit testing needed for A*

[FEATURE] Automated unit testing

User Story:
As a: Developer

I want: to have my unit tests run automatically on code check-in

So that: I can observe that no bugs were introduced by my commits

[UI] Main page UI proposal

Describe the issue or proposal here:

Please propose a design for the main page UI

Screenshot/mock-up:

[FEATURE] Grid graph view

User Story:
As a: algorithm developer

I want: use a grid graph as the simulation setting with well defined coordinate system

So that: I can easily define heuristic function based on Manhattan distance or Euclidean distance. Otherwise, it is difficult to define heuristic functions on a generic graph.

[FEATURE] setup UI testing

User Story:
As a: developer

I want: to setup regression testing for the UI

So that: I can ensure my new changes work as expected and does not alter existing functionality unexpectedly

[DOC] TODO checklist

  • graph algorithm: best first search
  • graph algorithm:
  • sorting: merge sort
  • sorting: quick sort
  • tree: 大小堆

[UI] [DOC] Subpage descriptions

For each algorithm simulation, we should include short descriptions on:

  • What is the algorithm
  • Instructions on how to use the simulation
  • What to expect? E.g. a legend, meaning of colors
  • Time/space complexities

Should do this for:

  • BFS
  • DFS
  • A*
  • Dijkstra's
  • sort algorithms

[FEATURE] Array visualization

User Story:
As a: developer

I want: a visualization model for array data structure

So that: I can use this model to show additional information for algorithms that uses array internally

[UI] Consistent UI for DFS/BFS and minor changes

Describe the issue or proposal here:

BFS and DFS are very similar algorithms, their UI should be consistent as well

  • Maybe its easier to do layouts if UI elements are described in HTML instead of generated dynamically in JavaScript
    • e.g. SVG, log panel
    • also helps to reduce amount of code
  • Try to make UI look nice, for example but not necessarily limited to:
    • centering the elements
    • Compact input text fields instead of a long input field
    • Show boundary for SVG so user knows where the interactive region ends
    • something other than a white background? it looks kind of bland

Screenshot/mock-up:

[FEATURE] A* search

User Story:
As a: User

I want: to visualize A* search on a graph

So that: I can observe the behavior of A* algorithm

[DOC] Context diagram

I want to know more about:

How the software system is organized.
Which modules are designed.
Which modules are 3rd party.

[FEATURE] Best first search

User Story:
As a: User

I want: to visualize best first search on a graph

So that: I can observe its behavior

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.