CS2911
Schedule

See also the day-by-day slides, where I will place the lecture slides as we use them throughout the quarter.

(opt) is an abbreviation for (optional).

References to the text are to our required text, Computer Networking: A Top-Down Approach, 7th ed., James F Kurose and Keith W Ross, Pearson, © 2017. (6th edition © 2013.) You can see the differences between the editions in the front cover of the 7th edition, available at the MSOE bookstore. One difference that affects our class: The new version uses Python 3, the old version uses Python 2. Both editions include and explain Python code on about 6 pages, and it is the text's use of Python that prompted us to transition the whole course to the Python language. We will use Python 3 exclusively this quarter. If you hover over the required readings, it will show the reading in both the 7th and 6th editions of the text. There are no legal PDFs of our textbook. Please do not use them!

The labs are numbered by the week in which the lab starts. Thus, the Week 7 Lab and Lab 7 are the same lab.

Week Day Topics Preparation Lab
1
1 Binary numbers (Electronic assignments are due at noon on the day of class) (Lab time used for lecture)
2 Binary numbers
Data encoding
(opt) Data Encoding, part 1
3 Introduction to Python Install Python 3
Install PyCharm
(opt) Python programming introduction, part 1
(opt) Python programming introduction, part 2
2
1 Data encoding in Python Watch Python's Internal Encoding and take the quiz embedded in the video Lab 1: UDP
Lab 2: Encoding
2 Parsing and Procedural Design
3 The Internet Stack
Packet Encapsulation
(opt) text, §1.5 7th Ed: Sec. 1.5-1.5.2, 6th Ed: same
Protocol Layers and their Service Models

(opt) Principles of network applications
3
1 UDP and TCP (opt) Introduction to Python network programming (UDP, TCP)
(opt) text, §2.1 7th Ed: Sec. 2.1-2.1.6, 6th Ed: same
Principles of Network Applications

(opt) text, §2.7-2.7.1 7th Ed: Sec. 2.7-2.7.1, 6th Ed: same
Socket Programming with UDP

(opt) text, §3.1-3.2 7th Ed: Sec. 3.1-3.2, 6th Ed: same
Transport-layer Services & Multiplexing and Demultiplexing

(opt) text, §3.3 7th Ed: Sec. 3.3-3.3.2, 6th Ed: same
Connectionless Transport: UDP

(opt) text, §2.7.2 7th Ed: Sec. 2.7.2, 6th Ed: same
Socket Programming with TCP

(opt) text, §3.5-3.5.2 7th Ed: Sec. 3.5-3.5.2, 6th Ed: same
Connection-Oriented Transport: TCP
Lab 3: Parsing
2 What is a protocol?
Reading a protocol specification
(opt) What is a protocol?
3 HTTP
4
1 HTTP, continued (opt) Introduction to HTTP protocol, part 1
(opt) Introduction to HTTP protocol, part 2
(opt) Introduction to HTTP protocol, part 3
(opt) text, §2.2 7th Ed: Sec. 2.2-2.2.5, 6th Ed: 2.2-2.2.6
The Web and HTTP

(opt) Review the HTTP protocol specification
Lab 4: TCP
2 Bring laptop and start
DNS
3 Bring laptop and start
DNS
Half-Exam Review
(required) Introduction to DNS, part 1a
(opt) Introduction to DNS, part 1 (a-b)
(opt) text, §2.4 7th Ed: Sec. 2.4-2.4.3, 6th Ed: 2.5-2.5.3
DNS—The Internet's Directory Service

(required) Complete quiz
5
1 Half Exam 1
Unicode and UTF-8
Lab 5: HTTP Client
2 Unicode and UTF-8 (required) - online quiz - Finding an interesting character
3 Unicode and UTF-8 with Python
Internet message (email) encoding
URL encoding
(opt) Data Encoding, part 2
(opt) Data Encoding, part 3
(in-class) In-class demo
6
1 Intro to mail protocols
SMTP
Install Thunderbird mail client
(opt) Email protocols
(opt) Sending email (SMTP)
(opt) Sending email (SMTP)
Lab 6: HTTP Server
2 IMAP (opt) Fetching email (IMAP)
3 IMAP with Python
Half-Exam Review
(in-class) Python exercise
7
1 Lab 7: SMTP
2
3
8
1 Half Exam 2
Cryptography
Cryptography in network protocols
(opt) Public key cryptography introduction
Take online quiz IN VIDGRID
(opt) text, §8-8.1 7th Ed: Sec. 8-8.1, 6th Ed: same
Security in Computer Networks

(opt) text, §8.2-8.2.1 7th Ed: Sec. 8.2-8.2.1, 6th Ed: same
Principles of Cryptography

(opt) text, §8.8.1 7th Ed: Sec. 8.8.1, 6th Ed: same
Wired Equivalent Privacy (WEP)
Exercise: TCP
2 Modular Arithmetic
Public-Key Cryptography: RSA
Modular Arithmetic
(opt, beyond scopeThis Khan Academy video is great,
but not on a topic we discuss
in the course
) Diffie-Helmann Key Exchange
(opt, within scopeThis Khan Academy video is great.
While it relies on some concepts
from the previous video,
it gives an alternative perspective
on RSA that you may find helpful.
) RSA
(opt, within scopeAlthough I haven't watched this video
all the way through,
what I see while skimming it is
right on topic with what RSA
is really all about.
It even addresses the question
Why not just factor n to find p and q?
) Encryption and HUGE numbers - Numberphile
(opt) text, §8.2.2 7th Ed: Sec. 8.2-8.2.2, 6th Ed: same
Public Key Encryption

(opt) text, §8.3 7th Ed: Sec. 8.3-8.3.3, 6th Ed: same
Message Integrity and Digital Signatures

Take online quiz
3 RSA
SSL/TLS
How RSA works
(opt) text, §8.2.2 7th Ed: Sec. 8.2-8.2.2, 6th Ed: same
Public Key Encryption
(again)

(opt) text, §8.4 7th Ed: Sec. 8.4-8.4.5, 6th Ed: same
End-Point Authentication

(opt) text, §8.5 7th Ed: Sec. 8.5-8.5.1, 6th Ed: same
Securing E-Mail

(opt) text, §8.6 7th Ed: Sec. 8.6-8.6.2, 6th Ed: same
Securing TCP Connections: SSL

(opt) text, §8.8 7th Ed: Sec. 8.8-8.8.2, 6th Ed: same
Securing Wireless LANs

online quiz
9
1 Public Key Infrastructure Lab 8: RSA
2 Public Key Infrastructure
3 SSL/TLS
10
1 TCP timeout, RTT estimate calculation (opt) TCP protocol
(opt) text, §3.6 7th Ed: Sec. 3.6-3.6.2, 6th Ed: same, plus 3.6.3
Principles of Congestion Control
Lab 9: Public Key Infrastructure
2 Ethics
3 Review
11
TBA Common Final Exam

This course is based on an earlier offering by Dr. Mark Sebern