Graphical user interfaces are now the standard mechanism for communication between users and programs. However, the area of computer programming has been noticeably slow in making the transition to graphical means of presenting information. In this thesis I will investigate some of the possible reasons why graphical user interfaces have been slow to catch on in this area, and present my own C++ source code navigator. I designed the navigator to provide several views on a single program, including a hierarchical organisation of the functions in the program, a display of scope trees, class inheritance graphs, as well as the original source code. The navigator was designed to maximise the programmer's freedom to impose whatever structure they feel is appropriate on their program. This is done through the ability to construct their own organisational hierarchy, the ability to arrange components of the display in arbitrary patterns, and the use of colour coding. The result is an aid to communication of program ideas, as well as aiding the programming process.