Within 24 hours after a lecture is over, I will post the lecture slides I used in the section below. For a preview of future lectures, please see the tentative slides section below.

To download all the PDF files below in one command (so you can study for exams), do the following inside a terminal in Ubuntu 16.04:

    wget -r -l 1 --user=USERID --password=PASSWORD http://merlot.usc.edu/cs353-s24/lectures.html
where USERID and PASSWORD are the user ID and password used to access protected content from our class web site. But please note that the lecture slides can change at any time without notice. Therefore, it's a good idea to re-run the above command often to synchroniza your copy with the server!
 
Since COVID is not going away any time soon, you can participate in the live lecture via Zoom. These Zoom meetings will not be recorded. For serucity reasons, you must sign into your Zoom account using USC Shibboleth SSO (Single Sign-On). Please note that this is different from signing into your Zoom account using your USC email address! To check if you signed in into Zoom correctly, start Zoom and click on Settings if you are on your phone. On top of the screen right next to your name, it should say LICENSED. (If you are using a browser, then you should click on Profile and look for your User Type.) If it doesn't say LICENSED (and says "Basic" instead), it means that you are signing into Zoom using your personal account. In that case, you should sign out (on your phone, click on Profile, scroll all the way down to the bottomm and click on Sign Out). Then sign in again. On the Sign In screen, don't enter your email address there, but look for an SSO button instead. Click on the SSO button and enter "USC" as the company domain and it will take you to the familiar USC Shibboleth SSO screen where you need to provide your USC NetID and password (this is the same screen you get when you login to your USC email account).

One problem with such a Zoom setup is that audio/video equipment can malfunction (e.g., no sound in Zoom, camera is stuck pointing at the wall, etc.). If that happens, there is very little I can do and I must continue with the live lecture in classroom. Lecture videos from a previous semester is provided below so that you can still receive the same lecture material. Of course, it's best if you come to the live class when you can.

(Please note that access to lecture notes is restricted.)

Within 24 hours after a lecture is over, I will post the PDF lecture slides I used here.

Week 1 (Jan 8, 2024) Lecture 1 (PDF) - course administration (Jan 10, 2024) Lecture 2 (PDF - figures for persistent connections fixed) - socket programming
Week 2 (Jan 15, 2024) - Martin Luther King Day, university holiday (no class)

(Jan 17, 2024) Lecture 3 (PDF - figures for persistent connections fixed) - socket programming, what is the Internet (1.1)

Week 3 (Jan 22, 2024) Lecture 4 (PDF) - what is the Internet (1.1), the network edge (1.2), the network core (1.3) (Jan 24, 2024) Lecture 5 (PDF) - what is the Internet (1.1), the network edge (1.2), the network core (1.3), delay, loss, throughput (1.4), protocol layers, service models (1.5)
Week 4 (Jan 29, 2024) Lecture 6 (PDF) - protocol layers, service models (1.5) network under attack (1.6), history of Internet (1.7), multithreading parts 1 & 2 - thread creation and termination (Jan 31, 2024) Lecture 7 (PDF) - multithreading parts 1 & 2 - thread creation and termination, multithreading part 3 - mutex
  • recording of the live lecture - 100 minutes (Please note that I have made a mistake in the discussion started at time index 1:17:17. I said that either the code was wrong or my description was wrong. As it turns out, the code on slide 38 was correct, but what I said earlier was incorrect. Earlier, I said that the thread objects will be deleted after main() returns. According to the code on slide 38, when main() returns, all the thread objects would have been deleted already and the vector would have been empty. During the discussion, I mentioned that I should change the while-loop on slide 38 into a for-loop to simply join() with all the child threads without modifying the vector. If I do that, then when main() returns, the destructor of the vector will be invoked and the reference count on the shared pointers will go to zero and the thread objects will be deleted (and the destructor of these threads will be called). That's also correct. The bottom line is that either way is fine. There is no need to change the code that was presented (I just need the say the right words to go with it).
Week 5 (Feb 5, 2024) Lecture 8 (PDF) - multithreading part 3 - mutex, principles of network applications (2.1), the web and HTTP (2.2), electronic mail in the Internet (2.3) (Feb 7, 2024) Lecture 9 (PDF) - principles of network applications (2.1), the web and HTTP (2.2), electronic mail in the Internet (2.3)
Week 6 (Feb 12, 2024) Lecture 10 (PDF) - principles of network applications (2.1), the web and HTTP (2.2), electronic mail in the Internet (2.3), DNS (2.4), peer-to-peer applications (2.5), video streaming and conent distribution networks (2.6) (Feb 14, 2024) Lecture 11 (PDF) - DNS (2.4), peer-to-peer applications (2.5), video streaming and conent distribution networks (2.6)
Week 7 (2/19) - Presidents' Day, university holiday (no class)

(Feb 21, 2024) Lecture 12 (PDF) - DNS (2.4), peer-to-peer applications (2.5), video streaming and conent distribution networks (2.6), socket programming (2.7), exam logistics

Panopto Demo (this is an old video from another class, please substitute 10:10am with 12:40pm)
Week 8 (Feb 26, 2024) Lecture 13 (PDF) - multithreading part 4 - generalized synchronization with condition variables

(2/28) - Midterm Exam (no class)

Week 9 (Mar 4, 2024) Lecture 14 (PDF) - introduction and transport-layer services (3.1), multiplexing and demultiplexing (3.2), connectionless transport: UDP (3.3), principles of reliable data transfer (3.4) (Mar 6, 2024) Lecture 15 (PDF) - principles of reliable data transfer (3.4)
Week 10 (Mar 20, 2024) Lecture 16 (PDF) - connection-oriented transport: TCP (3.5) (Mar 22, 2024) Lecture 17 (PDF) - principles of congestion control (3.6), TCP congestion control (3.7)
Week 11 (Mar 27, 2024) Lecture 18 (PDF) - principles of congestion control (3.6), TCP congestion control (3.7), overview of network layer (4.1), what's inside a router (4.2) (Mar 29, 2024) Lecture 19 (PDF) - the Internet protocol (IP): IPv4, addressing, IPv6, and more (4.3), generalized forwarding and SDN (4.4)
Week 12 (Apr 3, 2024) Lecture 20 (PDF) - generalized forwarding and SDN (4.4), introduction to the network control plane (5.1), routing algorithms (5.2) (Apr 5, 2024) Lecture 21 (PDF) - routing algorithms (5.2), intra-AS routing in the Internet: OSPF (5.3), routing among the ISPs: BGP (5.4)
Week 13 (Apr 10, 2024) Lecture 22 (PDF) - intra-AS routing in the Internet: OSPF (5.3), routing among the ISPs: BGP (5.4), the SDN control plane (5.5), ICMP: the Internet control message protocol (5.6), network management and SNMP (5.7) (Apr 12, 2024) Lecture 23 (PDF) - ICMP: the Internet control message protocol (5.6), network management and SNMP (5.7), introduction to the link layer (6.1), error-detection and correction techniques (6.2), multiple access links and protocols (6.3)
Week 14 (Apr 17, 2024) Lecture 24 (PDF) - multiple access links and protocols (6.3), introduction wireless and mobile networks (7.1), wireless links and network characteristics (7.2) (Apr 19, 2024) Lecture 25 (PDF) - wifi: 802.11 wireless LANs (7.3), switched local area networks (6.4)
  • recording of the live lecture - 102 minutes (Please note that right after the break, around time index 1:00:55, I talked about the fact that rdtsend is similar to traceroute but there was no slide for it. I have added that information to the bottom of slide 5.)
Week 15 (Apr 24, 2024) Lecture 26 (PDF) - switched local area networks (6.4), link virtualization: a network as a link layer (6.5), data center networking (6.6), retrospective: a day in the life of a web page request (6.7) (Apr 26, 2024) Lecture 27 (PDF) - since all the materials have been covered, Lecture 27 will be conducted like an office hour on Zoom only; I will go over administrative slides at the beginning and will turn off recording to answer questions about labs or PAs in breakout rooms afterwards

Preview:

  • (May 3, 2024) -
    • standard final exam: [11:00:00am-11:40:00am) (firm)
    • alternate final exam: [7:00:00pm-7:40:00pm) (firm)
The following are tentative slides (in PDF format) for this semester.
(Please note that access to these videos is restricted.)

Lecture videos from a previous semester are provided here, in case that they can be helpful. You should get the lecture material by coming to class. In case you cannot make it to class, you can view these old lecture videos. I'm planning on covering exactly the same lecture slides as previous semesters. The main difference between the lecture videos and live classes is the old lecture videos are more condensed since I'm the only person doing the talking. Live lecutre pace should be slower.

Access to these old lecture videos are protected by an additional level of security measure. All videos here are on D2L, please enter your D2L user ID and password before accessing these videos. Please also see hints about using the D2L video viewer. You also need to enable 3rd party cookies in your browser.