Web apps, SPAs, web services, microservices, mobile apps, and Cloud Computing are just a few of the terms people are using to describe emerging technologies for building complex, distributed applications. Protocol standards, web services, open-APIs, increasingly more powerful mobile devices, and the Internet have enabled new possibilities for weaving complex applications using globally-distributed data and computing resources. Application development has largely left any single computer, and is distributed across a wide range of hardware and software platforms. This class will explore these developing technologies and models for structuring their complexity, while building projects that go from mobile to the cloud. Some technologies we will explore include Javascript, Node.js, MongoDB, and various cloud platforms.