EECS-340 Introduction to Computer Networking, Fall 2018

Announcements

Remember to check this regularly!

Administrative Information

Professor

Fabián E. Bustamante
Technological Institute, L477
+1 847 491-2745
fabianb@...

TAs

TBA

Location and Time

Lectures: Mondays and Wednesdays 1:00-1:50PM
Tech Institute L361

Professor Office Hours: by appointment

TA Office Hours:TBD

Final Exam: Thursday, December 13: 9AM-11AM
(in the classroom)

Catalog Description

A top-down exploration of networking using the 5-layer model and the TCP/IP stack.

Course Prerequisites

  • Required: EECS-214
  • Required: EECS 213
  • Recommended: Unix development experience (gcc, gdb, make, etc)

In compliance with Section 504 of the 1973 Rehabilitation Act and the Americans with Disabilities Act, Northwestern University is committed to providing equal access to all programming. Students with disabilities seeking accommodations are encouraged to contact the office of Services for Students with Disabilities (SSD) at +1 847 467-5530 or This email address is being protected from spambots. You need JavaScript enabled to view it. . SSD is located in the basement of Scott Hall. Additionally, I am available to discuss disability-related needs during office hours or by appointment.

This course studies computer networks and the services built on top of them. Topics include packet switching, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), network security, network management, software defined networking, and the design of network services (multimedia, file, and web servers).

Communication Channels

There are a number of communication channels set up for this class:

  • We will use the course web site to post announcements related to the course. You should check this regularly for schedule changes, clarifications and corrections to assignments, and other course-related announcements.
  • We will use Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on our Piazza for DS
  • There is always email for questions that would be inappropriate to post on the newsgroup/discussion-board. When using email to contact the staff please start your subject line with "eecs340: helpful-comment" to ensure a prompt response.

Course Organization

The course is organized as a series of lecture, projects, homework assignments, a midterm and a final exam.

  • Lectures - A set of lectures on the core of the material.
  • Readings - Textbook and paper reading in preparation for (not substitution of) the lecture.
  • Homework assignments - A set of assignments meant as reader enforcers.
  • Projects - Four programming projects.
  • A midterm and a final exam.

Grading

I use a criterion-referenced method to assign your grade; in other words, your grade will be based on how well you do relative to predetermined performance levels, instead of in comparison with the rest of the class. Thus, if a test has 100 possible points, anyone with a score of 90 or greater will get an A (90-93: A-), those with scores of 80 or greater will get a B, those with scores of 70 or greater will get a C, and so on. Notice that this means that if everyone works hard and gets >93, everyone gets an A.

Total scores (between 0 and 100) will be determined, roughly, as follows:

  • Homework assignments 15% (+5% extra paper-related questions)
  • Class participation 10%
  • Projects 50%
  • Exam 25% (+5% extra on paper-relatex questions)

Policies

Late policy:

Unless otherwise indicated, homework assignments and projects are due by midnight on their due date. If you hand in an assignment late, we will take off 10% for each day (or portion thereof) it is late. Assignments that are three or more days late receive no credit.

Cheating vs. Collaboration:

Collaboration is a really good thing and we encourage it. On the other hand, cheating is considered a very serious offense. When in doubt, remember that it's OK to meet with colleagues, study for exams together, and discuss assignments with them. However, what you turn in must be your own (or for group projects, your group's own) work. Copying code, solution sets, etc. from other people or any other sources is strictly prohibited.

The following is our intended calendar with topics, slides (as they become available) and reference material. Note "CDKB5 #" refers to chapters of the class' textbook (Coulouris et al., Distributed Systems: Concepts and Design, 2012). Papers, except when tagged as [reference], may be part of homework assignment/finals questions.

Week Date Topic
1 4/3 Introduction [PDF]

References:

4/4 Networking [PDF]

References:

2 4/9 Communication - RPC/RMI [PDF]

References:

4/11 Indirect communication [PDF]

References:

3 4/16 Time and Synchronization [PDF]

References:

4/18 Global State [PDF]

References:

4 4/23 Coordination I [PDF]

References:

4/25 Coordination II [PDF]

References:

5 4/30 Consensus [PDF]

References:

5/2 Consensus [PDF]

References:

6 5/7 No lecture
5/9 Transactions and Distributed Transactions [PDF]
7 5/14 Transactions and Distributed Transactions [PDF]
5/16 Replication and consistency [pdf]

References:

8 5/21 Replication and consistency [pdf]

References:

5/23 Distributed File Systems [pdf]

References:

9 5/28 Memorial Day
5/30 Distributed Storage [pdf]

References:

10 6/4 Name Services and Content distribution networks [pdf]

References:

6/6 Overlay Networks [pdf]

References:

* 6/11 Final

Assignments

There are four projects and some basic homework assignments, mostly meant as reading eforcers, and four team-projects that build on each other.

We will post all asignments in the Canvas' site for the course.

Projects

This year you will build two large systems, a mapreduce library and a replicated state machine protocol. Each effort is divided into two projects for a total of four projects. Projects are to be done in teams of 2-3 students (1 is not allowed).

All projects will be done in Go, a language that was originally created within Google, but is now a fully open-source project. Go is garbage-collected and has built-in coroutines (called goroutines) and channels, making it highly suited to building distributed systems. Its standard library is already pretty comprehensive. For example, take a look at the net and rpc packages.

Calendar of assignments

Materials

Required