Course syllabus

Course-PM

EDA387/DIT671 Computer networks lp1 (7.5 hp)

The Department of Computer Science and Engineering offers the course.

Contact details

  • Examiner: Elad Michael Schiller (EMS) - elad(at)chalmers(dot)se, phone: 031-772 10 52 (examiner). No office hours. We can meet after each lecture.
  • Teaching assistants
    • Alessio Cicero (AC) - alessio.cicero(at)chalmers.se 
    • Yixing Zhang (YZ) - yixing(at)chalmers(dot)se
    • Jacob Garby (JG) - garby(at)chalmers.se
    • Yenan Wang (YW) - yenan(at)student.chalmers.se 
    • Nadia Papa (NP) - pnadia(at)student.chalmers.se

 

Course purpose

Computer networks cover a range of sub-specialties including self-stabilizing algorithms for computer networks, programming using the BSD socket API, software-defined networks, and communication concepts and protocols. Mastery of computer networks involves both theory and practice in the design, implementation, and use of network protocols and services.

 

The aim of this course is to learn to design and analyze self-stabilizing algorithms for network protocols, to gain experience in socket programming, and to gain knowledge in existing communication networks, including fundamental tasks related to supporting systems and protocols. The course, which builds on the fundamental TCP/IP courses, also aims to provide in-depth knowledge of designing and analyzing fault-tolerant network-oriented algorithms and to gain knowledge in existing communication networks, such as the Internet technology with an example of core supporting communication protocols. Experience with network-oriented programming is part of the course.

Schedule

TimeEdit

Course literature

  • The focus literature: Shlomi Dolev, Self-Stabilization, 1st edition, The MIT Press, ISBN-10:0-26-204178-2. We use this book in the part of algorithms for computer networks.  Here is a link to the publisher and Amazon. Often Chalmers Library has digital copies of this book. Unfortunately, Cremona Chalmers Bokhandel AB does not have the book in stock.
  • There is related literature which you are not asked to buy:
    • W. Richard Stevens, Bill Fenner, Andrew M. Rudoff, Unix Network Programming, Volume 1: The Sockets Networking API, 3rd edition, Addison-Wesley Professional, ISBN-10: 0-13-141155-1. We use this book in the networking API part. Here you can find some additional material. This book can be used for improving your programming abilities in the area BUT it is not required for passing the labs or the final written exam.
    • Douglas E Comer: Internetworking with TCP/IP, Volume 1, 6th edition, Pearson New International Edition: ISBN-13 9781292040813. Basic IP and TCP technology are expected to have been covered in earlier courses. It will only be treated as a rehearsal in this course. 
    • James F. Kurose, Keith W. Ross: Computer Networking: A Top-Down Approach, 6th edition, Pearson International Edition: ISBN-10: 0-273-76896-4, ISBN-13: 978-0-273-76896-8. We use this book for reviewing material covered in earlier courses and for the Network security part.

 

Course design

This course offers learning experiences that involve hands-on experimentation and analysis as they reinforce student understanding of concepts and their application to real-world problems. Several laboratory experiments are given and involve API programming for fault-tolerance network systems, and Internet interconnections and services from a practical perspective, and protocols' design and analysis with a strong emphasis on self-stabilizing algorithms. This course provides the students with the ability to understand fundamental issues in the design of methods for computer network protocols.

Organization

Lectures, exercises, home assignments, and laboratory assignments.

Examination including compulsory elements

Written exam at the end of the course and approved lab assignments from the four parts.

Learning objectives and syllabus

Knowledge and understanding 
You should be able to describe and analyze basic protocols and their limitations on networks like the Internet. You should also be able to analyze and discuss network issues, such as software-defined networks (SDNs), TCP connections, contention, performance, and flow control. 

Skills and abilities 
You must be able to define and analyze a computer network through communication graphs and as a distributed system. You should be able to critically analyze the effect of failures, such as transient faults, message omission, and topology changes, on the system and how such failures can propagate and affect computer networks. The students must develop small-scale network applications using fundamental networking techniques during the course. You should be able to design and build your network-oriented program and test and demonstrate it in the lab. 

The written communication skills in this course include the write-up of lab reports and the demonstration of protocol correctness. You should be able to explain and demonstrate the correctness of the studied protocol and clearly describe the network algorithms you design yourself. 

The successful completion of the course requires a skillful and knowledgeable demonstration of these software developments for advanced fault-tolerant client-server and peer-to-peer architectures. You are also expected to design distributed computer network algorithms and show why they work.

Judgment and approach
The student judgment skills should include the ability to describe, design, and analyze existing and new algorithms for network protocols, with an extreme emphasis on self-stabilizing algorithms for computer networks. [written exam, home assignments, and labs]

 

Academic Honesty and Integrity 

We follow Chalmers’ guidelines for “Academic Honesty and Integrity” --- all students are expected to read this document. In a nutshell, when you write something, write it in your own words (using only your own words) --- do not copy-paste. If you need to use an algorithm we learned in class, state its name and which section in the book it appears in (or cite the original article by author names, paper title, publication year, publication venue, and publisher). It is forbidden to copy-paste! There is never a need to clone any part of a code or text in your exam or lab report. Instead, cite the needed algorithm and/or lemma/theorem. The examiner is expected to report all suspected violations --- the examiner has no choice.

 

Examination: What Does it Take to Pass the Course?

To pass the course, you must pass a written exam at the end of the course, as well as approved labs and home assignments. You must also follow the lectures, attend them, and understand the discussions.

Written exams: There will be three written exam opportunities. Each written exam will contain at least 60 points. At Chalmers, 30-38 will give a three as a grade, 39-47 will give a four, and 48-max five. At GU, 30-47 will give a G and 48-max VG. The knowledge base evaluated in the exam consists of the course books, any handout material, class presentations, home assignments, and labs. 

Laboratory Assignments: The course includes an extensive work plan. All labs are mandatory, with some specific exceptions, which we list next to each lab. Any student is allowed, at any time and without notice, to decide not to do at most one mandatory lab from part x by performing a non-mandatory lab from part y, where x≠y.

 

Link to the syllabus on Studieportalen.

Link to the syllabus Chalmers.
Link to the syllabus GU.

Course summary:

Date Details Due