Welcome to the Functional Programming course repository! This course is designed for university-level students enrolled in IBU 063.
This repository will serve the purpose of publishing solutions to the laboratory session tasks.
The Functional Programming course provides a comprehensive exploration of key concepts, from an introduction to the benefits of functional programming versus object-oriented programming to advanced techniques such as currying, pipelining, and recursion.
It provides insights into designing functions, ensuring purity through immutability, and implementing design patterns the functional way. The course also covers the influential role of functional programming in unit tests and introduces students to functional and reactive programming paradigms.
By the end of this course, students will be able to:
- Develop a profound understanding of functional programming principles and practical applications.
- Master the design of functions, ensuring code purity through immutability, and implementing design patterns in a functional paradigm.
- Develop both theoretical knowledge and practical skills, enabling students to design elegant, robust, and scalable software solutions using functional programming principles.
| Week | Topic |
|---|---|
| 01 | Introduction and Benefits of Functional Programming, Functional vs Object Oriented Programming |
| 02 | Starting with Functions - A Core Concept |
| 03 | Behaving Properly - Pure Functions |
| 04 | Programming Declaratively - A Better Style |
| 05 | Producing Functions - Higher-Order Functions |
| 06 | Transforming Functions - Currying and Partial Application |
| 07 | Connecting Functions - Pipelining, Composition, and More |
| 08 | Designing Functions - Recursion |
| 09 | Ensuring Purity - Immutability |
| 10 | Implementing Design Patterns - The Functional Way |
| 11 | Building Better Containers - Functional Data Types |
| 12 | Functional Error Handling |
| 13 | Functional Programming’s Influence on Unit Tests |
| 14 | Functional and Reactive Programming |
| 15 | Recap |
Name: Assist. Prof. Dr. Dželila Mehanović
Email: [email protected]
Office Location: B, 413
-
Name: LA Benjamin Peljto
Email: [email protected]
Office Location: B, 411 -
Name: LA Amila Čaušević
Email: [email protected]
Office Location: B, 411 -
Name: LA Lejla Breščić
Email: [email protected]
Office Location: B, 411 -
Name: TA Nedim Bandžović
Email: [email protected]
Office Location: B, 403
If you have any questions or need assistance throughout the course, feel free to reach out to the professor or any of the teaching assistants during their office hours, or via email.