This course provides a broad introduction to computer networking. It addresses all four major architectural layers of modern computer networks (application layer, transport layer, network layer and link layer), as well as selected topics from multimedia networking, wireless networking and network security. Application layer topics include basic network programming and application layer protocols, including the protocols that underlie the world-wide web, electronic mail, the domain name system and peer-to-peer applications. Transport layer topics include the User Datagram Protocol (UDP), principles of reliable data transfer and the Transmission Control Protocol (TCP). Network layer topics include several key protocols from the Internet protocol suite (IPv4, ICMP, DHCP, NAT and IPv6), plus router data plane functions, general network routing algorithms and the specific internet routing procols, RIP, OSPF and BGP. Link layer topics include multi-access protocols, Collision-Sense Multiple Access with Collision Detection (CSMA/CD), Ethernet, link layer switching, and Virtual Local Area Networks (VLAN). Wireless topics include WiFi, cellular wireless networks and mobile IP. Prerequisite: CSE 241. Credit: 3 units.
Reading Assignments. The course outline below includes reading assignments from Kurose and Ross and other sources. You are expected to complete the assigned reading before class on the assigned date. A good practice is to jot down notes as you read the book and bring up any questions you have at the start of each class. Some of the material in the assigned reading will not be discussed explicitly in class, unless you ask about it. You will be expected to know all the material in the assigned readings, not just the material that is explicitly covered in class.
Review Questions. As part of your preparation for each class, you are required to answer 2-3 short review questions. If you've done the reading, these will typically require less than half an hour. The main purpose of the review questions is to nudge you to keep up with the reading and help you focus more deeply on the material. The review questions will be collected and checked to verify that you've made an honest effort, but they will not be graded or returned.
Class format. Much of our class time will be spent working through exercises and solving problems. Please bring your textbook to class! In class, you may work individually or with a partner. If you want to work with a specific partner, you should make a point to sit together. You should also bring a laptop (or tablet) to class (or work with a parnter who has one). Some of the reading assignments listed below refer to Internet RFCs (Request for Comment). I will normally not expect you to read these before class, but I would like you to download a copy to your laptop and bring your laptop to class. You will need to refer to these when working some of the exercises. Use your favorite search engine to find the RFCs.
Quizes. There will be six quizes during the semester. They will be scheduled roughly every other week on Tuesdays (mostly). You will have 15 minutes for each quiz and they will be given at the start of class (don't be late). One low quiz score will be discarded from the final grade. If you miss a quiz, this will provide some cushion, but there will be no makeups.
Examinations. There will be three exams given during the semester. The first two will be in class on September 26 and October 31. The final exam will be on December 18 at 3:30, in Lopata 101. THERE WILL BE NO ALTERNATE TIMES FOR ANY OF THE EXAMS - YOU MUST ARRANGE OTHER ACTIVITIES TO AVOID CONFLICTS.
Lab Assignments. There will be six lab assignments over the course of the semester. These are designed to give you some hands-on experience that will help consolidate your understanding of the material covered in class. Most of the assignments will involve some programming (in Java), but none of the programs is very long. Most of the assignments will be done in the context of the Open Network Lab a network testbed that allows you to define your own private network configuration and run applications within it. You will be working with multiple computers at the same time, as well as network components such as routers. You will find that the biggest challenge in getting your labs to work will be keeping track of what all the different pieces need to do and how they interact. This requires that you be organized and that you plan ahead. Don't leave these assignments to the last minute. If you do, you will be unlikely to get them done on time.
An SVN repository has been setup for each of you. These will be used to provide you with files you will need for the labs and studios. They will also be used to submit your work. See the SVN instructions to find out how to access your repository.
On the first two labs, you are required to work individually. You may discuss the lab in general terms with other students, but you should not share code or allow another student to copy your lab report. After the first two labs, you will have the option of working with a lab partner. While you and your partner are expected to work together, you are required to work independently of other groups.
Using Unix/Linux. The hosts in the Open Network Lab run Linux and you will need some basic familiarity with the command line interface provided by the bash shell. If you haven't used Linux or Unix before, you'll need to do some extra reading. There are a number of good tutorials available on-line. This one is particularly good for beginners. Once you've mastered the basics, I suggest you take a look at the Bash reference manual and add a bookmark to it in your browser for quick reference. Also, get in the habit of consulting the "man pages" to get details about command options (for example type "man man" to get a description of the man command).
Optional Studios. Studio sessions will be held during the week before each lab is due. These will be held in Urbauer 214 on Wednesdays (10:00-11:30), Thursdays (10:00-11:30) and Fridays (2:30-4:00). Studios are optional, but are strongly recommended. Each studio will involve a set of exercises that are designed to help you become familiar with things you'll need to know to complete the upcoming lab. In studio, you will be working in groups of four and TAs will be there to answer questions and help you work through the excercises. If you want to work with a particular group of other students, make arrangements to attend the same studio session and arrive early enough to get a "cluster" for your group.
Preparing for Quizes and Exams. In order to master all of the material in the class you will need to work problems on your own, in addition to completing the formal assignments. The book has a large selection of problems, and the textbook web site provides access to many more, along with solutions. You should make full use of these resources when studying. You are encouraged to form study groups to work problems together. This can be very beneficial if you're smart about it. The key is to always remember that the objective is for YOU to master the course material, not just listen passively as others in your group talk about it. A good approach is to work a problem and then exchange solutions, so that you can see how your partners approached the problem. Then talk about what's different about your approaches and make sure that you all understand the solution. This works best if you keep the groups small, say 2 or 3 people. Anything more than that makes scheduling difficult and dilutes individual participation. You can also find copies of quizes and exams from last year on the web site.
Late Policy. Lab assignments are due in class on the day assigned. Solutions will be posted on the web site the same evening. Late submissions will not be accepted, not even for partial credit. No exceptions. If, for some reason, you cannot make it to class, you may turn in an assignment in the CSE department office, by giving it to one of the office staff, and asking them to initial and date it. It must be turned in before class. This is to be used in exceptional circumstances only. Do not make a habit of it.
Expectations. This course covers a great deal of material and you will need to devote substantial time and effort to mastering it. You should plan to spend an average of eight to ten hours per week outside of class, preparing for class, reading the textbook, working problems and doing the lab assignments.
On-line Communication. Most information about the course can be obtained electronically. In addition to this web site, there is a Piazza site which you can access using a web browser. I urge you to use the site to post questions you may have about lecture material, homeworks and lab assignments. You may also feel free to post general comments about the course material or to respond to questions from other students. The more you use it, the more valuable it will be to both you and your fellow students. The TAs and I will monitor the group regularly and answer questions, and provide guidance (and occasional hints) on assignments. We will also use it to post clarifications and corrections and to make general announcements, so you should check it regularly.
Consulting Hours. The TAs will hold consulting hours to help with questions on the course material and homework/lab assignments. The schedule will be posted here soon.
Sunday | 4:00-6:00 pm | Urbauer 215 | Taylor |
Sunday | 7:00-9:00 pm | Urbauer 215 | Nathan |
Monday | 4:00-5:00 pm | Urbauer 215 | Nathan |
Monday | 5:00-7:00 pm | Urbauer 215 | Vigo |
Tuesday | 9:00-10:00 am | Urbauer 215 | Chao |
Date | Lecture Notes | Reading Assignments | Review Questions | Labs/Quizes |
8/27 | Introduction to Computer Networks | Chapter 1 | - | - |
8/29 | Introduction to Network Applications and the Web | Chapter 1, 2.1, 2.2, RFC 2616 | pdf, doc | |
9/3 | Introduction to the Transport Layer and UDP Socket Programming | 3.1-3.3 Java Sockets Tutorial | pdf, doc | quiz 1, solution |
9/5 | File Transfer and Electronic Mail in the Internet | 2.3, 2.4 RFCs 959, 2821 | pdf, doc | |
9/10 | Internet Routers and the IPv4 Protocol | 4.1, 4.3, 4.4.1-4.4.3, RFC 791 | pdf, doc | lab 1 |
9/12 | Ethernet and the Internet | 5.1-5.4.2,5.7, 407-409, RFCs 826, 2236, 3376 | pdf, doc | |
9/17 | Introduction the Open Network Lab | 4.4.4, ONL tutorial (RLI section) | pdf, doc | quiz 2, solution |
9/19 | Auxiliary Internet Protocols - DHCP, NAT and ICMP | pages 345-355, RFCs 792, 1631, 2131 | pdf, doc | |
9/24 | Review | - | - | - |
9/26 | Exam 1, solutions | - | - | - |
Date | Lecture Notes | Reading Assignments | Review Questions | Labs/Quizes |
10/1 | Peer-to-Peer Applications | 2.6 | pdf, doc | lab 2 |
10/3 | Principles of Reliable Data Transport | 3.4 | pdf, doc | |
10/8 | The Domain Name System | 2.5, RFCs 1034, 1035 | pdf, doc | quiz 3, solution |
10/10 | A Closer Look at TCP | Congestion Control3.5 | pdf, doc | |
10/15 | TCP Flow Control and Congestion Control | 3.6, 3.7 | pdf, doc | lab 3 |
10/17 | Intra-domain Routing | 4.5 | pdf, doc | |
10/22 | Inter-domain Routing | 4.6 | pdf, doc | quiz 4, solution |
10/24 | Switched Local Area Networks | 5.4-5.6, Spanning Tree Protocol | pdf, doc | |
10/29 | Review | - | - | - |
10/31 | Exam 2, solutions | - | - | - |
Date | Lecture Notes | Reading Assignments | Review Questions | Labs/Quizes |
11/5 | Principles of Network Security | 8.1-8.4 | pdf, doc | lab 4 |
11/7 | Application and Network Layer Security | 8.5-8.8 | pdf, doc | - |
11/12 | Multicast Communication | RFC 2236, pages 1-4; RFC 4541, pages 1-7; RFC 4601, pages 1-12 | pdf, doc | quiz 5, solution |
11/14 | Multimedia Networking - Streaming | 7.1-7.2 | pdf, doc | |
11/19 | No class | |||
11/21 | Real-Time Multimedia Networking | 7.3-7.5, 4.2 | pdf, doc | lab 5 |
11/26 | Wireless Networking - WIFI | 6.1-6.3 | pdf, doc | quiz 6, solution |
12/3 | Mobility Management | 6.4-6.7 | pdf, doc | |
12/5 | IPv6 and Review | 4.4.4, RFC 2460 | pdf, doc | - |
12/10 | Review | - | - | - |