| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Date | Week | Content | Outputs to be delivered | ||||||||||||||||||||||
2 | Lecture Slide Links/ Monthly Test Links | Recorded Video Links | Presenter | Number of members completed the homework | Number of members conducted the homework review | Questions | ||||||||||||||||||||
3 | 1-4 | Project Launch: - Announce the establishment of the club on Cardano community groups and university student networks. - Accept member registrations. - Organize and disseminate the club's rules and regulations. | ||||||||||||||||||||||||
4 | 4 | Kickoff meeting: - Introduction to the club and its activities - Overview of Cardano and Catalyst: Potential and opportunities - Introduction to the Haskell Course by IOG Academy | ||||||||||||||||||||||||
5 | 5 | 1. Intro to Haskell Purely functional programming language Basic syntax Haskell Type system Laziness GHC (and GHCi) Using online IDE: Gitpod, Demeter Installing Haskell Locally | ||||||||||||||||||||||||
6 | 6 | 2. Data types, Signatures, and Polymorphism Pragmatic intro to types Type signature Infix and prefix functions Data Types in depth Polymorphic values and type variables | ||||||||||||||||||||||||
7 | 7 | 3. Conditions and helper constructions If-then-else Guards let expressions where Should I use let or where? Things to keep in mind | ||||||||||||||||||||||||
8 | 8 | 4. Pattern matching and Case What is pattern matching? Pattern matching on Function implementations Lists Tuples Case | ||||||||||||||||||||||||
9 | 9 | Review Lessons 1-4 and assign Monthly Test | ||||||||||||||||||||||||
10 | 10 | 5. Improving and combining functions (1) Higher-order functions Lambda functions Precedence and associativity | ||||||||||||||||||||||||
11 | 11 | 5. Improving and combining functions (2) Curried functions Composing and applying functions Point-free style | ||||||||||||||||||||||||
12 | 12 | 6. Recursion (1) Why Recursion? Thinking Recursively Steps to create your own recursive function Examples of recursion | ||||||||||||||||||||||||
13 | 13 | 6. Recursion (2) Extracting the foldr pattern The foldl function The foldl' function When to use foldr, foldl, and foldl' | ||||||||||||||||||||||||
14 | 14 | Review Lessons 5-6 and assign Monthly Test | ||||||||||||||||||||||||
15 | 15 | 7. Intro to Type Classes The awesomeness of type classes What are type classes Common type classes The most general valid type Multiple constraints | ||||||||||||||||||||||||
16 | 16 | 8. Creating Non-Parameterized Types Type synonyms Defining new types Creating new types with data Using new types Value parameters Record syntax | ||||||||||||||||||||||||
17 | 17 | 9. Creating Parameterized and Recursive Types (1) Type Parameters Prameteryzing type synonyms Prameteryzing data types | ||||||||||||||||||||||||
18 | 18 | 9. Creating Parameterized and Recursive Types (2) Recursive data types Kinds The newType keyword | ||||||||||||||||||||||||
19 | 19 | Review Lessons 7-9 and assign Monthly Test | ||||||||||||||||||||||||
20 | 20 | 10. Creating Type Classes and Instances (1) Overloading Steps to create Type Classes and Instances (1) | ||||||||||||||||||||||||
21 | 21 | 10. Creating Type Classes and Instances (2) Steps to create Type Classes and Instances (2) Subclassing Deriving | ||||||||||||||||||||||||
22 | 22 | 11. Basic IO (1) Pure functions Introduction to IO actions IO actions under the hood IO actions in practice Interacting with the user Actions are first-class values Composing IO actions (>> and >>= operators) | ||||||||||||||||||||||||
23 | 23 | 11. Basic IO (2) The do block Using let, nesting do-blocks, escaping IO and return The main action Creating our first program Writing the simplest Haskell program Compiling and running our program | ||||||||||||||||||||||||
24 | 24 | Review Lessons 10-11 and assign Monthly Test | ||||||||||||||||||||||||
25 | 25 | 12. Modules Importing Modules Creating our own Modules The Prelude and Standard Libraries | ||||||||||||||||||||||||
26 | 26 | 13. Cabal and language extensions Cabal Introduction to Cabal Creating a new Haskell project Going over the Cabal file using an external library Building and running our executable Language extensions and Pragmas Introduction NumericUnderscores TypeApplications | ||||||||||||||||||||||||
27 | 27 | 14. Handling Errors There're always Exceptions to the rule Speed-running Exceptions with a dumb self-driving car I'm the Exception cause I have class throw all the Exceptions you want. I'll catch them all! Maybe give me a value? Benefits of optional values Ok, you Either give me a value or a reason why you didn't! From Exceptions to optional values Tradeoffs So, what should I use? | ||||||||||||||||||||||||
28 | 28 | 15. How to learn on your own and Map Using GHCi to find out more Hoogle HaskellWiki Walking through while teaching Map module | ||||||||||||||||||||||||
29 | 29-30 | Review and take the Final Test | ||||||||||||||||||||||||
30 | Congratulations! 🥳 You can call yourself a (beginner) Haskell developer! YOU'RE READY FOR THE MARLOWE, PLUTUS. | |||||||||||||||||||||||||
31 | ||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||
33 | ||||||||||||||||||||||||||
34 | ||||||||||||||||||||||||||
35 | ||||||||||||||||||||||||||
36 | ||||||||||||||||||||||||||
37 | ||||||||||||||||||||||||||
38 | ||||||||||||||||||||||||||
39 | ||||||||||||||||||||||||||
40 | ||||||||||||||||||||||||||
41 | ||||||||||||||||||||||||||
42 | ||||||||||||||||||||||||||
43 | ||||||||||||||||||||||||||
44 | ||||||||||||||||||||||||||
45 | ||||||||||||||||||||||||||
46 | ||||||||||||||||||||||||||
47 | ||||||||||||||||||||||||||
48 | ||||||||||||||||||||||||||
49 | ||||||||||||||||||||||||||
50 | ||||||||||||||||||||||||||
51 | ||||||||||||||||||||||||||
52 | ||||||||||||||||||||||||||
53 | ||||||||||||||||||||||||||
54 | ||||||||||||||||||||||||||
55 | ||||||||||||||||||||||||||
56 | ||||||||||||||||||||||||||
57 | ||||||||||||||||||||||||||
58 | ||||||||||||||||||||||||||
59 | ||||||||||||||||||||||||||
60 | ||||||||||||||||||||||||||
61 | ||||||||||||||||||||||||||
62 | ||||||||||||||||||||||||||
63 | ||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||
65 | ||||||||||||||||||||||||||
66 | ||||||||||||||||||||||||||
67 | ||||||||||||||||||||||||||
68 | ||||||||||||||||||||||||||
69 | ||||||||||||||||||||||||||
70 | ||||||||||||||||||||||||||
71 | ||||||||||||||||||||||||||
72 | ||||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||
74 | ||||||||||||||||||||||||||
75 | ||||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||
78 | ||||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||
100 | ||||||||||||||||||||||||||