In this work, we study the role of feedback in systems that use network coding, with emphasis on three aspects - congestion control, queue management, and decoding delay. We develop the theory required to incorporate network coding into the present-day congestion control framework. More specifically, we propose a new interpretation of acknowledgments (ACKs) that allows the receiver to acknowledge every unit of information received, even if it does not reveal an original packet immediately. The new ACKs fit naturally within the existing framework of the TCP/IP protocol stack and provide a clean interface between TCP and network coding. This enables easy deployment of network coding in practice. We analyze the queuing behavior of a system that employs such ACKs in conjunction with random linear network coding. The new ACK mechanism can also be used to extend the Automatic Repeat reQuest (ARQ) algorithm in a natural way, to a packet erasure broadcast channel scenario. We show that with this approach, the queue size at the sender tracks the true backlog in information between the sender and the receivers. We also study feedback-based adaptation of the code in an online manner for reducing the decoding delay at the receivers. The following people have collaborated with me in one or more of the parts of this work: Prof. Devavrat Shah (MIT), Prof. Muriel Medard (MIT), Prof. Michael Mitzenmacher (Harvard) and Prof. Joao Barros (Univ. of Porto).