If you choose to do the programming project, your program should be should provide a fully functional implementation of a good graph-drawing algorithm. You are to formulate an input specification for graphs, parse such inputs, and produce a drawing of the graph reprsented.
You should turn in all source code, input test files, and output samples (e.g., screen captures from an applet). You must also turn in a short 2-5 page summary of the algorithm you implemented and the important design choices you made to implement this algorithm.
The specific algorithm you choose must be a non-trivial algorithm for drawing graphs, and you must reference the paper or book where you learned about this algorithm. Some natural places to search for such an algorithm includes the papers cited in the paper review project write-up.