The course consists of lectures (with requirements of at least 80 percent attendance) and work in project groups of three students.
DD2489 Scalable software Development with Functional Programming 7.5 credits
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. On the course web, you can see what the library re-frame states upon those concepts.
Information per course offering
Information for Autumn 2024 skalutv24 programme students
- Course location
KTH Campus
- Duration
- 28 Oct 2024 - 13 Jan 2025
- Periods
- P2 (7.5 hp)
- Pace of study
50%
- Application code
52257
- Form of study
Normal Daytime
- Language of instruction
English
- Course memo
- Course memo is not published
- Number of places
Places are not limited
- Target group
Open to students admitted to a master's programme as long as it can be included in your programme.
- Planned modular schedule
- [object Object]
- Schedule
Contact
Tomas Ekholm (tomase@kth.se)
Course syllabus as PDF
Please note: all information from the Course syllabus is available on this page in an accessible format.
Course syllabus DD2489 (Autumn 2023–)Content and learning outcomes
Course disposition
Course contents
The lectures consist of much live coding, practical guidance, code-review and dialogue around how we can improve the architecture and design of the program code. This requires an active participation and an open positive atmosphere during the lectures. The idea of the lectures is to enthuse and broaden the perspectives around large-scale software development.
The lectures are compulsory, since the course is based on our joint dialogue and the active participation that is included in it.
Main contents: functional programming, code quality, readability, maintainability, cooperation, version management (git), global state, dependencies, mathematical functions, persistent data structures, handling of the state of applications, reactive programming, web development, testability, test as documentation, comparison with object-oriented programming, atomic updating of state, concurrency, DSL, LISP and REPL.
The programming languages Clojure and ClojureScript are used to realize the course content in a project. Thereby, the course will also give solid knowledge in LISP Clojure, Clojure Special and REPL workflow.
Every week, the students will be shown a video with a conference presentation. The idea is that it should give inspiration and open new doors. During the lectures, we will reflect on the contents.
Intended learning outcomes
After passing the course, the student shall be able to
- design, using functional programming, large systems so that they become easier to test, understand and manage
- model information in a program using only immutable data
- reflect on and discuss how architecture and design can be improved
- reflect on the concepts identity, state and value
- design entities and components so that they become easy to test and write tests for them
- protect internal design of a program at integration with other systems
- develop a program in collaboration with other developers
- review and reflect on given source code,
- maintain given source code
in order to
- understand and master the parameters in software development that make source code sustainable, re-usable and flexible during changing requirements.
Literature and preparations
Specific prerequisites
Knowledge in software development technology, 6 higher education credits, equivalent to completed course DD2480/DD1367/DD1369/DD1392/DD1393/DD1346/DD1387/DD1388/DD2387/IV1303/H I1027/HI1201/DD1385/DD2385. Active participation in a course offering where the final examination is not yet reported in LADOK is considered equivalent to completion of the course. Being registered for a course counts as active participation. The term 'final examination' encompasses both the regular examination and the first re-examination.
Equipment
Literature
Examination and completion
If the course is discontinued, students may request to be examined during the following two academic years.
Grading scale
Examination
- PRO1 - Software Engineering Project, 7.5 credits, grading scale: P, F
Based on recommendation from KTH’s coordinator for disabilities, the examiner will decide how to adapt an examination for students with documented disability.
The examiner may apply another examination format when re-examining individual students.
Opportunity to complete the requirements via supplementary examination
Opportunity to raise an approved grade via renewed examination
Examiner
Ethical approach
- All members of a group are responsible for the group's work.
- In any assessment, every student shall honestly disclose any help received and sources used.
- In an oral assessment, every student shall be able to present and answer questions about the entire assignment and solution.
Further information
Course room in Canvas
Offered by
Main field of study
Education cycle
Add-on studies
Contact
Supplementary information
The course is replacing DD2487 and cannot be combined with it.
In this course, the EECS code of honor applies, see:
http://www.kth.se/en/eecs/utbildning/hederskodex
Additional regulations
This course contains a group project. Course registration after the official registration period is therefore not possible, since we need to create the groups in the beginning of the course.