Wireless Communications: Algorithmic Techniques