Managing networks is complicated and it is not easy to configure devices correctly. Software Defined Networking (SDN) is a new network paradigm that has the promise to provide a unified single control framework. SDN has been a hot area in networking and many companies are investigating adopting it in their network infrastructures; for instance, Google has deployed SDN within its own data centers. This course explores SDN and investigates how to enforce security policies using SDN in various application domains. The course includes a semester-long group project. Project topics range, depending on students' interests, from system programming to programming language design and formal verification.