Applications of Lattice Codes in Communication Systems