Introduces the foundational theories and technologies of software-defined networking (SDN), a new paradigm in computer networking that allows a logically centralized software program to control the behavior of an entire physical network. Discusses SDN technologies, such as the OpenFlow specification and OpenDaylight controller, and introduces students to SDN applications and network function virtualization (NFV). Offers hands-on exposure to popular open-source software and technologies through student projects. Requires good knowledge of Java or Python.