This course reviews software applications used in the automation and programmability of modern networks. Network automation protocols such as NETCONF and OpenFlow as well as platforms such as Openstack are examined. Various scripting methods including Python, awk, Bash and tcl as well as software automation tools like Chef, Ansible and Puppet are demonstrated. The software development life cycle, along with relevant software versioning tools such as Git and Subversion, are also covered. The application of network automation to Software Defined Networks (SDN) is explained. The effect of network automation on operational and financial efficiency are discussed. Current vendor applications are reviewed. Hands-on labs confirm and enhance learning of course topics. Projects and Presentations towards the end with assignments.