Syllabus
Course Description and Goals
This is an introductory course in networking for undergraduate and beginning graduate students. The goals of this course are:
- Help students understand the principles of network design, using a top-down approach and focusing on technologies used in the Internet.
- Help students learn to design network-aware applications using sockets, threading, and concurrency.
- Help students understand how the Internet works, from the transport layer down to the physical layer.
- Help students prepare for future positions in research and development by introducing them to the latest research in Internet technologies.
- Help students become better writers by emphasizing written work where possible.
- Help students apply networking technology in ways that can enrich their lives and assist in spreading the gospel.
Topics this course covers include application-layer networking, transport protocols (TCP and UDP), routing protocols, IP, link-level protocols, wireless networking, and multimedia networking. Along the way we will cover some of the latest research in peer-to-peer networking, multicast communication, and wireless and multimedia networking.
To meet the goals of the course, students will complete written homeworks, programming assignments, a midterm exam, and a final. The homeworks and exams will consist primarily of written questions that ask the students to apply the principles of network design to a given problem. Some homework assignments will also include exercises to analyze packet traces. The programming assignments will be designed to provide practical experience in both network applications and network infrastructure. Most of the programming assignments will use Python and will include network applications -- using socket programming, threading, concurrency, and protocol design -- and building your own version of TCP.
Textbooks
For the lecture material, we will use
Computer Networking: A Top-Down Approach Featuring the Internet, third edition, by James F. Kurose and Keith W. Ross, Addison Wesley, 2005, ISBN 0-321-22735-2.
We will do a lot of Python programming in this class. I suggest you learn Python by reading two of the online books that are available:
Both of these books are available for purchase if you prefer a physical copy. I also suggest that you become familiar with the official Python documentation.
Assignments and Grading Policy
The assignments for this class will consist of homework, labs, and exams. Labs must be written in the assigned language and must compile and run on the department's Linux machines.
All assignments for this class must be done individually. You are encouraged to generally discuss problems with other students, but you may never use some other student's solution or code in any way. The use of sources (ideas, quotations, paraphrases) must be properly acknowledged and documented.
Grading for homework and exams will be on a scale of 0 to 10 for each problem, with a final score based on the total possible points. A score of 10 indicates your answer is entirely correct (A), and a score of 5 indicates your answer is entirely wrong but you made a reasonable effort (E). Failure to make a reasonable effort to answer a question scores a 0.
Labs will be graded according to a survey and scored by the TA. The survey will be released before each assignment is due, indicating how many points each part of the assignment is worth.
Your final grade will be computed by weighting all scores as follows:
| Homework | 10% |
| Labs | 40% |
| Exams | 50% |
All homework is due on the day indicated and no late homework is accepted.
Labs are due on the day indicated, but may be turned in late for partial credit. You may turn in a lab up to one week late for a penalty of 10% of the assignment value. If you are more than one week late, you can still turn the lab in up to the last day of class for a 20% penalty. Penalty exceptions can only be made in advance of the original deadline and with a medical or strong personal excuse.
You may always turn in partial work if you are not finished and you will be graded on what you have accomplished. No work can be turned in after the last day of class.
Educational Policies
Honor Code Standards
In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university.
Policy on Harassment
Harassment of any kind is inappropriate at BYU. Specifically, BYU's policy against sexual harassment extends not only to employees of the university but to students as well. If you encounter sexual harassment, gender-based discrimination, or other inappropriate behavior, please talk to your professor, contact the Equal Employment Office at 422-5895 or 367-5689, or contact the Honor Code Office at 422-2847.
Policy on Disabilities
BYU is committed to providing reasonable accommodation to qualified persons with disabilities. If you have any disability that may adversely affect your success in this course, please contact the University Accessibility Center at 422-2767. Services deemed appropriate will be coordinated with the student and instructor by that office.
