Parallel Program Editor

John Reese, CS 139c Project 1997

The goal of this project is to build a graphical editor for parallel programs. The editor will make it possible to lay out process topologies and edit process code from a graphical, heads up topological view, which in many cases is a more natural and higher level way of approaching concurrent programs. It will produce code for mcc, a parallelized version of C developed at Caltech by Marcel van der Goot.



The project will be implemented using the Perl/Tk toolkit.


My original project proposal, converted to HTML.


  1. 4/8/97: create a Perl/Tk based framework on which to build the editor.
  2. 4/11/97: create a prototype of the icons representing processes and develop code in the framework to manipulate them (i.e. to move them and so on).
  3. 4/15/97: add code to parse mcc files and generate the process icons from the function prototypes.
  4. 4/18/97: add ability to edit code and update process icons based on results. Ideally, it should be possible to do this asynchronously (i.e., keep editing in the tool while the text editor is open).
  5. 4/25/97: add interface.
  6. 4/28/97: create a prototype of the lines representing channels connecting processes, and code in the framework to support them (drawing, matching port types, redrawing as icons are moved).
  7. 5/5/97: add code to create a process skeleton builder from the channel layout.
  8. 5/12/97: add code to output a makefile.
  9. 5/19/97: create code to manipulate process interfaces graphically (changing number, names of channels).
  10. 6/2/97: work out a scheme for concealing more complex topologies behind process-like icons (hierarchy).

Implementation Journal

Source code

Tarball of the final project