meant that the class was written using a basic set of skeleton code. Polymorphism based definitions Polymorphism is an ideology that follows with the object oriented programming paradigm, where methods can be overridden or overloaded (methods with the same name in a child class which will take priority over a method written in a parent class). The definition of methods is based on a skeleton framework defined by the syntax of the language. Very similar to class implementation, skeleton code can be used to define the methods that are part of an interface. An interface is essentially a blueprint of a class, which allows for strict object oriented languages (such as Java) to use classes from different packages without the need to fully understand the internal functions. Interfaces simply define the methods that have to be present within the class, allowing anyone else to use the methods or implement the class for their personal needs. public skeletonExample(); An abstract class is almost the same as a class implementation, however depending on the language, at least one method is defined as abstract. This implies that any children of this class (any classes that extend or implement) need to have a method defined for this. Abstract classes have a very similar definition style to interfaces, however a keyword ‘abstract’ is typically used to identify the fact that it needs to be implemented in child classes. public abstract skeletonExample(); These examples use the Java syntax. Parallel programming Parallel programming is the operation of multiple functions simultaneously most commonly used to increase efficiency. These are typically the hardest types of programs to develop, due to their complexity and interconnectedness with the hardware in question as well. Many developers have attempted to write programs with this core functionality, however this has been met by varied results. Algorithmic skeleton frameworks are used in parallel programming to abstractly describe the methods in question for later development. The frameworks are not limited to a single type, and each of these types have different purposes to increase the efficiency of the developer's program. These can be categorised into three main types: data-parallel, task-parallel and resolution. Data-Parallel These skeleton algorithms are used to develop programs that work on large data based software, usually identifying the connections between data for later use. Data parallel algorithms include ‘maps’, ‘forks’ and ‘reduces’ or ‘scans’. ‘Maps’ are the most commonly used data parallel algorithms,