Combining theoretical lectures, practical exercises and computational case studies