Programming Fundamentals 3

Undergraduate course, University of Luxembourg, Department of Computer Science, 2022

In this course co-teached with Pierre Talbot, we aim to introduce CS students to various programming paradigms. The first part, mainly given by Pierre, focuses on Functional Programming. My part focuses on concurrent programming.

Functional Programming

  • Recursion
  • Immutability
  • Algebraic Data Types
  • Pattern Matching
  • Higher-order functions

Concurrent Programming

  • Threads, cores, pools
  • Shared state: mutex, semaphore and other nonsense
  • Message passing: Channels, Actors
  • Combining functional concepts with concurrency: MapReduce, Functional Reactive Programming.

Some lecture notes from 2022: