Computational Methods for digital communications


Computational methods in digital communications provides a selection of hands-on experiments in programming and implementation techniques for high-performance computing applied to telecommunications. Students will learn architecture concepts and how to optimize software to implement different types of algorithms efficiently on software-based systems.

Teaching methods: The course is primarily given in a lab setting leveraging guided personal work. The instructor gives some lecture material progressively during the course of the lab-sessions in an on-demand fashion. The mini-project teamwork includes regular 45 minutes review meetings with the instructor and teaching assistants to overview progress on the subject.

Grading: 50% final mini-project work and presentation, 50% grading of lab sessions.


Learning outcomes: The students obtain basic understanding of some numerical programming methods and a more detailed understanding of one topic considered in their mini-project. They also will learn to work in a team-environment on the mini-project and to synthesize their understanding through a presentation to their peers at the end of the course.

1. The first exercise familiarizes the students with programming or designing an implementation with fixed-point processing and in particular dealing with the degradation of an algorithm due to the effects of finite wordlength and saturated arithmetic. The students analyze the fast Fourier transform for two fixed-point arithmetic configurations using a C-language testbench. One configuration is representative of a digital signal processor while the other of the arithmetic logic units found in a typical field-programmable gate array (FPGA).

2. The second exercise covers optimization techniques using single-instruction multiple-data (SIMD) parallelization extensions in

x86-64 or ARM architectures. The students implement a simple componentwise vector multiplication for long vectors and experiment with optimization techniques to achieve the maximum performance of the architecture. The exercise highlights methods to analyze the runtime performance of a software implementation. Moreover, students will learn how to inspect the choices of a compiler in order to fine-tune its optimization strategy and ultimately improve the performance of the final result

3. The mini-projects allow the students to form groups to study a particular larger problem through a team-effort. Regular meetings with the instructor and teaching assistants are organized to guide the students and analyze their progress. Subjects vary from year-to-year but can include

a) real-time signal acquisition and processing.

b) GPU-based implementations

c) parallel computing on a modern container-based multi-server switching fabric

d) real-time performance analysis

e) SIMD acceleration on embedded ARM computers

Nb hours: 42 hours, 36 hours of lab sessions.

Grading Policy: 50% final mini-project work and presentation, 50% grading of lab sessions.