In this thesis, some lower and upper bounds on the guaranteed error correction capability of bit flipping algorithms for decoding low-density parity-check (LDPC) codes and generalized low-density parity-check (GLDPC) codes are studied. Two stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600" / ased on the Moore bound is determined. By using the known relations between the expansion of a Tanner graph and the error correction capability, some lower bounds on the guaranteed error correction capability are established. To find an upper bound on the number of correctable errors, the size of sets of variable nodes which lead to decoding failures is studied. A decoding failure is said to have occurred if the output of the decoder is not the transmitted codeword. One of the factors that lead to decoding failures for iterative decoding on the BSC and the additive white Gaussian noise channel (AWGNC) is known as trapping sets. So, to find this upper bound, we consider trapping sets and fixed sets that are a particular case of trapping sets. A Using the same approach as in LDPC codes, some lower bounds on the number of variable nodes that are guaranteed to achieve the required expansion are derived for the case of GLDPC codes. In the regular GLDPC codes, some graphs similar to the cage graphs are defined. An upper bound on the error correction capability is given based on the orders of these graphs. The bounds in the regular GLDPC codes are functions of the column weight and girth of the underlying Tanner graph and the error correction capability of the component-codes. Product coding technique is a method for constructing long powerful codes from shorter ones. In this thesis, we show that product codes can be expressed as GLDPC codes. Because of the importance of trapping sets, we determine the relation between ( a , b )-trapping sets in a given product code and the ( a , b )-trapping sets of its components.