USC CSD Home
 

Introduction to Internetworking - CSCI 353, Spring 2018

This is an undergraduate level course covering the fundamental concepts of networking as embodied in the Internet. Topics covered in this are: design principles, layering, protocol design/analysis of the global Internet; networked applications; the structure/architecture of the Internet; protocols for network transport and congestion control; network layer and routing; link layer/MAC; and network security.
 
General Information
Time TT 12:30pm - 1:50pm 
Location THH 102 
Instructor Bill Cheng (click to see office hours)
E-mail: <bill.cheng@usc.edu>.  (Please do not send HTML-only e-mails. They will not be read.)
TA #1 Brandon Schlinker, E-mail: <bschlink@usc.edu>,  Office Hours: Fri 2:30pm - 3:30pm in SAL 227
TA #2 Chien-Lun Chen, E-mail: <chienlun@usc.edu>,  Office Hours: Mon 10:00am - 11:50am in SAL 200
Course Producer
Kumari Aasha <aasha@usc.edu>, Helpdesk Hours: Tue 10:30am - 2:30pm in SAL open lab (in front of SAL 126), or by appointment
Graders
Bhagyashree Shetty, E-mail: <bshetty@usc.edu>
(If needed, the grader will hold office hours the week after the announcement of each assignment's grades.)
Midterm Exam during class, Tue, 3/6/2018 (firm).
Final Exam 2pm-3:40pm, Wed, 5/9/2018 (firm).
 
Class Resources
Description   :   textbooks, topics covered, grading policies, additional resources, etc.
Lectures   :   information about lectures (and lectures slides in PDF format).
Discussions   :   information about discussion sections.
Programming   :   programming assignments (please also see important information about programming assignments at the bottom of this web page.)
Forum   :   Piazza Forum for discussing course materials and assignments. You are required to be a member of this group. (This group is by invitation only.) Please do not send request to join this group until after the first lecture.
 
News
(in reversed chronological order)
  • 4/22/2018: The final exam will be closed book, closed notes, and closed everything, except for a single "cheat sheet" (letter-sized). You can write or print whatever you want on it on both sides of the cheat sheet. Magnifying glasses are not permitted, so don't print too small! You will be required to turn in the cheat sheet together with the exam paper.

    Also, no calculators, cell phones, or any electronic gadgets are allowed. Please bring a photo ID. Your ID will be collected at the beginning of the exam and will be returned to you when you turn in your exam. There will be assigned seating.

    The final exam will cover everything from the first slide of Lecture 15 to the last slide of Lecture 30. and Ch 4 through Ch 8 of the Kurose & Ross textbook (except for sections that are explicitly excluded below).

    Regarding what types of questions will be on the final, please see the Exams section of the course description web page and the Exam slides (PDF). Regarding regrade policy, please see the Regrade section of the course description web page.

    Here is a quick summary of the final exam topics (not all topics covered may be listed):

    • Ch 4 - The Network Layer: Data Plane (PDF) (PPT)
      • overview of network layer
      • what's inside a router
      • the Internet protocol (IP): IPv4, addressing, IPv6, and more
      • generalized forwarding and SDN
      Extra slides
      • (4.2.4) where does queueing occur? (PDF)
      • (4.2.5) packet scheduleing (PDF)

    • Ch 5 - The Network Layer: Control Plane (PDF) (PPT)
      • introduction
      • routing algorithms
      • intra-AS routing in the Internet: OSPF
      • routing among the ISPs: BGP
      • the SDN control plane
      • ICMP: the Internet control message protocol
      • network management and SNMP
      Extra slides
      • (5.2.2) the distance vector (DV) routing algorithm (PDF)

    • Ch 6 - The Link Layer and LANs (PDF) (PPT)
      • introduction to the link layer
      • error-detection and correction techniques
      • multiple access links and protocols
      • switched local area networks
      • link virtualization: a network as a link layer
      • data center networking
      • retrospective: a day in the life of a web page request

    • Ch 7 - Wireless and Mobile Networks (PDF) (PPT)
      • introduction
      • wireless links and network characteristics
      • wifi: 802.11 wireless LANs
      • cellular Internet access
      • mobility management: principles
      • mobile IP
      • managing mobility in cellular networks
      • wireless and mobility: impact on higher-layer protocols
      Extra slides
      • (7.3.3) the IEEE 802.11 frame - address fields (PDF)
      • (7.4.1) an overview of cellular network architecture (PDF)

    • Ch 8 - Security in Computer Networks (PDF) (PPT)
      • what is network security
      • principles of cryptography
      • message integrity and digital signatures
      • end-point authentication
      • securing e-mail
      • securing TCP connections: SSL
      • network-layer security: IPsec and virtual private networks
      • securing wireless LANs
      • operational security: firewalls and intrusion detection systems
      Extra slides
      • how to become "man-in-the-middle" (PDF)
      • (8.3.2) message authentication code (PDF)
      • how to create a public-key certificate (PDF)

    • PA5
      • specs
      • FAQs
      • various discussions about these assignments

  • 3/19/2018:
    • Disability Services & Programs is in need of another volunteer notetaker for this course right away. Please apply at MyDSP Notetaker. There is an application and confirmation process. DSP issues awards of up to $100 credit to students’ accounts as a thank you at the end of the semester, based on quality of notes and performance as a notetaker. Contact Dominica at DSP with any questions (notetake@usc.edu).


  • 3/8/2018: Come to think of it, it makes more sense that PA5 should be worth 33.5% and PA6 should be worth 16.5%.


  • 3/1/2018: The midterm exam next Tuesday (3/6/2018) will be 72 minutes long (from 12:30pm to 1:42pm) in lecture classroom. No matter how late you show up for the midterm, your exam must finish at the same time as everyone else. (If you are sick, please get a note from a doctor and best that you don't come to exam and get everyone else sick!) For midterm logistics, please see the News item on 2/22/2018 below.

  • 2/22/2018: The midterm exam will be closed book, closed notes, and closed everything, except for a single "cheat sheet" (letter-sized). You can write or print whatever you want on it on both sides of the cheat sheet. Magnifying glasses are not permitted, so don't print too small! You will be required to turn in the cheat sheet together with the exam paper.

    Also, no calculators, cell phones, or any electronic gadgets are allowed. Please bring a photo ID. Your ID will be collected at the beginning of the exam and will be returned to you when you turn in your exam. There will be assigned seating.

    The midterm exam will cover everything from the beginning of the semester to the last slide of Lecture 14 on 2/22/2018 and Ch 1 through Ch 3 of the Kurose & Ross textbook (except for sections that are explicitly excluded below).

    Regarding what types of questions will be on the midterm, please see the Exams section of the course description web page and the Exam slides (PDF). Regarding regrade policy, please see the Regrade section of the course description web page.

    Here is a quick summary of the midterm exam topics (not all topics covered may be listed):

    • Ch 1 - Computer Networks and the Internet
      • what is the Internet
      • the network edge
      • the network core
      • delay, loss, and throughput in packet-switched networks
      • protocol layers and their service models
      • network under attack
      • history of computer networking and the Internel (excluded from the exam)
      Plus
      • (1.3.2) probability of queueing
    • Ch 2 - Application Layer
      • principles of network applications
      • the web and HTTP
      • electronic mail in the Internet
      • DNS - the Internet's directory service
      • peer-to-peer applications
      • video streaming and conent distribution networks
      • socket programming: creating network applications
    • Ch 3 - Transport Layer
      • introduction and transport-lyer services
      • ultiplexing and demultiplexing
      • connectionless transport: UDP
      • principles of reliable data transfer
      • connection-oriented transport: TCP
      • principles of congestion control
      • TCP congestion control
      Plus
      • (3.4.1) comparing various rdt versions
      • (3.5.5) flow control, (3.5.6) connection management
      • (3.6.1) causes & costs of congestion
    • PA1, PA2, PA3, PA4
      • specs
      • FAQs
      • various discussions about these assignments


  • 2/6/2018:
    • Office hour tomorrow (Wed, 2/7/2018) is moved to 1:30-1:55pm followed by 2:35-3:10pm. Sorry about the inconvenience.

  • 2/5/2018:
    • Office hour tomorrow (Tue, 2/6/2018) is canceled since I'm still sick. Sorry about the inconvenience.

  • 2/5/2018:
    • Office hour today is canceled because I'm sick. If you have questions about the programming assignments, please see the CP and the TAs. Sorry about the inconvenience and the short notice.

  • 2/2/2018:
    • Disability Services & Programs is in need of a volunteer notetaker for this course right away. Please apply at MyDSP Notetaker. There is an application and confirmation process. DSP issues awards of up to $100 credit to students’ accounts as a thank you at the end of the semester, based on quality of notes and performance as a notetaker. Contact Dominica at DSP with any questions (notetake@usc.edu).

  • 1/8/2018:
    • Disability Services & Programs is in need of a volunteer notetaker for this course right away. Please apply at MyDSP Notetaker. There is an application and confirmation process. DSP issues awards of up to $100 credit to students’ accounts as a thank you at the end of the semester, based on quality of notes and performance as a notetaker. Contact Dominica at DSP with any questions (notetake@usc.edu).

  • 1/6/2018:
    • Watch this area for important announcements.

    • To get user ID and password for accessing protected area of this web site, please visit the request access page after semester starts and submit the requested information. (You do not have to be registered for the course to get the password. You just need to have an USC e-mail address.)

    • Please do not send request to join the class Piazza Forum until after the first lecture.
 
Prerequisites
The prerequisite for this course is CSCI 201L (Principles of Software Development). Please see the CS Course Catalog for information about CSCI 201L.

According to the CS Course Catalog, the prerequisite for CSCI 201L is CSCI 104L, and the prerequisite for CSCI 104L is CSCI 103L. Therefore, you will be expected to have had at least two semesters of experience programming in C++ from these courses.

In addition, a corequisite of CSCI 104L is CSCI 170, and graphs and basic graph algorithms are covered in CSCI 170. Therefore, you will be expected to be familiar with graph representations (e.g., nodes and edges for abstract representation, adjacency list data structure, etc.) and basic graph algorithms such as breadth-first-search (BFS).

 
Important Information about Programming Assignments
All programming assignments are to be done in C/C++. No other programming language will be accepted. (Sorry, no Java.) Your program must compile and run with a Makefile either on nunki.usc.edu or on a Ubuntu 14.04 or 16.04 machine running inside VMware/VirtualBox/VagrantBox. Grading for programming assignments can ONLY be done on nunki.usc.edu (which runs a Unix operating system) or on a Ubuntu 14.04 or 16.04 machine running inside VMware/VirtualBox/VagrantBox. Even if you can demonstrate that your code runs perfectly on some other system, it cannot be considered for grading and you won't get any partial credit for it. If you are not familiar with Unix, please read Unix for the Beginning Mage, a tutorial written by Joe Topjian. If you forgot how to use Unix, please summary of some commonly used Unix commands. It's a good idea to be familiar with the Unix/Linux development environment (vi/pico/emacs, gcc/g++, make, etc.) One good way to start is to install Ubuntu Linux into a Virtual Machine on your laptop/desktop and start using it with the very first programming assignment. If you are comfortable with commandline interface to Linux/Unix systems, you can also try VagrantBox and use it for your programming assignments.

If a student registered late for this class or could not be present at the beginning of the semester, he/she is still required to turn all the assignments on time or he/she will receive a score of 0 for these assignments. No exceptions!

 

[Last updated Mon Apr 30 2018]    [Please see copyright regarding copying.]