CS 325: Network Programming
410 Thompson Hall
My office hours for Fall 2016 are:
Mon, Tues, Wed, & Fri: 11:00-11:50
You can make an appointment to meet at other times also.
I try to respond to emails within 24 hours. You should not expect a response to emails received after 5:00 PM until the next day.
Attendance and lateness policy
Students are expected to attend class and labs. Multiple absences without a written excuse can result in a reduced grade for the class.
If you are not present when attendance is taken, but arrive to class later in the period, be sure to make sure I know that you were in attendance.
Please ensure that any work you take credit for is your own. Homework should be assumed to be individual work unless it is explicitly given as group work.
When working on individual coding assignments (i.e. all assignments not explicitly labeled as pair or group assignments) you should never look at other people's code for your benefit or allow them to look at yours for their benefit. You may look at another person's code in order to help them identify a problem they are having.
There are sophisticated tools available to identify code plagiarism. Simply changing superficial characteristics of code (variable names, line breaks, spacing) is not enough to conceal when a program has been cribbed. Aside from this, however, someone who copies code cheats themselves out of the opportunity to learn the material. Sooner or later, this will catch up to them.
If your work involves contributing to code written by other people (as is often the case when working with open source software) always be aware of and respectful of the license governing the use of the code, and always be clear about where your own contributions begin and end.
Soliciting answers to homework exercises on websites such as Stack Overflow is a breach of academic integrity and will be dealt with as such. Stack Overflow is a valuable resource for getting help with legitimate programming problems, so please use it appropriately. In addition to cheating yourself out of the opportunity to learn the material, posting homework questions pollutes Stack Overflow and shows disrespect for the efforts of your instructors in creating the exercises. You may turn to online resources (such as Stack Overflow or other forums) for help in overcoming programming hurdles, such as you may encounter working on your group project in CS 240. If you are not sure whether your question is appropriate for a public forum, check with me first. Once you post content on Stack Overflow, you will probably not be able to remove it, so don't post anything you may come to regret.
Finally, word of general advice for life in the Internet age. Do not assume your online behavior is anonymous, even if you have not intentionally identified yourself.
Devices in class
Please avoid using devices during class in ways that distract yourself or others.
The university is a place for respectful exchange of information and ideas.
University-wide policies regarding student conduct and integrity can be found in the UPS Student Handbook.
If you have any questions or problems related to this class or anything else I may be able to help with, please don't hesitate to email me or drop by my office any time to talk.
Academic accommodations are available for students with disabilities who are registered with the Office of the Office of Accessibility and Accommodations. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Peggy Perno, Director of the Office of Accessibility and Accommodations, 105 Howarth, 253.879.3395. She will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
I also encourage all students having difficulty, whatever the reason, to consult privately with me at any time.
Please review university emergency preparedness and response procedures posted at www.pugetsound.edu/emergency/. There is a link on the university home page. Familiarize yourself with hall exit doors and the designated gathering area for your class and laboratory buildings.
If building evacuation becomes necessary (e.g. earthquake), meet your instructor at the designated gathering area so she/he can account for your presence. Then wait for further instructions. Do not return to the building or classroom until advised by a university emergency response representative. If confronted by an act of violence, be prepared to make quick decisions to protect your safety. Flee the area by running away from the source of danger if you can safely do so. If this is not possible, shelter in place by securing classroom or lab doors and windows, closing blinds, and turning off room lights. Lie on the floor out of sight and away from windows and doors. Place cell phones or pagers on vibrate so that you can receive messages quietly. Wait for further instructions.
In this class students will study the fundamentals of computer network programming. Reading and lectures will cover the principles and general concepts of modern networking, and in-class labs and homework assignments will give students experience with practical network analysis and programming. A variety of practical tools will be employed, including the Python programming language and socket libraries, the Wireshark packet sniffer, and the Seattle distributed networking environment.
Goals of the class
By the end of this class students will
- Have a general understanding of how the Internet works and a familiarity with its documentation (RFCs)
- Be familiar with the layers the TCP/IP protocol stack and understand the roles they play in networking
- Understand key network protocols in each layer
- Gain experience with socket programming using Python
- Learn about practical network monitoring using tools such as Wireshark
Textbook & required materials
The textbook for this class is:
Computer Neworking: A Top-Down Approach, 7th Edition by James Kurose & Keith Ross
Lecture slides or in-class resources for this class will be posted soon after the lecture is completed. You can find them here.
|1||1/18||Introduction; Structure of the Internet||CN 1.1-1.5||HW 1: Python tutorial due Mon, 1/23
Wireshark Lab 1 due Fri, 1/27
(Work in class Wed)
|2||1/23||Network layers & protocols;
+ Ch 1 review Qs
RFC 1958: Architectural Principles of the Internet
|HW 2: Python tutorial, Pt 2
& Ch 1 review Qs due Mon, 1/30
Wireshark Lab 2 due Fri, 2/3
|3||1/30||Application layer;||CN 2.2-2.8||HW 3: Ch 2 review Qs & problems due Mon, 2/6
Wireshark Lab 3 due Fri, 2/10
|4||2/6||Socket programming||Python Socket HowTo||HW 4: Simple web server due Wed, 2/15|
|5||2/13||HTTP, SMTP, & DNS||CN 3.1-3.3||Wireshark Lab 4 due Mon, 2/20
HW 5: UDP Pinger due Fri, 2/24
|6||2/20||Transport layer protocols;
UDP & TCP
|CN 3.4-3.5||Wireshark Lab 5 due Mon, 2/27
HW 6: SMTP/TLS due Fri, 3/3
|7||2/27||TCP; Congestion control||CN 3.6-3.8||HW 7: Proxy Server due Wed, 3/8|
Midterm Exam Fri 3/10
Routing & forwarding
No class Fri, 3/24
and 4.3.3 (DHCP)
|Wireshark Lab 6 due Fri, 3/24
HW 8: BT Downloader (Pt 1) due Fri, 3/31
|11||3/27||Internet routing||CN 4.3-4.5|
|12||4/3||Link layer||Wireshark Lab 7 due Wed, 4/12
HW 9: BT Downloader (Pt 2) due Fri, 4/14
|13||4/10||Link layer protocols||CN 5.1-5.4||Wireshark Lab 8 due Mon, 4/17|
|14||4/17||Physical layer||CN 5.5-5.7||HW 10: Getting Started with Seattle due Fri, 4/21|
|15||4/24||Wireless & mobile||CN 6.1-6.3||HW 11: Reliable Transport Protocol with Seattle due Fri, 5/12|
Classes end Wed, 5/3
|Final exam Fri 5/12 4:00PM-6:00PM|
This course will be graded based on the following factors:
- 60% Homework & labs
- 30% Exams (one midterm and one final)
- 10% Attendance & participation
More specifically, the following will be expected of you:
Readings: Reading assignments are listed on the class calendar. Material from the readings will appear on the midterm and final exams.
Homework assignments and labs: There will be regular programming assignments and labs that you'll be expected to carry out on your own (in some cases, we will carry out labs in part or completely during class, but this probably won't be the norm, as there is no dedicated lab period associated with this class). Assignments and labs must be submitted on Moodle. Late work will be penalized by 20% per day, and will not be accepted more than 4 days after the original deadline.
Exams: There will be one in-class midterm exam and a final exam at the end of the semester. Refer to the calendar for the exam schedule.
Attendance and participation: Regular attendance and conscious presence in class will earn the allotted 10%. This portion of your grade may be affected by repeated unexcused absences.
The class Moodle page will be where you can turn in assignments and find some class materials.
You should install Python 3 if you haven't already. If you are working on Mac OS X, you may already have Python 2.7 installed. It's not a problem to have them both installed.