Cloud Computing has changed the landscape for software developers over the last several years. With the expansion in scale of our systems, the expectations of our users has grown in proportion. The level of responsiveness and resiliency required by modern cloud-based applications has strained our standard "one logical thread" approach to software. This approach provides a simplification for the software developer, but it can fall short in the face of a cloud based environment and often doesn't fully utilize the underlying hardware. This course will cover Reactive Programming and the tenants of the Reactive Manifesto using Java 8, with supplementary material for Java 7. We will examine the use of the RxJava Reactive Extension's asynchronous model, and learn to apply it in order to create scalable, responsive, and resilient applications that are well behaved, even while in failure modes.