Introducing Design Patterns, Graphical User Interfaces and Threads Within the Context of a High Performance Computing Applicatio