Software-defined networking deals with the state of the art in modern network programming and management. Applications (network apps) can be written for networks as pieces of software that is compiled and run network elements such as switches. A main motivation for SDN is that this software can be managed, changed and upgraded centrally at runtime. Based on the basics of networking (e.g. "Communication Networks 1"), aspects of SDN architecture, SDN programming languages and network virtualization applications are covered and deepened in this lecture.