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 that 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.
1. Overview: information and entropy. 2. Compression: Huffman and LZW. 3. Errors, channel codes. 4. Linear block codes, parity relations. 5. Error correction, syndrome decoding. 6. Convolutional codes. 7. Viterbi decoding. 8. Noise. 9. Transmitting on a physical channel. 10. Linear time-invariant (LTI) systems. 11. LTI channel and intersymbol interference. 12. Filters and composition. 13. Frequency response of LTI systems. 14. Spectral representation of signals. 15. Modulation/demodulation. 16. More on modulation/demodulation. 17. Packet switching. 18. MAC protocols. 19. Network routing (without failures). 20. Network routing (with failures). 21. Reliable transport. 22. Sliding window analysis, Little's law. 23. A brief history of the Internet. 24. History of the Internet cont'd, course summary.