This project will study point-to-point communication systems where the transmitter and receiver are regarded as parameterized functions (e.g., neural networks) and jointly optimized to improve end-to-end performance. This general approach can be regarded as a special type of (denoising) autoencoder, that learns to (i) protect the transmitted payload data against channel noise and corruptions, and (ii) demodulate the received signal to recover the data. In addition to optimizing communication systems using machine learning, we will also investigate how communication constraints impact the performance of machine learning models that are trained or operate over such systems. Potential applications and use cases include novel joint radar-communication systems, communication systems that are robust against hardware distortions, and distributed machine learning tasks (e.g., federated learning) where learning is performed over bandwidth- and energy-limited links.