CS2910
Schedule
This is an old version of this course, from Fall 2015. A newer version is available here.
Jump to the Current Week
Week 1
- Lecture 1:
- (Labor Day)
- Lab:
- In Lab:
- See slides for today's lecture. I will bring a printout.
- Course introduction
- Class exercise: Networking Sand Blaster
- Layers in the Internet Stack
- Packet Encapsulation
- Wireshark is a "packet sniffer" that supports logging and analysis of network traffic.
In this course, we will use it as a tool to learn about network protocols and to find and fix problems with network applications, like using an oscilloscope to study the behavior of an electronic circuit.
- Download the Wireshark application from the web site (www.wireshark.org) and install it on your computer.
- Lab 1: (Individual Assignment) Experiment with Wireshark packet sniffer and submit handout
- You may find this video helpful: HakTip - How to Capture Packets with Wireshark - Getting Started
- Install Python development environment
- Go to the Python Windows downloads page
- Select the latest Python 2 (not Python 3) installer (e.g., Python 2.7.10)
- On the Python release page, download an appropriate MSI Installer for your Windows environment (i.e., X86-64 for the freshman laptop).
- Invoke the installer package to install Python on your system.
- During installation, on the "Customize Python" page, select "Add python.exe to Path" for installation.
- (You can also add the Python install directory to your system path manually using these instructions,
- You may want to explore the Python Mind Map sections 3.3 and 3.3.2.)
- Install JetBrains PyCharm (Python IDE from the maker of IntelliJ)
- Download either the Professional or the Community Edition.
- If you choose the Professional Edition, request a student account with your MSOE email. Once you complete the account creation process, you can use it to log in during the professional edition install. If you choose the Community Edition, just install it normally.
- In Lab:
- Lecture 2:
- Assignment (due 8 am on the day of class):
- Watch video: Data Encoding, part 1
- Complete Quiz
- (optional) Watch video: Principles of network applications
- (optional) Read textbook, Section 1.5 (through 1.5.2)
- (optional) Data Encoding, part 2
- In Class:
- Data Encoding, Part 1
- Parsing Data
- Muddiest Point
- Finishing Lab 1
- Survey
Data Encoding, Part 2
- Assignment (due 8 am on the day of class):
Week 2
- Lecture 1:
- Assignment:
- Install Python 2 (Not Python 3).
- Install PyCharm
- (optional) Data Encoding, part 3
- (optional) You may want to explore the Python Mind Map
- In Class:
- Data Encoding in Python
- Assignment:
- Lab:
- Assignment (due before the start of lab):
- Watch videos:
- (optional) What is a protocol?
- (optional) Python programming introduction, part 1
- (optional) You may want to explore the Python Mind Map
- (optional) Read textbook, Section 2.1 (through 2.1.6)
- (optional) Read textbook, Section 2.7 (through 2.7.1)
Complete Quiz
- Watch videos:
- In Lab:
- Assignment (due before the start of lab):
- Lecture 2:
- Assignment (due before the start of class):
- Watch videos:
- (optional) Python programming introduction, part 2
- (optional) Introduction to Data Transmission
- (optional) Check out this Python mind map
- Watch videos:
- In Class:
- In-class paper quiz 1
- Data Encoding in Python
- Assignment (due before the start of class):
Week 3
- Lecture 1:
- Class exercise:
- Methods in Python
- Long procedure design
- What is a protocol?
- Using TCP in Python
- Class exercise:
- Lab:
- Assignment (due before the start of lab):
- Watch video:
- (Optional) Read textbook, Section 2.7.2
Online Quiz
- In Lab:
- Lab 3: Network programming: TCP
- Lab assignment and submission page
- Due Week 3, Friday, 11pm
- Assignment (due before the start of lab):
- Lecture 2:
- Assignment (due before the start of class):
Complete Quiz
- In Class:
- In-class Quiz 2
- Encoding bits and bytes
- By hand, as on Quiz 1
- In Python
- Python syntax
- Encoding bits and bytes
- Reading a protocol specification
- What is the HTTP date/time stamp format? What time zones may be used?
- When is a
Content-Length
header forbidden? - What should an HTTP/1.1 client do if it does not know how to handle "chunked" transfer encoding?
- What does an
If-Modified-Since
header do? - What is the most common form of
Request-URI
? What other forms are defined? - What is escaped encoding ("% HEX HEX") in a
Request-URI
? What RFC defines it? - In an HTTP response, what is the difference between "Moved Permanently" and "Temporary Redirect" status?
- How is the
Location
header used? - How does "pipelining" work with persistent connections?
- What is the difference between GET and HEAD methods in an HTTP request?
- In-class Quiz 2
- Assignment (due before the start of class):
Week 4
- Lecture 1:
- Assignment:
- Watch videos:
- (optional) Introduction to HTTP protocol, part 1
- (optional) Introduction to HTTP protocol, part 2
- (optional) Introduction to HTTP protocol, part 3
- (optional) Read textbook, Section 2.2 (through 2.2.6)
- (optional) Review the HTTP protocol specification
- Watch videos:
- In Class:
- Pack and Unpack -- last review
- In-class Quiz 2
- HTTP
- Chunking in HTTP
- Assignment:
- Lab:
- In Lab:
- Lab 3: TCP Server (implementation and testing)
- In Lab:
- Lecture 2:
- In Class
- HTTP, continued
- In Class
Week 5
- Lecture 1:
- Assignment (due Before 9am on the day of class):
- Watch videos:
- (required) Introduction to DNS, part 1a
- (optional) Introduction to DNS, part 1 (a-b)
- (optional) Read textbook, Section 2.5 (through 2.5.3)
- (required) Complete Quiz
- Watch videos:
- In Class:
- Bring laptop and start at start of class
- DNS
- Assignment (due Before 9am on the day of class):
- Lab:
- In Lab:
- Lecture 2:
- In Class:
- Bring laptop and start at start of class
- More HTTP headers
- Midterm Exam Review
- In Class:
Week 6
- Lecture 1 (Monday)
- In Class
- Midterm Exam
- In Class
- Lab:
- In Lab:
- Lab 5: HTTP Server
- Lab 5: Assignment and submission page
- Due Week 6, Friday, 11pm
- Lab 5: HTTP Server
- In Lab:
- Lecture 2
- Assignment)
- Watch videos
- (optional) Email protocols
- (optional) Sending email (SMTP)
- (optional) Sending email (SMTP)
- Watch videos
- In Class
- Introduction to Web Protocols
- Exercise
- Assignment)
Week 7
- Lecture 1
- Assignment (due before the start of the lecture))
- Install Thunderbird mail client
- In Class
- Creating and interpreting SMTP sessions
- Assignment (due before the start of the lecture))
- Lab:
- In Lab:
- Lecture 2
- Assignment
- Study for quiz. See email from Dr. Yoder for details.
- Watch videos:
- (optional) Fetching email (IMAP)
- In Class
- Paper Quiz: Encoding/decoding fixed-width formats like UDP. See email from Dr. Yoder for details.
- Fetching email with IMAP
- Python exercise
- Assignment
Week 8
- Lecture 1
- Assignment:
- Complete Online Quiz - Finding an interesting character
- In Class
- IMAP with Python
- Encoding Internet Messages (email)
- Unicode and UTF8 in Python — In-class demo
- Assignment:
- Lab:
- Lecture 2
- Assignment
- Watch videos:
- (optional) TCP protocol
- Watch videos:
- Class exercise
- TCP timeout, RTT estimate calculation
- Assignment
Week 9
- Lecture 1
- In class:
- Paper Quiz 5: SMTP
- Congestion control
- Router buffering effects
- In class:
- Lab:
- In Lab:
- Lecture 2
- Assignments (due before 8:00AM on the day of class)
- Watch videos
- Take online quiz (ask a question about the video)
- In class:
- Symmetric and Public Key Cryptography
- Cryptography for privacy & authentication
- Cryptographic attacks
- Assignments (due before 8:00AM on the day of class)
Week 10
- Lecture 1
- Assignments (due before 8:00AM on the day of class)
- Watch videos:
- Modular Arithmetic
- (optional) How RSA works (Links to Dr. Sebern's summary, which links to the same video on Youtube as before.)
- (optional) Read pp. 684-688 of the text.
- Take online quiz
- Watch videos:
- In class:
- Paper Quiz 5: TBA
- Modular Arithmetic
- RSA public-key cryptography
- Public-key cryptography with RSA
- Assignments (due before 8:00AM on the day of class)
- Lab:
- Lecture 2:
- In class:
- Wrap-up exercise
- Review
- In class:
Exam week
- Final exam - Wednesday 11am-1pm L304 (Morning Section) and L305 (Afternoon Section) (18 Nov 2015)
- Morning Section - Section 001
- Afternoon Section - Section 002
Acknowledgement: Original schedule created by Dr. Mark Sebern