Latest change Feb 15, 2024

Detailed Schedule, Spring 2024 (Period VT1)

There are links to the slides for each lecture below. All slides are in PDF format, both full size and 4-up.

There are pointers into the course book (Michael R. Hansen, Hans Rischel: Functional Programming Using F#) telling, for each lecture, where to find the corresponding topics in the book. The directions for reading tell what parts of the book are of relevance for the written exam.

Links to the zoom meetings will be found at the course place in Canvas. There you will also find the recorded lectures from 2022.

Here is the official schedule for the course.

Week 3

F1. Monday 2024-01-15, 10:15-12:00, zoom: Introduction, history, motivation, practicalities around the course (1h) + start expressions, simple definitions, simple data types etc (1h).
Slides (intro): full size, and 4-up
Slides (practicalities F#): full size, and 4-up
Book (intro): 1.2 functions, 1.4 recursion, factorial in F#, nontermination, 2.1 basic language elements, simple types, 2.2 operators, 2.3 characters, 2.4 if-then-else, 1.6 types and declarations, 2.5 explicit type declarations, 3.8 pattern matching, 3.5 failwith, 9.4 accumulating arguments, 3.6 local definitions, 1.2 function types (one argument), 2.7 (several arguments), 1.5 types for data structures (pairs), 3.1 tuples, 4.1 lists
Book (practicalities): 1.1, 1.2 basics of eval loop and declarations in fsi, 7.2 open

F2. Thursday 2024-01-18, 10:15-12:00, zoom: Definitions, simple data types etc., continued.

F3. Friday 2024-01-19, 10:15-12:00, zoom: Definitions, simple data types etc., continued.

Week 4

F4. Monday 2024-01-22, 10:15-12:00, zoom: Some on F# syntax. Modules, simple data type definitions.
Slides (syntax): full size, and 4-up
Slides (modules and data types): full size, and 4-up
Book (syntax): 3.6 indentation, 1.1 identifier (does not seem to cover rules for how to form them), 2.7 operators as functions, 2.9 declaring own operators, 1.3 anonymous arguments (wildcard patterns), 1.2 comments
Book (Modules etc): 7 modules, 3.9 data type declarations (enumerated types), 3.4 (record types)

L1. Tuesday 2024-01-23, 13:15-17:00, U2-006

F5. Thursday 2024-01-25, 10:15-12:00, zoom: Strings, and a string processing example.
Slides: full size, and 4-up
Book: 2.3 strings

F6. Friday 2024-01-26, 10:15-12:00, zoom: Polymorphism, recursive data types, trees, and Option values.
Slides: full size, and 4-up
Book: 3.2 polymorphic types, 3.11 Option data type, 4.5 value restriction, 5.1 List.tryFind, 6.1 recursive data types, 6.3 polymorphic declared types, 6 Trees

Week 5

F7. Monday 2024-01-29, 10:15-12:00, zoom: Sequencing, and I/O.
Slides: full size, and 4-up
Book: 8.4 sequencing, 8.2 side effect, 10.7 printf, 10.3 File I/O, 2.11 forward pipe

L2. Tuesday 2024-01-30, 13:15-17:00, U2-006 (+ U2-003 from 16:00)

F8. Thursday 2024-02-01, 10:15-12:00, zoom: List functions, and higher order functions.
Slides: full size, and 4-up
Book: 5.1 lists, 4.4 List.append, 2.10 guarded patterns

F9. Friday 2024-02-02, 10:15-12:00, zoom: More about Higher Order Functions.
Slides: full size, and 4-up
Book: 2.7 currying (partly), 4.4 & 9.4 reverse, 1.3 nameless functions

Week 6

F10. Monday 2024-02-05, 10:15-12:00, zoom: Arrays, sequences, and lazy evaluation.
Slides: full size, and 4-up
Book: 8.10 arrays, 11 sequences (in general), 11.8 range expressions, 11.6 sequence expressions

L3. Tuesday 2024-02-06, 13:15-17:00, U2-006

F11. Thursday 2024-02-08, 10:15-12:00, zoom: Imperative programming in F#.
Slides: full size, and 4-up
Book: Ch. 8 imperative features

F12. Friday 2024-02-09, 10:15-12:00, zoom: Object-oriented programming in F#.
Slides: full size, and 4-up
Book: 7.5 objects (very rudimentary, and sort of tied to modules)

Week 7

F13. Monday 2024-02-12, 10:15-12:00, zoom: Reactive functional programming, and WinForms in F#.
Slides: full size, and 4-up
Book: 12 Computation Expressions (just p. 279), 13.2 Processes, threads, and tasks, 13.4 Asynchronous computations (except "Exception and cancellation"), 13.5 Reactive programs.

F14. Thursday 2024-02-15, 10:15-12:00, zoom: Functional programming in practice, guest lecture by Stefan L. Karlsson, ABB.
Slides: full size

Week 8

F15. Monday 2024-02-19, 10:15-12:00, zoom: Type inference, higher order algebra, and lambda calculus.
Slides: full size, and 4-up
Book: 2.6 (type inference, very rudimentary)

L4. Tuesday 2024-02-20, 13:15-17:00, U2-006

F16. Thursday 2024-02-22, 10:15-12:00, zoom: lambda calculus, selected exercises.

Week 9

Extra laboration 1. Tuesday 2024-02-27, 13:15-17:00, U2-036

Week 11

Extra laboration 2. Tuesday 2024-03-12, 13:15-17:00, U2-036

Week 12

First exam. Tuesday 2024-03-19, 14:30-18:30

Week 23

Next exam. Tuesday 2024-06-04, 14:30-18:30

Week 34

Next next exam. Tuesday 2024-08-20, 14:30-18:30


Björn Lisper
bjorn.lisper (at) mdu.se