For effective communication to take place between a source and a destination the emphasis lies on the reliable transport of information. Given the constraints of the transport medium, there is much emphasis on the research techniques that allow a good trade off between complexity and performance. Despite the superior performance of turbo product codes, one main concern is the implementation complexity of such systems. With this in mind, in this thesis we present, a reduced complexity decoding algorithm for turbo product codes. This scheme is based on the reduction of the complexity of a soft input soft output trellis based iterative decoder by means of simplifying the trellis structure. We present the details involved in pruning certain branches based on the values of the received channel information and the extrinsic information associated to each branch. We introduce the concept of branch pruning by means of using a threshold, and investigate the methods for compensating for the performance degradation (in terms of bit error rate) in a system where a structural complexity simplification such as trellis pruning is in effect.