Course Overview This class will cover recent advances in communications -- software-defined networking (SDN) and network functions virtualization. Networks have traditionally been perceived to be slow moving and ossified entities where the pace of innovation is slow due to long protocol standardization efforts, difficulty in upgrading network equipment, and the ability for operators to offer new custom services to clients. However, there are two recent trends in networking research that are promising a new revolution in networking: Software-Defined Networking (SDN) and Network Functions Virtualization (NFV). In a nutshell, SDN simplifies network management by providing a clean, open interface between networking devices (data plane) and the software controlling them (control plane). NFV offers a complementary angle by by bringing the benefits of now commodity IT virtualisation technology to enable faster “data plane” innovation and the ability to roll out new network services. While the principles underlying SDN/NFV have been around in networked systems for a while, it is only recently that these ideas are fully beginning to take root and are being considered as serious alternatives by some of the prominent industry players. This class will provide both an overview of these two emerging topics with the relevant context for the evolution of these ideas and the key technology enablers and use cases that have been driving these efforts. We will cover a range of perspectives from operating systems, distributed systems, programming languages, to formal verification and algorithms, to identify abstractions that enable these novel network innovations. The class will be primarily based on reading seminal and recent papers on these topics and a hands on research project.