We design and evaluate algorithms and protocols, on top of given constructive network coding schemes, so as to fully exploit the network coding capabilities over wireless networks. We propose the joint optimization of video streaming, rate control, and error correction, together with the underlying network coding mechanisms. We first study video streaming over coded wireless networks. In such a scenario, network codes should be selected so as to maximize not only the network throughput but also the video quality. We propose video-aware opportunistic network coding schemes that take into account the importance and deadlines of video packets. Second, we study rate control and scheduling. The key intuition is that network coding introduces network coded flows and new conflicts between nodes, which should be taken into account both in rate control and scheduling. In particular, TCP flows do not fully exploit the network coding opportunities due to their bursty behavior and the fact that TCP is agnostic to network coding. In order to improve the performance of TCP flows over coded wireless networks, we propose a network-coding aware queue management scheme. Finally, we combine inter- and intra-session network coding (I2NC). Our scheme, I2NC, provides resilience to loss thanks to the error-correcting capabilities of intra-session network coding. Furthermore, it allows intermediate nodes to operate without the knowledge of the decoding buffers at their neighbors.