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.

The labs are numbered by the week in which the lab is due during the lab period. Thus, the Week 2 Lab and Lab 2 are the same lab. I will avoid using terms like "The 1st lab" since there is no Lab 1, and it would be confusing to call Lab 2 the first lab.

Week Day Topics Preparation Lab
1
1 Binary numbers (each assignment due One hour before the start of classs 9 am 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 Lab 2: UDP
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: Encoding
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: Parsing
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: TCP
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 Client
2 IMAP (opt) Fetching email (IMAP)
3 IMAP with Python (in-class) Python exercise
7
1 Cryptography Cryptography in network protocols
(opt) Public key cryptography introduction
Take online quiz
(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)
Lab 7: HTTP Server
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
8
1 Half Exam 2
Public Key Infrastructure
Lab 8: SMTP
2 Public Key Infrastructure
3 SSL/TLS
9
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: RSA
2 Congestion control
Router buffering effects
3 IP and MAC addresses
10
1 The network layer Lab 10: Public Key Infrastructure
2 Firewalls
3 Review
11
TBA Common Final Exam

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