Edgy is an extension of Snap supporting graph algorithms. It provides blocks for creating and manipulating collections of nodes and edges. Many important algorithms apply to graphs, such as Dijkstra's shortest path algorithm, Prim's minimal spanning tree algorithm, the Ford-Fulkerson max flow algorithm. Right-click on any block inside Edgy for documentation.
These and many other examples are available from the File→Examples menu in Edgy.
Sequence, selection, repetition
Students can learn about programming by observing the execution of Edgy code. As the program runs the graph display is continuously updated. Force-directed layout is fun to watch, as each new node arrives from the side and shuffles other nodes out of the way.
This is a classic river-crossing puzzle. We represent each possible configuration as a bit vector, where 0011-1 corresponds to the situation where husband2 and wife2 have crossed over with the boat, leaving husband1 and wife1 behind. We build the state graph and use depth- or breadth-first search to find a path.
Programming with Edgy
A gentle introduction, Programming with Edgy, is available, with video tutorials and exercises. Once you've mastered Edgy, it's easy to transition to Python, since there's almost a one-to-one mapping from Edgy blocks to Python statements.
Edgy development was sponsored by a grant from Google Australia to Steven Bird at the University of Melbourne, and implemented by Mak Nazečić-Andrlon and Jarred Gallina. Jason Nguyen is the current developer. Charlotte Wilson and Steven Bird developed the introductory video tutorials. Edgy has benefitted from testing by teachers and students of VCE Algorithmics.