
Bachelor in Computer Science
Programming Fundamentals 3 | |
Module: | Programming Fundamentals 3, Semester 3 |
ECTS: | 4 |
Objective: | Programming fundamentals 3 introduces three new programming models:
functional programming, parallel and distributed computing.
The first part goes into the theoretical and practical aspects of
functional programming, where everything is function. On week
1, we start with the lambda-calculus which has only three
expressions, and extend it with new concepts week after week. We study its mathematical properties such as termination, confluence and type soundness. We connect theory to practice by programming in the functional language OCaml, showing that functional programs are often shorter and more elegant than their imperative counterparts. In the second part, we introduce concurrent and parallel programming. We discuss general synchronisation issues of concurrency models such as deadlock, livelock and starvation. We present the shared state and message-passing programming models aiming at solving these issues. The third part will be an introduction to the architectural and communication patterns of distributed computing. At last, we discuss the false assumptions and challenges of distributed computing (CAP theorem). Overall, we aim at small lectures presenting key concepts, followed by interactive exercises developing the lectures. In particular, the sanitary situation permitting, we will organise peer to peer learning activities. The project bridges all parts by focussing on functional reactive programming. |
Description: | 1. Functional programming 1.1. Functional programming 1.1.1. Lambda-calculus 1.1.2. Functional kernel of OCaml (basic syntax, functions, recursion) 1.1.3. Typed lambda-calculus and soundness results 1.1.4. Algebraic types (tuple, record, sum, pattern matching, list) 1.1.5. Generic programming (parametric polymorphism) 2. Concurrent programming 2.1. Concurrent programming 2.1.1. Synchronisation issues of concurrency (deadlock, livelock, starvation) 2.1.2. Shared state concurrent programming (threads, mutex, semaphore) 2.1.3. Message-passing (channels, actor model) 3. Functional reactive programming (project) 3.1. Functional reactive programming (project) 3.1.1. Functional reactive programming (project) 4. Distributed computing 4.1. Distributed computing 4.1.1. Architectural patterns (client/server, peer to peer, publish/subscribe, object-based) 4.1.2. Communication (protocols, serialization) 4.1.3. Theoretical limitations (CAP theorem, network fallacies) |
Language: | English |
Lecturer: | TALBOT Pierre, FELTEN Florian |
Mandatory: | Yes |
Evaluation: | First exam session: 1. A mid-term written exam on functional programming (50%). 2. Lab on functional reactive programming with oral defense (50%). Redoing session: Students having failed the course will have to redo the exam and lab during the next winter semester.
|
close |
URL: https://wwwfr.uni.lu/formations/fstm/bachelor_in_computer_science/programme | Date: samedi 28 mai 2022 02:30:22 |