Advanced Topics in Signal Processing (at TUM)

Lecturer: Professor Frank Fitzek

Main lecturer: Professor Frank Fitzek

Assistant: M.Sc. Juan Cabrera

Co-lecturer: 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. 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. They will also provide the students with a intuitive understanding of the principles behind network coding.

Language of the course: English

Number of ECTS: 5

Module Number: EI7601


90 minutes written exam on the 6th of July of 2018

Possibility of re-taking: At the end of the semester.

Time Schedule

Lectures: Fridays 09:45 – 11:15 – break – 11:45 – 13:15

13.Apr.2018Module 1TBDOrganisation of the course; Motivation for NC and NC use cases (5G, IoT, Wireless Mesh); Butterfly example; min cut max flow.
Inter Flow NC. Index Coding. Zick Zack Coding. CATWOMAN
27.Apr.2018Module 2TBDAlice Relay and Bob scenario under IEEE802.11 networks and asymmetric traffic. Analog Inter Flow NC.
Random Linear Network Coding (Basics)
04.May.2018Exercise 1TBDBasic UDP transmissions over WIFI with Python.
Example of Inter-Session Network coding: XORing packets.
Introduction to KODO. Lossless Encoding and Decoding
11.May.2018Module 3TBDRLNC advanced 1 (systematic, sparse, and sliding window RLNC)
18.May.2018Module 4TBDKODO overhead and energy consumption. Heterogeneous packet lengths
Network coding for transport
01.Jun.2018Module 5TBDRLNC extensions: Telescopic codes, FULCRUM codes, and the CORE protocol.
Network coding for storage
08.Jun.2018Exercise 2TBDCode efficiency. Number of linear dependencies. Where does the linear dependencies occur?
Multi-path and Multi-hop with NC
Module 6TBDCombination of Network Coding with Source/Channel Coding.
Combination of Network Coding and Compressed Sensing
22.Jun.2018Exercise 3TBDFinite fields operations
29.Jun.2018Q&ATBDQ&A session in preparation for the exam.
06.Jul.2018ExamTBDWritten exam with a duration of 90 minutes

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.


Inter-flow Network Coding

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.