Fall 2014

Course info
Previous terms


6.02 only:
* Online grades
* PSets:
* Help queue
* Lab hours
* Staff only

Introduction to EECS II: Digital Communication Systems

Units: 12 (4-4-4)
Prerequisites: 18.03, 6.01. Programming in Python.
Curricular Goal Map

Learning Objectives

An introduction to several fundamental ideas in electrical engineering and computer science, using digital communication systems as the vehicle. The three parts of the course -- bits, signals, and packets -- cover three corresponding layers of abstraction relevant to the system:

  • binary representation, compression (source coding), and error correction (channel coding) for messages transmitted across a noisy link
  • signal representation of binary messages for transmission across a shared physical channel subject to distortion and noise;
  • efficient, reliable communication across networks made up of multiple links.

Topics investigated in depth include:

  • Bits: information and entropy, Huffman coding and LZW compression, error correction with linear block codes and convolutional codes (Viterbi decoding)
  • Signals: Additive Gaussian noise and the relationship between noise variance and bit errors, linear-time invariant channel models, frequency-domain (Fourier) analysis, spectral content of signals and filtering, modulation & demodulation
  • Packets: Media access protocols (TDMA, Aloha, and carrier sense), packet-switched networks, queues, and Little's law; network routing (distance/path vector & link-state protocols); and reliable data transport (adaptive timers, stop-and-wait, sliding windows, round-trip time and bandwidth-delay product concepts).
These topics form the basis of communication systems like the Internet.

The course teaches ideas that are useful in other parts of EECS: abstraction, probabilistic analysis, superposition, time- and frequency-domain representations, system design principles and trade-offs, and centralized and distributed algorithms. The course emphasizes connections between theoretical concepts and practice using programming tasks and some experiments with real-world communication channels.

At the end of the course, a successful student will understand these topics and be able to apply them to the design and analysis of communication systems and networks. In particular, they will appreciate how to build reliable and efficient communication systems: cleverly applying redundancy for reliability and cleverly sharing via multiplexing channels, links, and paths for efficiency.

6 Engineering Design Points.
1/2 Institute Lab.