Skip to main content.

General Information

Raouf Boutaba
Office: DC 3532
Phone: (519) 888-4820
See Schedule
Signup on Piazza

Course Overview


Recent advances in virtualization and softwarization technologies are revolutionizing the IT and telecommunications landscapes accelerating their convergence. For instance, the last few years have witnessed the rise of cloud computing, a new computing model that aims at providing resources to applications and services like public utilities such as water and electricity. Cloud computing leverages compute, storage and network virtualization for better sharing of data center resources among multiple tenants and applications offering them infrastructure, platform and software as services following a “pay-as-you-go” model. It has already become a multibillion dollar industry, however many key research challenges still exist, calling for further research. Another instance is the emergence of Software-Defined Networking (SDN) as a means to enable network programmability and faciliate network management. SDN separates a network's control logic from the underlying physical routers and switches and offers an open interface between networking devices and the software controlling them. SDN is already deployed in many data center networks and has the potential to change the entire networking industry in the future. A natural extension of the softwarization paradigm is to encompass the integrated management of network, compute and storage resources, referred to as Software-Defined Infrastructure (SDI). SDI optimizes and dynamically adapts compute, storage and networking infrastructure transforming a static IT infrastructure into a workload-aware environment. In this course we will explore Cloud computing, SDN and SDI through a number of classic and recent papers and a final project, and also get hands on experience with some of the technologies. The goal is to acquire an in-depth understanding of the research issues in these areas including control & data plane, controller design, SDN abstractions, SDN applications, network function virtualization, storage virtualization, middlebox, debugging, fault-tolerance and security and get some hands on experience technologies for building, managing and emulating cloud and SDN evnironments.


Students enrolled in this course will be required to:

  • participate in the tutorials on OpenStack and SDN, and complete hands on assignments.
  • read assigned papers and submit (electronically) a written critical analysis for each paper to be presented in class before noon on the day of presentation,
  • participate in class discussions on assigned readings,
  • make in class presentation(s) of one or more papers from the reading list, and
  • complete a course project individually or in a group.
Students are expected to have a background in networking and/or distributed systems comparable at least to CS 454/654 and/or CS 456/656. Concurrent registration in these courses will probably not be reasonable preparation. Some basic idea about bash like CLI would be helpful but it is not mandatory.


Academic Integrity

Academic Integrity

In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. All members of the UW community are expected to hold to the highest standard of academic integrity in their studies, teaching, and research. The Office of Academic Integrity's website ( contains detailed information on UW policy for students and faculty. This site explains why academic integrity is important and how students can avoid academic misconduct. It also identifies resources available on campus for students and faculty to help achieve academic integrity in and out of the classroom.


A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70 - Student Petitions and Grievances, Section 4,


A student is expected to know what constitutes academic integrity, to avoid committing academic offenses, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offense, or who needs help in learning how to avoid offenses (e.g., plagiarism, cheating) or about rules for group work/collaboration should seek guidance from the course professor, academic advisor, or the Undergraduate Associate Dean. When misconduct has been found to have occurred, disciplinary penalties will be imposed under Policy 71 Student Discipline. For information on categories of offenses and types of penalties, students should refer to Policy 71 - Student Discipline,

Avoiding Academic Offenses

Most students are unaware of the line between acceptable and unacceptable academic behaviour, especially when discussing assignments with classmates and using the work of other students. For information on commonly misunderstood academic offenses and how to avoid them, students should refer to the Faculty of Mathematics Cheating and Student Academic Discipline Policy,


A student may appeal the finding and/or penalty in a decision made under Policy 70 - Student Petitions and Grievances (other than regarding a petition) or Policy 71 - Student Discipline if a ground for an appeal can be established. Read Policy 72 - Student Appeals,