Hello, and welcome to the 2014 version of Software Defined Networking. There are many aspects of the course that are new this year that I wanted to draw your attention to in case you may have heard something about last year's version of the course. One of the changes that we made this year was to have programmer and non programmer tracks for the course. There are many people who are interested in the topic of SDN, but don't necessarily want to participate in all the programming assignments. So to enable participation for that group of students, we have now made it possible to take the class and get a certificate of completion without having to complete all the programming assignments. The way that we've done that is to create two certificates. Completing all the material except for the programing assignments will earn you a certificate of completion. If you also complete all the programming assignments, you'll earn a certificate of completion with distinction. We've also expanded the course to include new material reflecting new topics and changes. There are several new programming assignments. So, the programmer track of the course is going to be a little bit more rigorous. We're adding several new interviews with SDN luminaries, and we've also tried to improve the forum aspect of the course, by integrating with Piazza. As far a new material is concerned, last years course had a very short module on programmable data planes. This is a very active topic of development, and while its safe to say that this topic area hasn't quite matured, there's been a lot of activity over the past year. So we'll expand this module of the course in a full week, and I'll talk about various programmable data plane architectures that are emerging. There will also be a new assignment in the course that allows you to get familiar with some of the problems associated with programmable data planes. Another topic that has been extremely active over the past year is verification. We'll look at various work that's made it possible to verify both the data and control planes in a software defined network. We'll also look at various work that makes it possible to troubleshoot SDNs, and we'll explore various use cases in much more detail. It's safe to say there's been a lot of activity in inter domain SDN over the past year, and I'll expand some of that portion of the course to cover that new material. We'll hopefully also have an interview that covers that new topic. On the topic of interviews, I managed to line up, and am planning new interviews covering various emerging topics, including OpenCloud, verification, more work on STM programming languages, SDN and the data center, and programmable data planes. You'll notice that one major difference between this year's course and last year's course is that this year, the course is eight weeks instead of six weeks. The longer course reflects my desire to flesh out various topics that have become more mature over the past year. The first three modules of the course will largely be the same. We'll start out with history, so motivation for control and data plane separation, and we'll discuss network virtualization as a use case for software defined networking. Much of the new material will be in the last five modules of the course. After covering network virtualization, we'll jump into data plane nuts and bolts. There's been a lot of activity over the past year in various chip sets and hardware architectures to support more programmable data plane, and I'll spend some time covering those recent developments. There will also be a new assignment in this area. With regards to programming SDNs, a lot of the material will be similar to last year in that we'll cover a language called Frenetic and its sister language Pyretic, as well as various languages that have been built on top of Pyretic. Some of those languages have also matured over the past year, and you'll see both update lectures and assignments to reflect the new features that have come about in those programming languages over the past year. We'll then talk about various use cases and applications. Over the past year, various new use cases have emerged or become more mature, and I'll spend some time digging into use cases in quite a bit more detail. There will also be a new assignment focusing on inter domain SDN, which is a particular use case of software defined networking. We'll then move into a full week on troubleshooting and verifying the behavior of SDNs, which is a completely new topic from last year. We'll spend the last week of the course focusing on network functions virtualization, which is another topic that we didn't cover in any detail last year, and we'll also talk about where SDN is going from here, which will obviously be a bit different from last year, and shaped by the developments and insights that have occurred over the past year. I'm really excited to be teaching this new and improved version of the SDN course, and I hope that you enjoy the course as much as a student as I am as your instructor.