You are not logged in KTH, so we cannot customize the content.
The biggest problem in the development and maintenance of large-scale software systems is complexity — large systems are hard to understand. [Out of the Tar Pit, by Moseley and Marks, 2006].
A major part of this complexity is accidentally created when we introduce and manage state.
This course will enrich the participants on how functional programming can reduce unintended complexity and create code bases that are simpler to maintain and reason about.
Functional programming is a paradigm, which focuses on values and pure functions rather than mutable objects and imperative statements. In a functional language, state management is typically pushed to the boundary of the program.
Since well design of code is intersubjective we need to have a good dialogue together in the course. We need to be open-minded, share our perspectives and experiences, and continuously reflect upon our own and others experiences.
By gaining experience, we will acquire empirical knowledge, intuition and sensors for avoiding unintended complexity, creating appropriate abstractions and a sustainable code base.
We will use the principle of single source of truth with atomic updates. The library re-frame states the following useful thoughts upon those concepts: