Computer Networks



Overview

This course introduces fundamental concepts of computer networks. Lectures provide an introduction to the whole network procotol stack, presented in a way that is accessible for students with only a computer systems background, discuss protocol standards, and existing technologies. Topics include OSI, TCP/IP and knowledge of each layer, Network Applications, Network Security, Multimedia and Advanced Technologies.

The goal is for students to learn the basic concepts in computer network, gain an understanding of technologies in today's network environment and advanced technologies.

  • Instructor: Chenren Xu
  • Lecture time: Mon 13:00 pm - 14:50 pm    Thu 8:00 am - 9:50 am (double week)
  • Location: Room 414, No. 2 Teaching Building(二教414)

Prerequisites

This course assumes you have taken an “Introduction to Computer Systems” course(For example based on the O’Hallaron and Bryant book).

For programming experience, you need to have knowledge in C/C++ programming for the project.

Course Staff

Instructors

NameEmailOffice
Chenren Xu Science Building No.5 515S

Teaching Assistants

NameEmailOffice
Jing Wang     Science Building No.5 517
Shuang Jiang     Science Building No.5 517

Course Policies

Collaboration

You must complete individual assignments and tests by yourself. And you must collaborate with your partner in the team-based project and labs.

It is acceptable and encouraged to help fellow students with generic problems(e.g. where to find documentation, use of tools...).

Everyone of you need to provide proper credit when reusing material.

Academic Integrity

The Peking University Policy on Integrity applies. We will strictly follow university policy on reporting cases of cheating.

Textbooks

The required textbook for the course is Computer Networks (5th Edition), by Andrew Tanenbaum and David Wetherall, Prentice Hall. This will not cover all the material in the book, but slides are detailed.

Another textbook that you can use as a substitute is Computer Networking: A Top-Down Approach (6th Edition), by Jim Kurose and Keith Ross, Addison Wesley.

For the programming projects, please see Dave's Notes on Software Engineering for Systems Hackers.

There are a few recommended texts which are useful references (especially if networking becomes your career).

  • Data and Computer Communications (10th Edition) by W. William Stallings
  • Unix Network Programming: Networking APIs: Sockets and XTI (Volume 1) by W. Richard Stevens.
  • Advanced Programming in the Unix Environment by W. Richard Stevens, Addison-Wesley, 1993.

Finally, if you have not taken an "Introduction to Computer System" course, you may find this textbook useful as a gentle, software-focused introduction to computer architecture.

  • Computer Systems: A Programmer's Perspective by Randal E. Bryant and David R. O'Hallaron. Prentice Hall, 2003

Grading

Your final grade for the course will be based on the following weights for the individual assignments:

  • 20% 4 Quizzes
  • 30% Midterm
  • 50% Research Project
  • 10% Bonus points for in-class presentation

Take the project deadlines seriously. You can extend the deadlines with a 20% penalty per day. Note that any submissions will NOT be accepted 48 hours after the due date.

Schedule (dates and topics are subject to change)

Date Instructor Topics Notes
Mon 09/12 Chenren Xu Overview
Project out
Handout: Overview
Readings: E2Earg, DARPNet
Mon 09/19 Chenren Xu Network App
Handout: App
Readings: CAN, Chord
Thu 09/22 Chenren Xu Network App
Mon 09/26 Chenren Xu Network App
Project meeting
Mon 10/10 Chenren Xu PHY and Wireless
Lab 1 out
Handout: PHY
Readings: 802.11 MIMO
Mon 10/17 Chenren Xu PHY and Wireless
Thu 10/20 Chenren Xu PHY and Wireless
Mon 10/24 Chenren Xu (W)LAN and Link Tech
Quiz 1
Handout: LinkTech
Readings: RoofNet
Mon 10/31 Chenren Xu (W)LAN and Link Tech
Project proposal due
Thu 11/03 Chenren Xu (W)LAN and Link Tech
Lab 1 due, Lab 2 out
Mon 11/07 Chenren Xu (W)LAN and Link Tech
Quiz 2
Mon 11/14 Chenren Xu Internetworking
Handout: Internetworking
Readings: DCNets
Thu 11/17 Chenren Xu Internetworking
Mon 11/21 Chenren Xu Internetworking
Mon 11/28 Chenren Xu End-to-end Transport
Handout: Transport
Quiz 3
Readings: DCTCP, MPTCP, WirelessTCP
Thu 12/01 Chenren Xu End-to-end Transport
Mon 12/05 Chenren Xu End-to-end Transport
Lab 3 out
Mon 12/12 Chenren Xu Midterm
Lab2 due
Thu 12/15 Chenren Xu Network Security
Handout: NetSec
Readings: Tor, APIP
Mon 12/19 Chenren Xu Multimedia Networking
Readings: CongestionManager, QoE
Mon 12/26 Chenren Xu Emerging Tech
Quiz 4
Readings: SDN, OpenFlow, Internet@C
Thu 12/29 Chenren Xu Project Presentation
Lab 3 due

Assignments

Assignment Assigned Due Notes
Project Proposal 2016/09/12 2016/10/31 Proposal Format, Template
Quiz 1 2016/10/24
Quiz 2 2016/11/07
Quiz 3 2016/11/28
Midterm 2016/12/12 In class
Quiz 4 2016/12/26
Project Presentation 2016/12/29 In class
Project Report 2017/01/20 Poster Example, Template

The due time is before 23:59 PM of that day. For the research project, please send your submissions to js_eecs@pku.edu.cn.

There will be one research project and four quizzes in class.

All quizzes are to be done individually. The project will be done in groups of 2 or 3 people. This is an opportunity to experience the joys and frustrations of working with others. It's a skill you only get better at with practice.

In the 04832250 course, you will be expected to learn and practice good software engineering, as well as demonstrate mastery of the networking concepts. Both partners in a project group will need to fully understand the project and your solution in order to do well on those exam questions relating to the labs and projects. For example, a typical question might be: "When you implemented X, you came across a particular situation Y that required some care. Explain why this simple solution Z doesn't work and describe how you solved it." We'll pick questions such that it will take some effort to figure out Y. If you didn't take the time to work the problem yourself and just relied on your partner, you won't have enough time during the test to figure it out. Be careful, the insights you'll need will come only from actually solving the problem as opposed to just seeing the solution.

Notes on the Research Project

A key objective of 04832250 is to provide a significant experience with system programming, where you must write programs that are robust and that must integrate with a large, installed software base. Oftentimes, these programs are the ones that other people will build upon or use as tools. Systems programming is very different from the application program development you have done in earlier courses:

  • It is typically done in a low-level language, such as C, to ensure close control over system resources.
  • Especially with server code, it must be designed to run indefinitely. It must reliably handle every possible error condition, and it must manage resources such as memory with care.
  • It must be secure. Connecting a system to a network makes it vulnerable to malicious attacks initiated anywhere in the world. Poorly designed or implemented network software provides a common entrypoint for attack. System software must be invulnerable to flaws such as string overflows or malformed incoming messages. (This point bears repeating: Any system software must stringently check input it receives from the network or from the user. Do not trust either one! They're often out to get you.)
  • The interfaces to other parts of the system are generally specified by documented protocols.
  • Networking software typically involves concurrency, both within individual machines (multiple processes or threads) as well as among the different network components.
  • An important part of systems programming is to be able to work in teams. Also, you need to use version control (git for the project) to manage the shared code base.

We'll go into more details about each of these points during the recitation sections. But keep in mind: the programming assignments in 04832250 are larger and more open-ended than in other courses. Doing a good job on the project requires more than just producing code that runs: it should have a good overall organization, be well implemented and documented, and be thoroughly tested.

Original Link

This is the image of the orginal website by the course instructors, and if you want to get more original info, please visit :

http://soar.pku.edu.cn/CompNets/Fall16/index.html