In this dissertation, we study linear programming (LP) decoding of low-density parity-check (LDPC) codes based on the alternating direction method of multipliers (ADMM) technique, or ADMM decoding for short. The decoding of LDPC codes is formulated as an LP model and solved efficiently by the ADMM technique. However, compared with traditional belief-propagation decoding, ADMM decoding suffers from higher complexity and worse error correction performance, which prevents the employment of ADMM decoding in reality.To reduce the complexity of ADMM decoding, we first focus on the simplification of the check polytope projection, the most complex operation in ADMM decoding. We propose an iterative check polytope projection algorithm without the sorting operation. The proposed algorithm converges with the increase of iterations. Moreover, for a fixed number of iterations, its average complexity and the worst-case complexity are linear in the input dimension.Another direction we propose to simplify ADMM decoding is to devise a better scheduling scheme than the standard flooding scheme. We start from the node-wise scheduling scheme which only updates the check node messages with the maximum message residual. Then we simplify the calculation of the message residual and propose a reduced-complexity node-wise scheduling scheme.To improve the error correction performance of ADMM decoding, we propose a novel ADMM penalized decoding algorithm whose penalty term is based on check nodes (CN). We investigate the properties of the CN penalty functions and show several examples. We make conclusions on its convergence properties and prove its failure probability is independent of the transmitted codewords for symmetric channels. Monte-Carlo simulation and the instanton analysis show its better error correction performance in the low and high SNR regions.Finally, we propose a post-processing technique to lower the error floor of LDPC codes. The output of the first stage decoder can be revised if the syndrome is found This is a journey with joys and tears. I encountered many amazing people. They instructed me, helped me, and accompanied me.First of all, I would like to thank Prof. Amir H. Banihashemi for his guidance. His attitudes towards the research and devotion to one specific area are impressive. All these will have a life-long influence on me. It is also a great time working with people in his coding research group. I have a great memory of learning from their presentations.Next, I should thank Prof. Xiaopeng Jiao and Prof. Jianjun Mu from Xidian University. They offered me suggestions both in work and life even if we cannot meet with each other as before. More importantly, their encouragement always made me full of confidence in the future.I would like to thank my committee members. Especially, Prof. Ian Marsland kindly reviewed my draft more than once and helped improve the quality of the dissertation significantly. It is a wonderful experience to discuss with him. Prof. Yongyi Mao spared time from his busy schedule for my defen...