Modern design techniques for embedded, wireless, and mobile computing systems. Unified approach to hardware and software design. Partitioning of systems into hardware and software. Hardware/software interface design. Trade-offs in hardware and software partitioning.