Functional Programming: continuation course
Funktionell programmering, fortsättningskurs
About the Syllabus
Grading scale
Course modules
Position
The course can be part of the following programmes:
- Computer Science, Bachelor's Programme (N1COS)
The course is a also a single-subject course at Gothenburg University.
Main field of study with advanced study
Entry requirements
The student should have successfully completed:
- 7.5 credits in functional programming
- 7.5 credits in discrete mathematics
- 7.5 credits more in mathematics
- 7.5 credits more in data structures
Applicants must prove knowledge of English: English 6/English level 2 or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.
Content
The course continues from an introductory functional programming background to more advanced functional programming techniques, with a focus on compositional program design and the algebraic datatypes and structures that enable it. Students will study key abstractions such as lazy/strict evaluation, functors, monads and similar, and learn how these can be used to express effects like state, exceptions, and I/O in a purely functional way. The course also introduces methods for structuring larger functional systems, including the design of embedded domain-specific languages (EDSLs), the use of software transactional memory for safe concurrency, and techniques for parallel and efficient evaluation based on algebraic properties such as associativity and commutativity.
Lab work / programming assignments develop practical skills in designing, implementing, and reasoning about functional programs. Students gain experience with type classes, recursion schemes, and memoization, as well as relevant tools for building, testing, and documenting projects. Emphasis is placed on equational reasoning and property-based testing as means to achieve correctness and efficiency. Students learn to critically assess the trade-offs between abstraction and performance and to structure software in a modular, maintainable, and verifiable way.
Objectives
After completion of the course the student should be able to:
Knowledge and Understanding
- Explain and apply fundamental abstractions in functional programming, including lazy/strict evaluation, functors, & monads, and describe how these abstractions can be used to handle state, exceptions, and I/O in a purely functional way.
- Explain how algebraic properties such as associativity and commutativity enable divide-and-conquer and parallel evaluation in pure functional programs, and discuss how purity and referential transparency support the design of compositional embedded domain-specific languages (EDSLs).
Skills and Abilities
- Design, structure, and implement functional programs and small EDSLs using appropriate type classes, algebraic operators, and data structures for efficient and, where appropriate, parallel computation.
- Apply functional techniques such as recursion schemes, memoization, and algebraic composition to implement and reason about non-trivial algorithms.
- Use relevant tools and libraries to develop, test, and document maintainable programs, including performance analysis and identification of common inefficiencies.
- Structure and solve real-world programming problems in a functional style, integrating abstraction, testing, and reasoning for correctness and efficiency.
Judgement Ability and Approach
- Critically assess the suitability of abstractions and algebraic structures for specific programming problems, through reflection on the trade-offs between abstraction, performance, and resource use.
- Evaluate program design decisions and correctness using property-based testing, algebraic properties, and equational reasoning.
- Demonstrate responsibility in program design and collaboration, ensuring modularity, clear documentation, and maintainability.
Sustainability labelling
Form of teaching
The main forms of instruction are lectures, seminars, case studies, and group work.
Language of instruction: English
Examination formats
The course is examined by an individual written exam which is carried out in an examination hall at the end of the course and by written assignments carried out in groups.
If a student who has been failed twice for the same examination element wishes to change examiner before the next examination session, such a request is to be granted unless there are specific reasons to the contrary (Chapter 6 Section 22 HF).
If a student has received a certificate of disability study support from the University of Gothenburg with a recommendation of adapted examination and/or adapted forms of assessment, an examiner may decide, if this is consistent with the course’s intended learning outcomes and provided that no unreasonable resources would be needed, to grant the student adapted examination and/or adapted forms of assessment.
If a course has been discontinued or undergone major changes, the student must be offered at least two examination sessions in addition to ordinary examination sessions. These sessions are to be spread over a period of at least one year but no more than two years after the course has been discontinued/changed. The same applies to placement and internship (VFU) except that this is restricted to only one further examination session.
If a student has been notified that they fulfil the requirements for being a student at Riksidrottsuniversitetet (RIU student), to combine elite sports activities with studies, the examiner is entitled to decide on adaptation of examinations if this is done in accordance with the Local rules regarding RIU students at the University of Gothenburg.
Grades
Sub-courses
- Written hall examination, 4 credits
Grading scale: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U) - Assignments, 3,5 credits
Grading scale: Pass (G) and Fail (U)
The grading scale comprises: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U).
To pass the course, students must receive a passing grade in both modules. The grade for the entire course will be determined by the written hall examination.
Course evaluation
The course is evaluated through meetings both during and after the course between teachers and student representatives. Further, an anonymous questionnaire is used to ensure written information. The outcome of the evaluations serves to improve the course by indication which parts could be added, improved, changed or removed.
Other regulations
The course is a joint course together with Chalmers.