Practical Implementations of Network Coding

Lecturer: Professor Frank Fitzek

Lecturer: Professor Frank Fitzek

Assistant: M.Sc. Juan Cabrera

Assistant: M.Sc. Juan Cabrera

Overview

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

Time Schedule

Lectures: Wednesdays 9:20 – 10:50
Exercises: Thursdays (Odd weeks) 14:50 – 16:20

DateTypeRoomTopic
04.Apr.2016
16:40-18:10
L1GÖR/0127/UPresentation of the chair; Organisation of the course; 5G Intro; Butterfly; min cut max flow.
06.Apr.2016L2VMB/0E02/UInter Flow NC; Index Coding; Zick Zack Coding; CATWOMAN
11.Apr.2016
16:40-18:10
L3GÖR/0127/UAnalog Inter Flow Network Coding
13.Apr.2016L4VMB/0E02/URecap of lectures 1,2 and 3
14.Apr.2016E1GÖR/0229/UUDP transmissions with python sockets. Unicasts and Broadcasts.
20.Apr.2016L5VMB/0E02/URandom Linear Network Coding (Basics)
21.Apr.2016E2GÖR/0229/UKODO
27.Apr.2016E3VMB/0E02/UBasic encode-decode with kodo-python
28.Apr.2016E4GÖR/0229/UMulti-path with encoding
04.May.2016L7VMB/0E02/UJupyter notebook. Example of a protocol for encoder-recoder-decoder 1
11.May.2016L8VMB/0E02/URLNC advanced 1 (systematic, sparse, sliding window)
12.May.2016E5GÖR/0229/UExample of a protocol for encoder-recoder-decoder 2
08.Jun.2016L9VMB/0E02/UReview on network codes for transport.
09.Jun.2016E6GÖR/0229/UExample of one encoder-multiple relays (one recoder)- decoder.
15.Jun.2016E7VMB/0E02/UExcercise: Finite fields operations. Printing tables with FIFI library
22.Jun.2016L10VMB/0E02/UTelescopic codes. FULCRUM codes. CORE protocol. Introduction to storage
23.Jun.2016L11GÖR/0229/UStorage with RLNC
29.Jun.2016L12VMB/0E02/UStorage with RLNC II
06.Jul.2016L13VMB/0E02/UWrap up session, Q&A, etc.

Module Number: ET-12 10 21

Exam

2 hours written exam.

19.Jul.2016

09:20-12:40

room GÖR 127.

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.

Slides

The slides can be found in OPAL

Material for Excercise 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:
    https://www.continuum.io/downloads
    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:
    PyCharm
  • 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 – https://support.microsoft.com/en-us/kb/827218
or german – https://support.microsoft.com/de-de/kb/827218

 

Material for Excercise 2

It is necessary to have a Kodo license. In order to obtain one, you need a Github account.

After getting the Github account, go to the Steinwurf license site and fill the form requesting one. In the description, please state that you request the license for the course of Professor Fitzek.