Aarhus University Seal

Network Coding: Theory and Applications (2019)

Name of course:
Network Coding: Theory and Applications

ECTS credits:
5 ECTS (1 ECTS is 25-30 hours of work)

Course parameters:
Language: English
Level of course: PhD course
Time of year: Spring 2019
No. of contact hours: 12 sessions of 3 hours
Capacity limits: Max 12 participants

Objectives of the course:
The PhD course provides an introduction to the rapidly growing research area of network coding. Network coding allows intermediate nodes in a network to manipulate data, for example by sending out packets that are combinations of previously received packets instead of simply forwarding them. For most practical purposes, these manipulations are linear operations over elements of a finite field. The initial theoretical results on network coding were followed by a wealth of applications in a number of different areas that show that the theoretical insights can be translated into practical gains.

Learning outcomes and competences:
At the end of the course, the student should be able to:

  • analyze network coding systems;
  • differentiate between lean intra-session and inter-session network coding;
  • identify characteristics of network coding including encoding, decoding and recoding functionalities
  • differentiate between code structures, including, systematic network codes, fulcrum network codes, tunable sparse network codes;
  • understand the trade-offs in performance and complexity of various network coded systems;
  • critically read scientific articles;
  • present, interpret, and discuss scientific articles;
  • explain a technical paper to a technical audience;
  • structure a critical literature review on the topic.

Compulsory programme:

  • Attend at least 80% of the sessions and participate actively in class and discussions;
  • Study the required background material;
  • One to two students per class will be scribes in each lecture to share notes with class mates;
  • Hand in report in draft form.

Course contents:
The PhD course is divided into three parts. The first part provides the participants with the theoretical tools necessary to understand the field of network coding and focuses on the underlying algebraic principles. It will also introduce distributed randomized network codes and discuss their properties. We will not assume any prior knowledge of advanced algebra or optimization.

Among other things, network coding can be used to increase throughput and robustness as well as reduce storage requirements, delay, and energy consumption. The second part of the PhD course gives an overview of the different application areas and discusses, which types of networking problems are amenable to network coding (and which aren't). In particular, it covers practical algorithms for data gathering in sensor networks, routing in wireless mesh networks, peer-to-peer networking and content distribution, streaming applications, etc.

Finally, we will discuss implementation aspects in real-world systems. Such systems may range from core network routers all the way down to mobile phones and tiny sensor nodes. The constraints imposed by these devices in terms of available memory and computing power may differ by several orders of magnitude. As a consequence, the encoding and decoding algorithms need to be carefully adapted to the specific problem at hand. As an example, the size of the finite field for the coding operations has an impact on network coding efficiency, but also on the encoding and decoding complexity. Coding operations may be sped up substantially through the use of specialized hardware, as evidenced by the successful implementation of network coding on Graphics Processing Units (GPUs). The energy consumed by the coding operations is of particular importance on mobile devices and needs to be considered to avoid offsetting the energy gains offered by network coding.

PhD students from all areas of engineering and natural sciences interested in network coding, networking, or coding theory may benefit from attending the course.


The course is organized in the following sessions:

Session 1-9: Seminars with discussion of various network coding topics

Session 10-12: Presentation, review and discussion of selected papers. Groups of up to two students present a paper, all students participate in the discussion. Two paper discussions are expected per session depending on the number of participants.

Participants need to be enrolled in a PhD program.

Name of lecturers:
Daniel E. Lucani Rötter, Aarhus University, ST, Department of Engineering.

Type of course/teaching methods:
Lectures with exercises, student presentations, and discussions. Participants are expected to contribute actively to the presentations and discussions.


  1. T. Ho, D. S. Lun, “Network Coding: An Introduction,” Cambridge University Press, 2008.
  2. M. Médard, A. Sprintson, “Network Coding: Fundamentals and Applications,” Academic Press, 2011.
  3. A collection of papers will be distributed before the course.
  4. New book being written by the lecturer may be used for complementing the class.

Course homepage:

Course assessment:
Active participation and submission of homework assignments. Moreover, approved report draft.

Aarhus University, Department of Engineering, Section of Electrical and Computer Engineering.

Special comments on this course:

A total of 12 sessions over the period 1 March 2019 to 1 June 2019.

Lecture dates are agreed among participants.

Katrinebjerg Campus, Aarhus University

Room number to be announced.

Deadline for registration is 1 February 2019.

For registration or if you have any questions, please contact Daniel E. Lucani, daniel.lucani@eng.au.dk.

18805 / i43