.. _module5: ************************************************************************************************* Module 5 | Functional Programming and Lambda expressions ************************************************************************************************* Objective ========= By the end of this module, students will be able to: * Use inner classes * Use functional interfaces and lambda expressions * Use functional concepts, such as immutable lists and streams in Java Resources: Part 1 (Lambda expressions, immutable lists) ======================================================= Slides * :download:`Inner classes (PDF file) <./part1_slides/1_innerclass.pdf>` * :download:`Functional programming, part 1 (PDF file) <./part1_slides/2_functions.pdf>` * :download:`Summary of inner classes and lambda functions (PDF file) <./part1_slides/2022-12-01-Informatics2-LambdaSummary.pdf>` Youtube playlist: * `Lecture 5a (Playlist) `_ Java code examples (right-click to download): * :download:`Example code: inner and anonymous inner classes (zip file) <./part1_code/module5_innerclass.zip>` * :download:`Example code: lambda expressions and Function interface (java source) <./part1_code/LambdaTest.java>` * :download:`Example code: sorting ducks (java source) <./part1_code/SortingDucks.java>` Exercises: * `Lambda expressions `_ * `Functional list `_ * `Functional list with generics `_ * `Logical Circuit with functions `_ Resources: Part 2 (immutable lists part 2, streams, more on lambda expressions) ================================================================================ Slides * :download:`Functional programming, part 2 (PDF file) <./part2_slides/1_functions_part2.pdf>` * :download:`Streams (PDF file) <./part2_slides/2_streams.pdf>` * :download:`Optional (PDF file) <./part2_slides/3_optional.pdf>` Youtube playlist: * `Lecture 5b (Playlist) `_ Exercises: * `FList with Cons and Nil `_ * `MergeSort for FList `_ * `Functional immutable tree `_ * `Streams `_ * `More streams `_ * `Optional `_