This document discusses turbo codes, which are a type of error correction code built by parallel concatenating two convolutional code blocks. It focuses on investigating the iterative decoding of turbo codes. The bit error rate is calculated over multiple iterations of decoding and plotted against signal to noise ratio. Quadratic permutation polynomial and random interleavers are analyzed. Results show turbo codes with a memory of 3 and 1280 bit interleaver achieve the best performance, reaching a bit error rate of 10-5 at -1.2 dB after 10 iterations of decoding.