Skip to content

Commit

Permalink
make links local
Browse files Browse the repository at this point in the history
  • Loading branch information
nmheim committed May 21, 2024
1 parent a556882 commit 3311d7d
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions lectures/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,29 @@ due to other obligations.

| # | Title | Content | Files |
|-|-|-|-|
|1. | [Introduction](lecture01) | Discusses the key ideas behind functional programming. It further introduces the programming language [Racket](https://racket-lang.org/). | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture01.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture01.rkt). |
| 2. | [Lists & Trees](lecture02) | Focuses on Racket lists and trees. Further, it introduces the unit testing library [Rackunit](https://docs.racket-lang.org/rackunit/index.html). | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture02.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture02.rkt).|
| 3. | [Higher Order Functions](lecture03) | Deals with higher-order functions like `map`, `filter`, `foldl`, function closures and Racket structures.| [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture03.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture03.rkt).|
| 4. | [Lazy Evaluation](lecture04) | Introduces pattern matching, and explains how to implement lazy evaluation and streams in Racket. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture04.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture04.rkt).|
| 5. | [Macros & Interpreters](lecture05) | Briefly introduces syntactic macros, and shows how to implement interpreters (the latter is remains to be written). | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture05.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture05.rkt). [Brainf*ck.rkt](https://github.com/aicenter/FUP/blob/main/code/lecture05-brainfuck.rkt). |
| 6. | [Lambda Calculus](lecture06) | Describes the basics of lambda calculus to show you were most of the initial ideas for functional programming came from. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture06.pdf). [Lambda-calculus.rkt](https://github.com/aicenter/FUP/blob/main/code/lambda-calculus.rkt). |
|1. | [Introduction](lecture01) | Discusses the key ideas behind functional programming. It further introduces the programming language [Racket](https://racket-lang.org/). | [Slides](/lectures/lecture01.pdf). [Log](/code/lecture01.rkt). |
| 2. | [Lists & Trees](lecture02) | Focuses on Racket lists and trees. Further, it introduces the unit testing library [Rackunit](https://docs.racket-lang.org/rackunit/index.html). | [Slides](/lectures/lecture02.pdf). [Log](/code/lecture02.rkt).|
| 3. | [Higher Order Functions](lecture03) | Deals with higher-order functions like `map`, `filter`, `foldl`, function closures and Racket structures.| [Slides](/lectures/lecture03.pdf). [Log](/code/lecture03.rkt).|
| 4. | [Lazy Evaluation](lecture04) | Introduces pattern matching, and explains how to implement lazy evaluation and streams in Racket. | [Slides](/lectures/lecture04.pdf). [Log](/code/lecture04.rkt).|
| 5. | [Macros & Interpreters](lecture05) | Briefly introduces syntactic macros, and shows how to implement interpreters (the latter is remains to be written). | [Slides](/lectures/lecture05.pdf). [Log](/code/lecture05.rkt). [Brainf*ck.rkt](https://github.com/aicenter/FUP/blob/main/code/lecture05-brainfuck.rkt). |
| 6. | [Lambda Calculus](lecture06) | Describes the basics of lambda calculus to show you were most of the initial ideas for functional programming came from. | [Slides](/lectures/lecture06.pdf). [Lambda-calculus.rkt](/code/lambda-calculus.rkt). |
| Bonus | [Immutable datastructures](bonus) | For the interested reader there is another lecture on immutable datastructures like random access lists. |

## Haskell

| # | Title | Content | Files |
|-|-|-|-|
| 7. | [Introduction to Haskell](lecture07) | Introduces Haskell as a compiled, statically-typed, and lazy language. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture07.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture07.hs). |
| 8. | [Haskell Types](lecture08) | Discusses the strongly-typed, static, and inferred type system of Haskell including: parametric polymorphism, ad-hoc polymorphism (typeclasses), and algebraic datatypes. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture08.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture08.hs). |
| 9. | [Type Classes](lecture09) | We discuss some more examples of type classes, most importantly `Functor`s. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture09.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture09.hs).|
| 10. | [Haskell's IO & Monads](lecture10) | Introduces Haskell's `IO` and the typeclass `Monad`. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture10.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture10.hs).|
| 11. | [Monadic Parsing](lecture11) | Uses `Functor` and `Monad` instances from the previous lecture to demonstrate the elegance of monadic parsing. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture11.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture11.hs). [`Parser.hs`](https://github.com/aicenter/FUP/blob/main/code/Parser.hs). |
| 12. | [State Monad](lecture12) | Make repetitive, stateful boilerplate disappear via the `State` monad. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture12.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture12.hs). [`State.hs`](https://github.com/aicenter/FUP/blob/main/code/State.hs). [`StateIO.hs`](https://github.com/aicenter/FUP/blob/main/code/StateIO.hs). |
| 13. | [Monoids & Foldables](lecture13) | Dissecting `foldr` into `Monoid`s and `Foldable`s. | [Slides](https://github.com/aicenter/FUP/blob/main/lectures/lecture13.pdf). [Log](https://github.com/aicenter/FUP/blob/main/code/lecture13.hs). [Dataset](https://github.com/aicenter/FUP/blob/main/code/FUP-hw.csv). |
| Bonus | [Parallel Haskell](lecture14) | Introduces Haskell's spark system and demonstrates how to use `Strategy` types for simple parallelization of existing Haskell programs. | [`pfold.hs`](https://github.com/aicenter/FUP/blob/main/code/pfold.hs). [`parmaze.hs`](https://github.com/aicenter/FUP/blob/main/code/parmaze.hs). |
| 7. | [Introduction to Haskell](lecture07) | Introduces Haskell as a compiled, statically-typed, and lazy language. | [Slides](/lectures/lecture07.pdf). [Log](/code/lecture07.hs). |
| 8. | [Haskell Types](lecture08) | Discusses the strongly-typed, static, and inferred type system of Haskell including: parametric polymorphism, ad-hoc polymorphism (typeclasses), and algebraic datatypes. | [Slides](/lectures/lecture08.pdf). [Log](/code/lecture08.hs). |
| 9. | [Type Classes](lecture09) | We discuss some more examples of type classes, most importantly `Functor`s. | [Slides](/lectures/lecture09.pdf). [Log](/code/lecture09.hs).|
| 10. | [Haskell's IO & Monads](lecture10) | Introduces Haskell's `IO` and the typeclass `Monad`. | [Slides](/lectures/lecture10.pdf). [Log](/code/lecture10.hs).|
| 11. | [Monadic Parsing](lecture11) | Uses `Functor` and `Monad` instances from the previous lecture to demonstrate the elegance of monadic parsing. | [Slides](/lectures/lecture11.pdf). [Log](/code/lecture11.hs). [`Parser.hs`](/code/Parser.hs). |
| 12. | [State Monad](lecture12) | Make repetitive, stateful boilerplate disappear via the `State` monad. | [Slides](/lectures/lecture12.pdf). [Log](/code/lecture12.hs). [`State.hs`](/code/State.hs). [`StateIO.hs`](/code/StateIO.hs). |
| 13. | [Lecture 13](lecture13) | Dissecting `foldr` into `Monoid`s and `Foldable`s. | [Slides](/lectures/lecture13.pdf). [Log](/code/lecture13.hs). [Dataset](https://github.com/aicenter/FUP/blob/main/code/FUP-hw.csv). |
| Bonus | [Parallel Haskell](lecture14) | Introduces Haskell's spark system and demonstrates how to use `Strategy` types for simple parallelization of existing Haskell programs. |

[`pfold.hs`](/code/pfold.hs).
[`parmaze.hs`](/code/parmaze.hs).

## Old recorded lectures

Expand Down

0 comments on commit 3311d7d

Please sign in to comment.