Nate Foster is an Associate Professor of Computer Science at Cornell University. The primary goal of his research is to develop languages and tools that make it easy for programmers to build secure and reliable systems. Professor Foster’s current work focuses on the design and implementation of domain-specific programming languages for software-defined networks. In the past, he has worked on bidirectional languages (also known as “lenses”), database query languages, data provenance, type systems, mechanized proof, and formal semantics. Professor Foster received a Ph.D. in Computer Science from the University of Pennsylvania, an MPhil in History and Philosophy of Science from Cambridge University, and a B.A. in Computer Science from Williams College. His awards include a Sloan Research Fellowship, an NSF CAREER Award, a Most Influential POPL Paper Award, a Tien ’72 Teaching Award, a Cornell Engineering Research Excellence Award, two Google Research Awards, a Yahoo! Academic Career Enhancement Award, and the Morris and Dorothy Rubinoff Award.
Software-Defined
NetworkingCornell Certificate Program
Request More Info
Overview
In today’s networking environment, where networks are ubiquitous and many boxes provide various types of network functionality, software-defined networking (SDN) frees network architecture from constraints and expands opportunities for customization. With SDN, network administrators can separate the control plane from the data plane, opening doors to new innovation across industries.
In this certificate program, you will develop practical skills in SDN. By learning foundational concepts, you’ll be able to build your first SDN in a hands-on programming environment. You’ll also get practical experience optimizing the flow of data using SDN. Finally, you’ll explore how you can use SDN to monitor a network and utilize middle boxes to scale a network up and out. With a deeper control of SDN, you can improve your network's packet throughput, uptime, and overall efficiency, making crucial strides for your team. By the end of this program, you’ll be able to verify network properties with SDN and expand opportunities for your work as well as your career.
To be successful in this program, you should have basic Python programming knowledge (CS1) as well as the ability to graph data structures, make API calls, and access libraries.
You should also understand how networked applications work, including packet switching, basic network, and transport layers. This knowledge is required for context to appreciate the concepts and modules in the certificate program. It will also be beneficial for you to have experience doing socket programming using OS APIs or configuring network routers/switches, etc.
You’ll have six months to complete the required elements for this certificate program, but this flexible approach allows you to finish sooner based on your schedule.
Traditional networks offer limited capabilities to observe current conditions and control forwarding paths. Software-defined networking (SDN) is a fresh approach that provides direct control over network-wide behavior. By implementing standard functionality using both approaches — e.g., shortest-path forwarding — the differences between traditional networks and SDN become clear.
In this course, you will delve into the fundamental concepts of SDN, opening the doors to a world of programmable networking. Traditional networks have been constrained by fixed protocols, making them rigid and challenging to adapt. SDN changes this paradigm by allowing you to program both the control plane and the data plane. You’ll begin by exploring the historical context of network design as well as the ideas that paved the way for SDN, including systems like Ethane, which introduced programmable network-wide security policies.
Moving forward, you will explore essential SDN components like the P4 programming language and the network information base (NIB), enabling you to implement and manage network-wide algorithms and protocols effectively. Through this course, you’ll gain valuable foundational knowledge and skills to build on throughout your career, equipping yourself with the terminology and knowledge needed to navigate the world of SDN.
To deliver on service-level agreements, networking professionals know they must continuously manage and optimize their networks. An SDN-enabled network can be managed through software, making network optimization more efficient, flexible, and granular.
In this course, you will use SDN to optimize the flow of data through a network. You’ll identify how network paths affect performance and use SDN to implement optimal traffic engineering. Finally, you’ll examine operational considerations for SDN-based traffic engineering. The knowledge and skills you gain will help you leverage SDN to ensure network traffic flows as efficiently as possible from one network node to another.
To make critical decisions for their teams and clients, networking professionals need real-time data to understand how their network is functioning. Using SDN, you can capture real-time data and integrate it into a network’s control plane to enable network automation and efficient scaling.
In this course, you will gain the skills you need to understand a network’s status. You’ll use SDN to get visibility into a network and detect changes in network conditions. You’ll also implement network telemetry with SDN. Finally, you’ll explore how to integrate monitoring data into the control loop. With these skills, you’ll understand how to assess the status of a network and apply these teachings to your projects.
Scaling an SDN-enabled network often requires the integration of new physical boxes such as load balancers, content caches, firewalls, and intrusion detection systems into the network. In this course, you will explore how to customize routing to integrate network functions.
With SDN, you can program your network to offload some network functionality to these boxes, giving you the ability to orchestrate the flow of packets through a pipeline of middle boxes. You will discover how to scale up network functions by offloading to hardware and scale out applications using SDN and network functions.
Network monitoring is historically focused since it enables networking professionals to view and analyze what has happened in a network. Conversely, network verification is future focused since it enables network professionals to predict what could happen in a network based on a specification.
In this course, you will specify SDNs in terms of high-level intents. You’ll then practice verifying SDNs using static and dynamic techniques. By the end of this course, you’ll have the skills you need to better understand how networks are verified, adding to your toolkit for informed application of software-defined networking.
Request more Info by completing the form below.
How It Works
- View slide #1
- View slide #2
- View slide #3
- View slide #4
- View slide #5
- View slide #6
- View slide #7
- View slide #8
- View slide #9
Faculty Authors
Mina Tahmasbi Arashloo is a postdoctoral researcher working with Professors Nate Foster and Rachit Agarwa in the computer science department at Cornell University. Dr. Arashloo received her Ph.D. in computer science from Princeton University, where she was honored to have Professor Jennifer Rexford as her advisor. Prior to Princeton, she earned her B.Sc. degree in Computer Engineering from the Department of Computer Engineering at Sharif University of Technology, Iran. Dr. Arashloo’s research is primarily focused on networked systems, with an emphasis on software-defined networking (SDN) and programmable data planes. She has recently been focusing on how to exploit programmability to create networks that are verifiably robust across the stack, from the protocols themselves down to the switch and network interface card (NIC) hardware that processes packets.
Key Course Takeaways
- Differentiate between traditional distributed networks and centralized SDN approaches to network architecture
- Identify how network paths affect performance
- Implement optimal traffic engineering with SDN
- Detect changes in network conditions and implement data-monitoring and collection techniques
- Customize routing to integrate network functions
- Verify SDNs using static and dynamic techniques

Download a Brochure
Not ready to enroll but want to learn more? Download the certificate brochure to review program details.
What You'll Earn
- Software-Defined Networking Certificate from Cornell Bowers College of Computing and Information Science
- 80 Professional Development Hours (8 CEUs)
Watch the Video
Who Should Enroll
- Network administrators and architects
- Network engineers and operators
- Aspiring SDN engineers
- Enterprise network system installers
- System administrators and integrators
- Solutions designers
- DevOps teams
- NFV technologists

“Completing a program from eCornell really has allowed me to think outside the box at work. It gave me the confidence I needed to take a seat at that table and say I am ready.”

“eCornell gave me the confidence I needed to take a seat at the table and say: I’m ready.”
- View testimonial #1
- View testimonial #2
Request Information Now by completing the form below.

$3,750
Software-Defined Networking
| Select Payment Method | Cost |
|---|---|
| $3,750 |


