Practical Implementations of Network Coding

Lecturer: Professor Frank Fitzek

Lecturer: Professor Frank Fitzek

Assistant: M.Sc. Juan Cabrera

Assistant: M.Sc. Juan Cabrera


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.

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 lecture: English

Optional course, 8th semester


The 25th of July 2017 at 9:00 am. The room is FAL-106 (the same room as the lectures)

It will be a written exam.

Time Schedule

Lectures: Fridays 14:50 – 16:20
Exercises: Thursdays (Every two weeks) 14:50 – 16:20

03.Apr.2017L1FAL 106Presentation of the chair; Organisation of the course; 5G Intro; Butterfly; min cut max flow.
13.Apr.2017E1FAL 106Basic UDP transmissions over WIFI with Python.
Example of Inter-Session Network coding: XORing packets
21.Apr.2017L2FAL 106Inter Flow NC; Index Coding; Zick Zack Coding; CATWOMAN
27.Apr.2017L3FAL 106Alice Relay and Bob scenario under IEEE802.11 networks and asymmetric traffic. Analog Inter Flow Network Coding
28.Apr.2017L4FAL 106Random Linear Network Coding (Basics)
05.May.2017L5FAL 106RLNC advanced 1 (systematic, sparse, sliding window)
11.May.2017E2FAL 106Introduction to KODO. Lossless Encoding and Decoding
12.May.2017E3FAL 106Code efficiency. Number of linear dependencies. Where does the linear dependencies occur? Starting Multihop.
26.May.2017E4FAL 106Multi-path and Multi-hop with encoding
26.May.2017E5FAL 106Finite fields operations
02.Jun.2017L6FAL 106RLNC advanced 2 (systematic, sparse, sliding window)
16.Jun.2017L7FAL 106KODO overhead and energy consumption. Heterogeneous packet lengths.
22.Jun.2017E6FAL 106TBD
23.Jun.2017L8FAL 106Review on network codes for transport.
30.Jun.2017L9FAL 106Telescopic codes. FULCRUM codes. CORE protocol. Introduction to storage
06.Jul.2017L10FAL 106Storage with RLNC
07.Jul.2017L11FAL 106Storage with RLNC II
14.Jul.2017L12FAL 106Wrap up session, Q&A, etc.

Module Number: ET-12 10 21

Recommended Literature

  • Ahlswede, Rudolf, et al. “Network information flow.” Information Theory, IEEE Transactions on 46.4 (2000): 1204-1216.
  • Koetter, Ralf, and Muriel Médard. “An algebraic approach to network coding.”IEEE/ACM Transactions on Networking (TON) 11.5 (2003): 782-795.
  • Médard, Muriel, et al. “Network coding mythbusting: why it is not about butterflies anymore.” IEEE Communications Magazine 52.7 (2014): 177-183.


The slides can be found in this OPAL link.

Material for Exercise 1

You need a working Python-Installation with the SciPy-stack.
If you don’t know, what that is or how it is installed, we advise the following steps:

  • install and download “Anaconda” for the right operating system here:
    Please use Python in version 2.7, and not version 3.4.
  • install and download the programming software “Pycharm” in the free Community Edition from here:
  • once this is done we can work with you during the hands-on part of the lecture

if you don’t know whether you have 32 bit or 64 bit Windows, you can look it up here in
English –
or german –

Material for Exercise 2

In this exercise session, we will work with Kodo. You require a valid Kodo license in order to 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 in your PC.