Teaching

Courses

In Fall, 2023, I am teaching a section of ECE/CSC 570: Computer Networks, and the “Starting PhD Research” section of CSC 801: Seminars in Computer Science.

For general information about these and other courses I teach, see below. 

An Appeal

Please do not upload course materials you receive as part of your registration in a course on some other website or service. In most cases, such material (slides, homeworks, homework solutions, study guides, …) are marked clearly as being copyrighted; even when they are not, if they were produced by the instructor or teaching assistants / graders, they are under implicit copyright.

It is the same as renting a movie on a streaming service; you have purchased the right to consume the content for your own benefit, but not the right to distribute further. The original owner of the content remains the owner.

Distributing content that you do not own is theft, plain and simple. Piracy is not a victimless crime. In the end, if you unlawfully distribute valuable content that you purchased a right to consume, you are simply devaluing your own training and credentials (which you are paying a considerable sum to acquire). If you have doubts about this, please feel free to come discuss in more detail with myself, or any other faculty member.

CSC801: Computer Science Seminar Series

The CSC801 series of sections is a forum for faculty and graduate student research presentations and discussions centered around current research problems in areas of Computer Science and advanced theories in these areas. Since Fall, 2016, I have been offering a research preparation course as an 801 seminar every Fall, and expect to do so again in Fall 2023:

Preparation for Academic Research

How do you start on the process of PhD research, if you have never done research before? What are the processes you will be expected to follow, and tasks you will be expected to perform, without necessarily being told how to? How do you know when you have become ready to “do research”?? Is P=NP?!

We can’t tell you that last one, but we hope to help you with the others! We will go over the life cycle of research projects, the anatomy of research papers, how to read and write reviews, how to develop research ideas, and how to present and communicate research. This course is only open for CSC PhD students. If you are a first-year PhD student, you can also earning a full course credit toward your degree.

Note: This course is available for credit only for first year CSC Ph.D. students. (Others may attend if there is room.)

Seminars in previous years:

In Spring, 2011, I coordinated a section that focused on networking, the first since the inception of the series. In Spring, 2012, I co-taught the seminar, with Dr. Sarah Heckman, on the topic “Pervasive Applications for a Mesh Network Environment”, utilizing the new CentMesh testbed at NCSU Centennial Campus. More information on that administration can be found here.

In Spring, 2013, the seminar focused on Software Defined Networking such as OpenFlow, and sliced network virtualization, with special attention to GENI. These topics are among the recent exciting things that have been happening in networking technology, and I believe we had a fun and productive time exploring them, utilizing the newly assembled SDN Lab in EB2 that I recently designed and realized. This version of the seminar matured into the Special Topic course on SDN that I occasionally teach.

CSC/ECE Special Topic : Software Defined Networks

This advanced graduate level Special Topic is available both at the 500-level and the 700-level. I created this course in Spring 2016, and have offered it multiple times since. Students are required to complete homework assignments based on their reading, which include significant programming assignments, and may need to complete hands-on exercises, largely in virtual networking labs. Students also undertake a half-semester long project in the latter part of the semester that requires them to build an SDN network targeted at specific functionality, as well as a solution to the same based on traditional TCP/IP mechanisms. For 700-level students, this project is required to be designed to investigate an open question in the study of SDNs, while for 500-level students, it is allowed to be a replication of a known system configuration in order to assess performance characteristics.

CSC/ECE Special Topic : Internet of Things: Applications and Implementation

This advanced graduate level Special Topic is available both at the 500-level and the 700-level, and forms one of several courses created in 2016 and 2017 that make up the IoT concentration of the MCN degree. I teach it on a rotating basis with Dr. Shahzad, who created the course and teaches it more frequently. Students learn about the ecosystem of IoT protocols and systems, and undertake group projects to implement actual functioning small IoT systems using commodity open hardware and software.

CSC/ECE 778 : Optical Networks

This advanced graduate level course has been regularly taught once a year for many past years; it is currently offered only occasionally. It addresses the technology, algorithms and recent research in this area.
Note: In Fall, 2006 and previously, this course had been numbered CSC/ECE 775. (It was renumbered to allow the introductory and advanced wireless networking courses to be numbered sequentially.)

ECE/CSC 777 : Telecommunications Network Design

This advanced graduate level course was regularly taught at least once a year for many years, usually by Dr. Arne Nilsson. I taught it for the first time in Fall, 2012. It is currently offered only occasionally. It focuses on the topological design and resource allocation of large scale telecommunications networks, including analytical and simulation investigation of call arrival/departure models, as well as examination of bandwidth and resource placement issues.

CSC/ECE 772 : Survivable Networks

This special topic was developed jointly by George Rouskas and myself, and we co-taught it for the first time in Spring, 2007, and multiple times since. It is currently offered only occasionally. In the past few decades, networks have attained critical infrastructure status, and continued operation in the face of equipment failure has become a mainstream issue. This course focuses on the theory, protocols, and research issues related to network fault-tolerance and survivability in large long-haul networks, as well as some coverage on survivability-related issues such as performability in wireless networks.
Note: In Spring, 2007 and Spring, 2008, this course was taught as a special topic. It has since become a regular course and renumbered as 772.

CSC 791b : Advanced Topics in Network Design

In Spring, 2005, I created this special topic to address a gap in our networking curriculum, and taught it in both Spring and Fall of 2005. This course is also a guided entry into research in the area of large network provisioning and dimensioning theory and techniques. While producing actual publishable research is not a required goal of such courses, students are encouraged to get to that point.

CSC/ECE 573 : Internet Protocols

This course presents details and internals of the main protocols of the TCP/IP suite of protocols, and provides conceptual views of the protocols, the Internet, and related issues such as Quality of Service issues in the Internet.

This course covers a large amount of ground, and different administrations often end up focusing more on one part or another, depending on the population of students in the specific section. Typically, in my sections I assume that students are taking the course after a typical broad-based introductory course (like ECE/CSC 570, see below), and therefore are already familiar with the fundamentals of the Internet suite of protocols, IP, TCP. We cover those topics briefly in the early weeks. Students can depend on this section of the course as a refresher for those topics, but should not expect it to be remedial; consult with myself or other instructors early in the semester, if in doubt. The bulk of the course focuses on design and efficiency of the forwarding engine.

ECE/CSC 570 : Computer Networks

This is the cornerstone course in computer networking in the CSC graduate curriculum and the MCN curriculum. Several sections of this course are taught each year, and I frequently teach one of these sections (typically in Fall). It is a standard introductory broad-based course on networking, but focusing on applied knowledge (in terms of algorithms and quantitative understanding) more than on the descriptive knowledge that is more typical of undergraduate courses in this area.

CSC 453 : Introduction to Internet of Things (IoT) Systems

This course was created by Dr. Robert Fornaro and taught by him for several years as “Software for Wireless Sensor Systems”. I taught it for the first time in Fall, 2012, and regularly thereafter for some time, and revamped it into its current form as an IoT course. It focuses on not only the concepts and descriptive knowledge of IoT systems, but also hands-on work with small IoT systems implemented using single-board computers. Currently, Drs. Shahzad and Harfoush teach it in rotation more frequently than myself; please inquire with them for more information on it.

CSC 401 : Data and Computer Communication Networks

This is the first of the two-course networking sequence in our undergraduate curriculum. In 2003, I revamped this course and taught it in two successive semesters, and have since served as course coordinator for this course. I also taught it in Spring, 2007, and most recently in Fall, 2022. It is essentially a slightly less extensive version of CSC 570.

CSC 230 : C and Software Tools

This course was instituted in Fall, 2005, to serve as a course in a second high-level programming language and introduction to procedural programming. In Spring, 2006, and Spring, 2007, I taught this course with large classes of undergraduate students (107 and 112 final grades were assigned respectively). Since then, it has been become a core part of our undergraduate curriculum, and offered regularly, and is taught by various faculty specializing in the teaching of languages and programming.

Other Instructional Development

Software Defined Networking Laboratory

In Fall, 2012, with the support of the CSC department, I devoted a section of the re-equipped CSC Networking Laboratory (see below) to a facility to offer students the opportunity of hands-on experience with multiple real and virtual OpenFlow switches, including HP, Cisco and Pronto OpenFlow switches and VMs running Open Virtual Switch. They were accompanied by PCs and servers that allow creating a large number of virtual machines to act as hosts transmitting data through the switches. Several controllers were tested with all the switches, and various demo scenarios were available for students to repeat that had been worked out by the research students who helped develop the lab. This lab supported the hands-on aspect of the SDN special topic course I taught for some time. In 2017, as part of the general move toward virtual labs, and the decommissioning of the CSC Networking Laboratory, the SDN Laboratory was also decommissioned. Some of the equipment continues to be available in my own research lab for interested students, others were retired.

CSC Networking Laboratory

In Fall, 2010, the College of Engineering offered a one-time opportunity to apply for large ETF funds, and I wrote a proposal to revamp and redesign the CSC departmental networking laboratory. I am grateful that the College awarded the full $130K that I had requested; these funds were used to purchase servers and switches as envisioned in the proposal, and re-equip the networking labs. The new vision was driven by the changing nature of networking equipment. Of late, increasingly the functioning of networks is driven by software, running on commodity hardware. This has also prompted an explosion of such software systems, and it is desirable that our graduates have exposure to a large number of such systems. Many such systems are available freely or as open-source alternatives, but require comparatively powerful computers and network switches. We developed or adapted a series of such software environments that the students can use to have experience with a “network-in-a-box”, with end stations, intermediate nodes, switches and routers operating as virtual machines inside compute-power-rich servers. Over a number of years, it supported the teaching of some graduate courses. In 2017, as part of the general move toward virtual labs, the CSC Networking Laboratory was decommissioned.

Internet Teaching Laboratory

I developed this laboratory in Spring 2000 since which time more than a thousand students have been through it. The first two sets of exercises accompanied CSC/ECE 573 – Internet Protocols, the third set involved using the SmartBits network tester and was not ultimately deployed for students due to lack of sufficient SmartBits boxes becoming available. This set of exercises was demonstrated at the CAIDA Internet Teaching Laboratories workshop at the University of Virginia at Charlottesville, VA, in summer 2001.
The lab was physically located in Ventures II, Suite 150, at the Centennial Campus. As of 2007, it moved to Engineering Building II, and was eventually decommissioned as part of the general move toward virtual labs in 2017.

A Distance OPNET Lab

I proposed this project to DELTA to allow the use of dedicated resources to let distance students have a lab experience similar, though not indistinguishable, from that of in-class students. The original proposal was proof-of-concept scale, not full scale, intended to possibly serve as a blueprint for a future full scale deployment.

The proposal was awarded and Sharat C. Visweswara received a net-lab assistantship for a spring semester and half of a summer semester to perform the implementation under my direction. The implementation was successful and the system was used to support ECE/CSC 570 students during Fall 2003. Distance students were able to access a bank of servers directly using the Secure SHell (ssh) protocol. Access is blocked off for all other system users, except some administrative users, and is controlled for distance students using a web-based reservation system. Thus students obtain controlled access to OPNET without a processing bottleneck at public UNITY servers.

The lab is no longer in use, because this functionality has been subsumed by the VCL environment. VCL is a significantly larger and more general remote access to computing, and in the years since has evolved into a full function cloud computing environment. A few concepts from the DE OPNET lab development process contributed to architectural issues in VCL.