You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The idea of this file is to have a single source of truth as to which changes we want to do when we update the course.
4
+
Feel free to provide a PR with more proposed changes!
5
+
6
+
## In general
7
+
8
+
9
+
## Lesson 1
10
+
11
+
### Lecture
12
+
-
13
+
### Homework
14
+
-
15
+
16
+
## Lesson 2
17
+
18
+
### Lecture
19
+
- Add short explanation about type classes after polymorphysm. Just enough so the students don't struggle until we cover them properly on the type classes lesson.
### I can't run the code cells in the VSCode instance!
4
+
5
+
As of now, the Haskell kernel is configured to work only with a Binder instance. The VSCode instance is only for the homework. Mainly because we didn't want to encourage students to use their free 50 hs/month of GitPod while going through the lesson if there's a free and open-source alternative (Binder).
6
+
7
+
### There's no binder button!
8
+
9
+
If that's the case, that lesson hasn't been published yet. When it's finalized and recorded, we'll add the button.
10
+
11
+
### Do I have to pay anything to use all these resources?
12
+
13
+
NO!
14
+
- The content is free and open source.
15
+
- The cloud service we use to host the interactive versions is also free.
16
+
- And the GitPod instance we use to run the VSCode has a free tier of 50 hs/month, which we believe will be more than enough. In the case you need more than 50 hs/month to do the homework, you can clone the repo and run everything locally (You can install everything using [GHCup](https://www.haskell.org/ghcup/).
17
+
18
+
### I want something to be different!
19
+
20
+
Tell us! We want this to be an easy and fun way to learn Haskell. If the community want's something different, we'll adapt the course!
21
+
22
+
### I have other questions!
23
+
24
+
- About Haskell? Look for the Haskell channel in [IOG's technical community](https://discord.com/invite/cmveaxuzBn). We'll be there to answer questions!
25
+
- About the repo or the course itself? Create an [issue](https://github.com/input-output-hk/haskell-course/issues)!
## How much should I study if I only want to use Marlowe/Plutus?
8
+
## How much should I study if I only wish to use Marlowe/Plutus?
9
9
10
10
In the [outline](#what-well-cover) below, there are clear stopping points (for both Marlowe and Plutus) where we deem you to know enough Haskell to effectively use the technology.
11
11
12
12
## How to read/watch the lessons
13
13
14
-
To go through the interactive lessons, go to your chosen lesson's outline inside "[What we'll cover](#what-well-cover)" and click on the button that looks like the one below. If the page loads with a "500: Internal Server Error" just refresh it and it should be fine. At the top you will see a console that displays the progress of preparing your interactive lesson. During this time you can scroll down and look at the lesson, that is displayed non-interactively.
14
+
To go through the interactive lessons, go to your chosen lesson's outline inside "[What we'll cover](#what-well-cover)" and click on the button that looks like the one below. If the page loads with a "500: Internal Server Error" just refresh it, and it should be fine. At the top, you will see a console that displays the progress of preparing your interactive lesson. During this time, you can scroll down and look at the lesson, that is displayed non-interactively.
@@ -23,27 +23,36 @@ And to see the video, click on the button that looks like this:
23
23
24
24
1. Clone this repository.
25
25
2. Create a [GitPod](https://www.gitpod.io/) account.
26
-
3. Click this button to create a remote dev environment: [](https://gitpod.io/#https://github.com/rober-m/haskell-bootcamp)
27
-
4. Select the `code/HomeworkXX` folder with the homework you want to complete.
26
+
3. Click this button to create a remote dev environment: [](https://gitpod.io/#https://github.com/input-output-hk/haskell-course)
27
+
4. Select the `Homework/HomeworkXX` folder with the homework you want to complete.
28
28
5. Follow the instructions inside the app/Main.hs file.
29
+
6. Check the solutions in the "solutions" branch!
29
30
30
31
#### Repository structure
31
32
32
33
Haskell-Course
33
34
| |
34
-
| |---- code
35
+
| |---- Homework
35
36
| |
36
37
| |---- Homework01 (Homework for lesson 01)
37
38
| |---- Homework02 (Homework for lesson 02)
38
39
| ...
39
40
|
40
-
|-------- lessons (Lessons in Juptyer notebook format. Access through Binder.)
41
+
|-------- lessons (Lessons in Jupyter notebook format. Access through Binder.)
41
42
|
42
43
|---- 1-Introduction-to-haskell
43
44
|---- 2-Functions-Data-Types-and-Signatures
44
45
45
46
Everything else can be safely ignored
46
47
48
+
## FAQ
49
+
50
+
[FAQ](FAQ.md)
51
+
52
+
## Proposed changes for next iteration/version
53
+
54
+
[Changes](Changes.md)
55
+
47
56
## What we'll cover
48
57
49
58
**This is a tentative outline. Changes can (and will) be made as we advance with the course and gather feedback from students.**
@@ -66,7 +75,9 @@ Everything else can be safely ignored
66
75
- How to open and use GitPod
67
76
- Example of how to complete a homework assignment.
68
77
69
-
### 2. Data types, Signatures, and Polymorphism
78
+
79
+
### 2. Data types, Signatures, and Polymorphism [](https://mybinder.org/v2/gh/input-output-hk/haskell-course/HEAD?labpath=%2Flessons%2F02-Functions-Data-Types-and-Signatures.ipynb)[](https://youtu.be/RABzYje2d2A)
80
+
70
81
71
82
- Pragmatic intro to types
72
83
- Type signature
@@ -86,13 +97,14 @@ Everything else can be safely ignored
86
97
- Tuples + Tuples VS Lists
87
98
- Polymorphic values and type variables
88
99
89
-
### 3. Conditions and helper constructions
100
+
### 3. Conditions and helper constructions[](https://mybinder.org/v2/gh/input-output-hk/haskell-course/HEAD?labpath=%2Flessons%2F03-Conditions-and-helper-constructions.ipynb)[](https://www.youtube.com/watch?v=G0XPELNZuws)
90
101
91
102
- If-then-else
92
103
- Guards
93
-
-`let`
104
+
-`let` expressions
94
105
-`where`
95
-
- Using `let` and `where` together
106
+
- Should I use `let` or `where`?
107
+
- Things to keep in mind
96
108
97
109
### 4. Pattern matching and Case
98
110
@@ -105,7 +117,7 @@ Everything else can be safely ignored
105
117
106
118
### 5. Improving and combining functions
107
119
108
-
- Higherorder functions
120
+
- Higher-order functions
109
121
- Curried functions
110
122
- Partial application
111
123
- Composing and applying functions (`.` and `$` operators)
@@ -201,7 +213,7 @@ Everything else can be safely ignored
0 commit comments