This course provides an introduction to the languages used to program computer networks. It will examine recent proposals based on logic, functional, and distributed languages, as well as tools for establishing correctness using automatic solvers, model checkers, and proof assistants. Topics covered will include classic Internet routing protocols, along with peer-to-peer, overlay, enterprise, datacenter, and software-defined networks. Students will get hands-on experience through a series of small exercises using the Frenetic language for software-defined networks, and the Mininet network simulator.
Join the class mailing list: [email protected].