Telefona gönder: Fundamentals of codes, graphs, and iterative decoding