Practical Implementations of Network Coding


Lecturer: Professor Frank Fitzek

Main lecturer:
Professor Frank Fitzek

Assistant: M.Sc. Juan Cabrera

M.Sc. Juan Cabrera

Assistant: Dipl.-Ing. Zuo Xiang

Dipl.-Ing. Zuo Xiang


From July the course will take place in room BAR/I15.


This course introduces the students to the challenges and approaches of the state of the art implementations of network coding. The course is taught not just through lectures, but also with hands-on exercises using the Kodo software library. Kodo is available as a C++ and Python library, and also as a web tool. Therefore, students with different programming preferences will be able to approach it. 

The initial lectures refresh the knowledge of the students of the theoretical background of network coding, e.g., the min-cut max-flow of a network, inter-flow network coding, and intra-flow Random Linear Network Coding (RLNC). The student is then introduced to the state of the art software library Kodo and the advanced implementations of network coding such as systematic, sparse, tunable sparse, sliding window, etc. The course also covers the benefits of network coding in distributed storage applications. By the end of the course, the student will be introduced to advanced applications of network coding, e.g., Coded TCP, MORE, FULCRUM.

The exercises will teach the students how to use sockets in python as well as the python bindings of the Kodo software library for implementing unicast and broadcast communication applications.

Language of the course and exam: English

Optional course, 8th semester


It will be a written exam.

Examination schedule for the SS 2019:

Date: 07.08.2019
Time: 9:20 – 10:50 (2./3. DS) 90 Min.
Room: BAR/205/H

Time Schedule

Wednesday 6DS (16:40 – 18:10)
Thursday (Only 1.WO) 5DS (14:50 – 16:20)

[Please check the timetable and there may be new updates during the semester.]

Lectures and exercises:

03.Apr.2019L0BAR/213/HOrganization of the course
Motivation for network coding and use cases (5G, IoT, Wireless Mesh); Butterfly example; min cut max flow. Inter Flow network coding. Index Coding. Zick Zack Coding. CATWOMAN. Alice, Relay and Bob scenario under IEEE802.11 networks and asymmetric traffic
11.Apr.2019E1FAL07/08Analysis of the activity, throughput, power, and energy per bit of a system with the cross topology when using forwarding, network coding, and network coding with overhearing. Analysis of the asymmetric Alice and Bob scenario.
17.Apr.2019E2FAL07/08E1 continuation. Basic UDP transmissions over WIFI and an implementation of Alice, Relay and Bob scenario with digital inter-flow network coding (both with Python)
Inter Flow Network Coding (Continuation)
25.Apr.2019L3FAL07/08Introduction to Random Linear Network Coding
08.May.2019L4FAL07/08RLNC advanced 1 (systematic and sparse RLNC)
09.May.2019L5FAL07/08RLNC advanced 2
15.May.2019L6FAL07/08Network coding for storage.
22.May.2019-FAL07/08No lecture/Holiday.
23.May.2019E3/E4FAL07/08Introduction to KODO library. Full vector encoding ,decoding and recoding. Multi-path, Multi-hop full vector coding. Placement of recoder in multi-hop scenario.
29.May.2019CancelledFAL07/08No lecture/Cancelled
05.Jun.2019L7FAL07/08Network coding use cases
06.Jun.2019CancelledFAL07/08No lecture/ Business trip
12.Jun.2019-FAL07/08No lecture/Holiday.
19.Jun.2019L8FAL07/08Network coding hands-on examples. Course Summary.
20.jun.2019E5FAL07/08Emulate network coding applications with ComNetsEmu (A network emulator with NFV/SDN support) Part1
26.Jun.2019E6FAL07/08Emulate network coding applications with ComNetsEmu (A network emulator with NFV/SDN support) Part2
03.Jul.2019E7BAR/I15Distributed storage with NC and exercises summary.

Module Number: ET-12 10 21

Lecture Videos

Recommended Literature



Exercises (PDF files) can be downloaded here.

Hands-On Exercises

A. Online Jupyter Notebook for Intra-flow network coding examples

You can access the online Jupyter Notebook use this. address. Examples are in folder NetCod-Lecture-Series.

B. Build Kodo and Kodo Python bindings on your laptop

You require a valid Kodo license in order to build and use the library. Please request a license by filling out the license request form. Kodo is available under a research and education-friendly license, you can see the details here.

Once you obtain a valid license, please go to the Kodo Python repository here and follow the instructions to build it on your PC.

The lecturers can give you better support if you are building and running Kodo in a GNU/Linux system. Therefore, if you only have Windows or macOS installed, please install a GNU/Linux virtual machine first. You could use Virtualbox to install Ubuntu. You can also download an zipped VM image named (Ubuntu server 18.04 LTS with essential build tools and Python3 dependencies installed.) here and import the OVA file into Virtualbox. Please check the SHA256SUM and read the file for usage.

A video of different encoders-decoders pairs can be found here.

C. Network coding application emulation with ComNetsEmu

A emulation of placement of recoder in a chain topology with ComNetsEmu network emulator is introduced in E5 and E6. ComNetsEmu extends the famous Mininet emulator to support docker-in-docker setup (lightweight nested emulation) and to enable emulating NFV/SDN applications on a single laptop. You can find the detailed README and all source codes here.