Source coding:
The messages are compressed in the transmitter side, such that the recovery is possible in the receiver side.
Channel coding:
Redundancy is added to the information in the transmitter side, such that the receiver can correct errors due to transmission over a noisy channel. Thus reliable communication is possible between the transmitter and receiver.