Within SINF1BA : LFSAB1402
The prerequisite(s) for this Teaching Unit (Unité d’enseignement – UE) for the programmes/courses that offer this Teaching Unit are specified at the end of this sheet.
- Concepts, techniques and paradigms of programming languages
- Concurrent programming paradigms
- Reasoning and design techniques for programming
- Practical Programming and Applications
Given the learning outcomes of the "Bachelor in Engineering" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
- AA1.1, AA1.2
- AA2.4-7
- AA4.1, AA4.3-4
Given the learning outcomes of the "Bachelor in Engineering" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
- S1.I5
- S2.2-4
- S5.2, S5.4-5
Students completing successfully this course will be able to
- define with precision and use appropriately in medium-size programs the key programming concepts;
- define with precision the principal programming paradigms, with concepts they contain and the properties they give to programs
- explain how languages work in the programming paradigms, the relations between paradigms;
- learn quickly new languages;
- design new languages targeted toward an arbitrary application;
- interface different languages;
- define the main paradigms of concurrent programming (shared state, message passing and declarative concurrency), with concepts they contain and the properties they give to programs;
- write medium-sized programs in these paradigms of concurrent programming.
Students will have developed skills and operational methodology. In particular, they have developed their ability to
- think with abstractions (reason correctly about a system that consists of several layers of abstractions, and define new abstractions to simplify a problem's solution).
The contribution of this Teaching Unit to the development and command of the skills and learning outcomes of the programme(s) can be accessed at the end of this sheet, in the section entitled “Programmes/courses offering this Teaching Unit”.
- Mid-term test (dispensatory for 1 / 4 of the mark).
- Project (1 / 4 of the mark).
- Written exam in session (3 / 4 of the mark).
The project is obligatory and is done during the quadrimester. It can only be done only once and it counts for all academic year.
- Lecture each week.
- Practical sessions in the computer rooms each week.
- Design and programming project (second half of the course).
- Deep understanding of key concepts of programming languages. The concepts are presented in a uniform framework. The course is organized around a progressive and coherent presentation of the various paradigms of concurrent programming.
- Major programming concepts including function, object, class, abstraction, instantiation, inheritance, state, encapsulation, concurrency, dataflow, lazy evaluation, nondeterminism, agent (active object), lock (lock), monitor transaction Deadlock (deadlock), higher-order programming, compositionality, etc..
- Description of a wide spectrum of programming paradigms, relationship between these paradigms and introduction to the major programming languages.
- Reasoning and design techniques with different paradigms to design correct programs.
- Practical applications in several areas (eg, simulation of logic circuits, simulation lifts, a transaction manager).
- Van Roy P. and Haridi S, "Concepts, Techniques, and Models of Computer Programming", MIT Press, March 2004 (mandatory book)
- Mozart Programming System version 2, www.mozart-oz.org.
Background:
- FSAB1402 : Good programming skills in a high-level language