Latest change May 4, 2016
To prevent spambots from collecting mail addresses, all mail addresses on this page have the "@" replaced by "#".
There are links to the lecture slides. All slides are in PDF format, full size slides for viewing on screen and 4-up slides (four per page) for printing.
There are also 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.
See here how to find the lecture halls.
Week 14
F1. Monday 2016-04-04, 10:15-12:00, U2-013: 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. Wednesday 2016-04-06, 13:15-15:00, U2-051:
Definitions, simple data types etc., continued.
F3. Thursday 2016-04-07, 10:15-12:00, U2-013: Definitions, simple
data types etc., continued.
Week 15
F4. Monday 2016-04-11, 10:15-12:00, U2-013: 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)
F5. Wednesday 2016-04-13, 13:15-15:00, U2-013: Strings, and a
string processing example.
Slides: full
size, and 4-up
Book: 2.3 strings
F6. Thursday 2016-04-14, 10:15-12:00, U2-013: Polymorphism, recursive
data types, and trees.
Slides: full size, and 4-up
Book: 3.2 polymorphic types, 4.5 value restriction, 6.1
recursive data types, 6.3 polymorphic declared types, 6 Trees
L1. Thursday 2016-04-14, 13:15-17:00, U2-003, U2-006
Week 16
F7. Monday 2016-04-18, 10:15-12:00, U2-013: 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
F8. Wednesday 2016-04-20, 13:15-15:00, U2-013: 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. Thursday 2016-04-21, 10:15-12:00, Zeta: 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
L2. Thursday 2016-04-21, 13:15-17:00, U2-003, U2-006
Week 17
F10. Monday 2016-04-25, 10:15-12:00, U2-013: Option values, arrays,
sequences, and lazy evaluation.
Slides: full size,
and 4-up
Book: 3.11 Option data type, 5.1 List.tryFind, 8.10 arrays, 11
sequences (in general), 11.8 range expressions, 11.6 sequence expressions
F11. Thursday 2016-04-28, 10:15-12:00, U2-013: Imperative
programming in F#.
Slides: full size,
and 4-up
Book: Ch. 8 imperative features
L3. Thursday 2016-04-28, 13:15-17:00, U2-003, U2-006
F12. Friday 2016-04-29, 10:15-12:00, U2-013: Object-oriented
programming in F#.
Slides: full size, and 4-up
Book: 7.5 objects (very rudimentary, and sort of tied to modules)
Week 18
F13. Monday 2016-05-02, 10:15-12:00, U2-013: Reactive functional
programming in F#, WinForms, and .NET.
Slides: full size
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 2016-05-03, 13:15-17:00, U2-003, U2-006
F14. Wednesday 2016-05-04, 13:15-15:00, U2-013: Functional
programming for parallel and distributed systems: parallelization of
functional programs, and Google's MapReduce.
Slides: full
size, and 4-up
Material
for MapReduce.
Book: 13.6 Parallel computations.
Week 19
F15. Monday 2016-05-09, 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. Wednesday 2016-05-11, 13:15-15:00, U2-013: lambda calculus,
selected exercises.
Week 21
Extra laboration 1. Tuesday 2016-05-24, 8:15-12:00, place U2-003
Week 22
Extra laboration 2. Tuesday 2016-05-31, 8:15-12:00, place U2-003
First exam. Friday 2016-06-03, 14:10-18:30, Västerås
Week 33
Next exam. Thursday 2016-08-18, 14:10-18:30, Västerås
Week 1/2017
Next next exam. Wednesday 2017-01-04, 14:10-18:30, Västerås.