This course provides a broad view of computer networks. The course exposes students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. The objective is to focus on an understanding of fundamental concepts of modern computer network architecture from a design and performance perspective. Topics covered include: physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic and network security. Students will be expected to do systems/network programming and make use of simulation and measurement tools to gain an appreciation of current network design and performance issues.
Recommended background: CS2303 or CS2301
Intended audience: CS, RBE and IMGD majors
Computer Networking - A Top-Down Approach (5th edition), by James F. Kurose and Keith W. Ross, copyright Pearson, 2010. ISBN: 0-13-607967-9 [http://www.aw-bc.com/kurose_ross/] [Student resources]
An excellent book for learning about networking. The top-down
angle providing context from a network user persepctive,
motivating discovery of the workijngs of networks at lower layers.
Full of reivew questions, problems, wireshark labs and programming
assignments.
Chapters: 1-5 (see reading for details)
Here is the list of topics covered in this course (not necessarily in order of appearance):
Final grades will be computed as follows:
There will be 2 programming projects done to measure network performance or implement signficant portions of networking code. The implementation can be done in a variety of environments and languages. Programming will not be taught as part of this course. System calls and other aspects of Unix will be introduced as needed and as the course progresses. The grading policy for each project will be provided at the time of the assignment. In general, each project a basic objective for the majority of the assignment points. There may be an extended objective for demonstrating additional work and understanding. Projects, including all data and source code, as appropriate, will be turned in online as specified in the writeups.
There will be 3-4 labs that use a network sniffer, Wireshark, to observe and analyze how network protocols work for different Internet applications and services. The labs will direct you in the use of the network sniffer and ask some questions to help guide learning how to use such a tool. The labs will be turned in online, too.
There will be 3-4 written homeworks based on questions from the text book. They are to supplement the course lecture and help prepare for the exams. You must work alone for the homework. All written homeworks are due in class on the day that they are due, unless otherwise noted.
There will be 2 in-class exams. The first is roughly mid-way through the term and the second on the last day. There is a remote possibility of a pop quiz for which no advance notice will be provided. Exams will be closed book and closed notes, unless otherwise indicated. The majority of each exam will cover basic ideas and objectives of the class with a few questions testing additional understanding and insight.
Final grades will reflect the extent to which you have demonstrated understanding of the material and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on projects, homework and exams have been met. A grade of an "A" will indicate significant achievement beyond the basic objectives and a grade of a "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances. Similarly, no makeup exams will be given unless there exist exceptional, extenuating circumstances.
Late assignments will be accepted up to one day (24 hours, with the weekend counting as one day) late. Any late assignment will be penalized 10% of total assignment value. Assignments will NOT be accepted more than one day beyond the due date. Exams are done, and due, in class. Homework is due in class at the beginning of class, unless otherwise noted. Projects and Labs are due online at 11:59pm on the due date, unless otherwise noted. Exceptions to these rules can be made only beforehand.
This course is intended for serious students. Participants will be expected to adhere to all rules of professional behavior. It is to be emphasized that knowledge of material and professional behavior are tied together; failure in one of them negates any excellence in the other.
All work is expected to be done individually. As such, students are encouraged to discuss their work with each other, but are also expected to do the work by themselves.
Any breach of professional ethics as evidenced, for example, by copying homework, exams or projects, downloading code from the Internet, cooperating in more than discussions and study groups, misusing computer resources, or using outside help of any kind, will be considered adequate reason for an NR in the course and a report to the Dean of Students. Refer to the official WPI statements on Academic Honesty for details. Those who have any doubt about what that means, and fail to gain that understanding after a discussion with the instructor, are encouraged to drop this class. Remember this warning - any breach of ethics will earn you an NR. When in doubt, ask!
The list of reading will be posted here, in the order covered in class.
Slides from the in-class lectures will be available shortly after they are presented, depending upon how things go. Here is what we have so far:
Admin | pptx | |
Introduction | pptx | |
Application Layer | pptx | |
Sockets | ppt | |
Transport Layer | pptx | |
TCP Congestion Control | ppt | |
Network Layer | pptx | |
Data Link Layer | pptx | |
Review | pptx |
This section has any samples discussed in class, practice exams or any other demonstration-type class materials. Samples will be updated soon after the discussion in class begins.
Topic outlines for the exams:
C/C++:
talk-tcp.c
, listen-tcp.c
talk-udp.c
, listen-udp.c
Java:
TCPClient.java
, TCPServer.java
(pages 165 and 168).
UDPClient.java
, UDPServer.java
(pages 172 and 176).
A C example of code to do IP multicast is
in mcast.tar, along with some wrappers.
Extract (with tar xvf
) and then type "make".
Here are some samples showing the use of software signals:
signal.c
- simple use of a Unix signal handler.
signal2.c
- another simple use of a Unix signal handler.
signal-alarm.c
- using signal to catch alarms.