BYUBRIGHAM YOUNG UNIVERSITY
Computer Science
CS 460 Computer Communications and Networking
Archive

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. The programming assignments will be designed to provide practical experience in both network applications and network infrastructure. The first set of programs will use Python and will focus on network applications, including socket programming, threading, concurrency, and protocol design. A second set of programs will enable the students to build their own network stack and will use both Python and C. Finally, some programming exercises will ask students to analyze packet traces in order to understand the packet-level behavior of computer networks.

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 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.

We will also do some C programming in this class. If you are new to C, then I recommend purchasing

Practical C Programming, 3rd Edition, by Steve Oualline, O'Reilly & Associates, August 1997, ISBN 1-56592-306-5.

and/or

Practical C++ Programming, 2nd Edition, by Steve Oualline, O'Reilly & Associates, December 2002, ISBN 0-596-00419-2.

Assignments, Group Work, Grading Policy

The assignments for this class will consist of homework, programs, and exams. Group work is permitted for homework and programs, but NOT for exams. Groups may consist of 2-3 students; no exceptions will be made.

Group work is meant to be done jointly. Students in a group should work on problems and programs together, and each student should perform a roughly equal amount of work. When you turn in group work, turn in a single copy, with each group member signing his or her name. By signing your name, you are attesting that you have invested an equal amount of time in the assignment. If your group members feel you are not participating equally, they may remove you from the group immediately following the conclusion of any assignment.

Programs must be written in the assigned language and must compile and run on the department's Linux machines.

Grading for homeworks 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.

Programming assignments will be graded on an scale of 0 to 100. A grading 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:

Homework20%
Programming Assignments40%
Midterm20%
Final20%

No late assignments will be accepted. Turn in partial work if you are not finished.

Academic Honesty

The BYU Honor Code states that:

BYU students should seek to be totally honest in their dealings with others. They should complete their own work and be evaluated based upon that work. They should avoid academic dishonesty and misconduct in all its forms, including but not limited to plagiarism, fabrication or falsification, cheating, and other academic misconduct:

For this course, some assignments are categorized as group work. For these assignments, you may form a group that works together to produce one solution. Any assignment not categorized as group work must be done individually. You are encouraged to generally discuss problems with other groups or students, but you may never use some other group's or student's solution or code in any way. The use of sources (ideas, quotations, paraphrases) must be properly acknowledged and documented.

I expect that all students will uphold the BYU Honor Code. If violations occur, I will take actions that are fair and equitable. In most cases, if a student violates the Academic Honesty portion of the Honor Code, I will give that student a failing grade.