The course provides the students with the fundmentals of digital communication system design. The student is first introduced to the main components of a digital communication system. The course then addresses the problem of sending one bit optimally over an additive white gaussian noise channel. The obtained results and learnt lessons from the simple case are then generalized in case of sending more bits. Complexity management techniques are then investigated for a simpler system implementtion followd by an analysis for using more spectrum efficient wave forms. Finally, using orthognal modulation with memory is studied.