Latest change May 11, 2020
There are links to the lecture slides. All slides are in PDF format, 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.
Here is the official schedule for the course.
Week 4
F1. Monday 2020-01-20, 10:15-12:00, R2-205: 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 2020-01-23, 10:15-12:00, U2-013ALC:
Definitions, simple data types etc., continued.
F3. Friday 2020-01-24, 10:15-12:00, U2-051: Definitions, simple
data types etc., continued.
Week 5
F4. Monday 2020-01-27, 10:15-12:00, R2-142: 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 2020-01-28, 13:15-17:00, U2-003, U2-006
F5. Thursday 2020-01-30, 10:15-12:00, U2-013ALC: Strings, and a
string processing example.
Slides: full
size, and 4-up
Book: 2.3 strings
F6. Friday 2020-01-31, 10:15-12:00, U2-051: 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 6
F7. Monday 2020-02-03, 15:15-17:00 (note the time!), U2-051: 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 2020-02-04, 13:15-17:00, U2-006
F8. Thursday 2020-02-06, 10:15-12:00, U2-013ALC: 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 2020-02-07, 10:15-12:00, U2-051: 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 7
F10. Monday 2020-02-10, 10:15-12:00, U2-051: 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 2020-02-11, 13:15-17:00, U2-006
F11. Thursday 2020-02-13, 10:15-12:00, Zeta: Imperative
programming in F#.
Slides: full size,
and 4-up
Book: Ch. 8 imperative features
F12. Friday 2020-02-14, 10:15-12:00, Zeta: Object-oriented
programming in F#.
Slides: full size, and 4-up
Book: 7.5 objects (very rudimentary, and sort of tied to modules)
Week 8
F13. Monday 2020-02-17, 10:15-12:00, R2-142: 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.
L4. Tuesday 2020-02-18, 13:15-17:00, U2-039
F14. Thursday 2020-02-20, 10:15-12:00, U2-051: Functional
programming in the real world, guest lecture by Stefan L. Karlsson, ABB.
Slides: full size
Week 9
F15. Monday 2020-02-24, 10:15-12:00, U2-051: Type inference,
higher order algebra, and lambda calculus.
Slides: full size,
and 4-up
Book: 2.6 (type inference, very rudimentary)
F16. Thursday 2020-02-27, 10:15-12:00, U2-051: lambda calculus,
selected exercises.
Week 10
Extra laboration 1. Tuesday 2020-03-10, 13:15-17:00, U2-003
Week 13
Extra laboration 2. Monday 2020-03-23, 13:15-17:00, using Zoom: instructions are found here.
First exam. Thursday 2020-03-26, 14:10-18:30, Västerås: this exam is cancelled due to the campus lockdown.
Week 24
Next exam. Tuesday 2020-06-09, 14:10-19:30. This exam will be a take-home exam (hemtentamen), due to the current campus lockdown. Instructions for how to take the exam are found here.
Week 33
Next next exam. Thursday 2020-08-13, 14:10-18:30, Västerås.