All projects
No. 83rd place · Expo Ingenierías 2025
Fork/Join DAG Visualizer
Precedence graphs and parallel programming
- My role
- Repository author
- Period
- Aug – Dec 2025
The problem
In parallel programming, a precedence graph says which tasks can run at the same time and which have to wait for others. Turning that graph into FORK/JOIN instructions by hand is mechanical and easy to get wrong, and on paper it's hard to see how the branches progress.
What I built
A JavaFX visualizer, 1,080 lines of Java across 4 classes, that won 3rd place in the Digital Prototype Development category at the August–December 2025 Expo Ingenierías.
- It loads graphs written as adjacency matrices. The repository ships 4 examples, from 3 to 11 nodes.
- It lays out the graph by level: each node sits at the level of its longest path from a root, so tasks that can run together end up on the same row.
- It generates FORK/JOIN pseudocode: a node with more than 1 successor opens a FORK, a node with more than 1 predecessor is a JOIN with its counter (
CONTn := branches), and branches are linked with GOTO. It's pseudocode, not JavaForkJoinPoolcode. - It animates the execution, highlighting nodes and pseudocode lines as each branch advances.
Architecture
Results
The Expo award is the only external result; there are no usage metrics. I published the code on GitHub on December 10, 2025, in 6 commits.
Known limits
- It doesn't check for cycles: if the graph has one, the generator never finishes or crashes (
ForkJoinGenerator.java:69-75). - The paths to the graph files are absolute Windows paths, so it won't run on another machine without editing the code.
- The README promises graph validation and Java Fork/Join code generation, and the code does neither. It needs fixing.
- There are no tests.