Cùng nhau học Haskell

Với mong muốn tập hợp các Anh Chị Em có cùng đam mê học Haskell từ chưa biết gì trong Cộng đồng Cardano Blockchain Việt Nam. Một số thành viên đã đề xuất tạo lập nhóm “Cùng nhau học Haskell

Cùng nhau học Haskell có gì hay:

  • Sẽ được đồng hành với người cùng đam mê trong hơn 10 buổi videos học về Haskell từ IOGAcademy
  • Trong mỗi buổi sẽ có 1 người giảng, bạn nghe, đặt câu hỏi và góp ý.
  • Bạn cũng sẽ là người giảng về một module nào đó.
  • Ngôn ngữ trao đổi trong phòng họp là Tiếng Việt
  • Thực hành thực tế, có bài tập cuối mỗi buổi.
  • Đây là Chương trình cần sự cam kết của bạn.
  • Khóa học được Gimbalab hỗ trợ phần hỏi đáp.
  • Thời gian học phù hợp với số đông >51% biểu quyết thành viên tham dự
  • Learning by doing
  • Khóa học chỉ nhận tối đa 15 người.

Chương trình phù hợp với ai?

  • Những Anh Chị Em trong cộng đồng đang cần kỷ luật và động lực học Haskell
  • Những Anh Chị Em có đam mê nhưng ít tham gia lập trình
  • Những Anh Chị Em muốn tìm một hướng đi mới, nghề nghiệp mới.

Hình thức học

  • Học qua zoom, mỗi buổi không quá 120 phút

Format của buổi học:
20 -30 phút: Review bài tập & Nội dung bài cũ
50 -60 phút: Chia sẻ về video
10 -15 phút: Giao bài tập về nhà

Vào thời điểm viết bài viết này, khóa học đã đến buổi số 5. Nội dung, lịch học từng buổi cũng như recap của buổi học sẽ được đăng trong nhánh bài viết này. Bạn nào có cùng quan tâm có thể tham dự với điều kiện làm hết bài tập của 05 buổi và theo dõi bài đăng kế tiếp ở link meetup sau

1 Like

Buổi học thứ 5 trong chuỗi các buổi “Cùng nhau học Haskell” đã diễn ra từ 20:30 đến 22:30 ngày 03/1/2023
Buổi học có sự tham dự 12 học viên, chúng tôi đã cùng nhau hoàn tất các nội dung:

  1. Ôn lại kiến thức bài 4
  2. Học kiến thức buổi 5
  • Higher-order functions
  • Hàm Lambda functions
  • Tính ưu tiên và Tính kết hợp- Precedence and associativity
  • Curried functions
  • Partial application
  • Ứng dụng hàm hợp
  • Toán tử $ operator
  • Toán tử . operator
  • Point-free style
  1. Giao bài tập về nhà

Bạn nào có cùng quan tâm đều có thể tham dự với điều kiện làm hết bài tập của 05 buổi và theo dõi bài đăng kế tiếp ở link meetup

1 Like

Trong buổi học thứ 6, 12 thành viên đã cùng nhau trải qua các nội dung

  • Ôn lại kiến thức bài 5
  • Học kiến thức buổi 6
  • Tại sao là đệ quy?
  • Tư duy đệ quy
  • sum and product
  • Các bước để tạo hàm đệ quy của riêng bạn
  • Ví dụ về đệ quy
  • and, length, reverse, drop, take, map, filter
  • Extracting the foldr pattern
  • Hàm foldl
  • Hàm foldl’
  • Khi nào sử dụng foldr, foldl, à foldl’
  • Giao bài tập về nhà

Đây là một buổi học kéo dài từ 20:30 đến 23:00 với nhiều nội dung phức tạp
Khóa học tạm nghỉ 02 tuần để các thành viên đoàn tụ với gia đình trong tết Âm lịch
Buổi học thứ 7 sẽ diễn ra ngày 31/1/2023

Bạn nào có cùng quan tâm đều có thể tham dự với điều kiện làm hết bài tập của 05 buổi và theo dõi bài đăng kế tiếp ở link meetup

Buổi học thứ 7 đã dành hơn một tiếng để chữa bài tập của buổi 06. 11 thành viên của nhóm đã đi qua bài số 7 với các nội dung

  • Điều tuyệt vời từ type classes
  • Type classes là gì
  • Các type classes căn bản
  • Eq, Ord
  • Num, Integral, Floating
  • Read, Show
  • Các type hợp lệ căn bản
  • Đa giàng buộc
    Một số hình ảnh từ buổi học

Một buổi học kéo dài đến 22:50. Các thành viên đang mong chờ buổi kế tiếp diễn ra 20:30 ngày thứ 3 (7/3/2023).

Bạn nào có cùng quan tâm đều có thể tham dự với điều kiện làm hết bài tập của 07 buổi và theo dõi bài đăng kế tiếp ở link meetup

Nhóm học đã đến bài thứ 8- Đây là một trong những bài có nhiều khái niệm mới, cách tiếp cận mới hoàn toàn với lập trình truyền thống. Nội dung bài 8 đã đi qua gồm có:
Kiểu đồng nghĩa

  • Định nghĩa như thế nào
  • Sử dụng ra sao

Tạo kiểu mới với dữ liệu

  • Tạo kiểu
  • Sử dụng
  • Các giá trị

Record syntax

Đây là một số hình ảnh ghi nhận từ buổi học

Bạn nào có cùng quan tâm đều có thể tham dự với điều kiện làm hết bài tập của 08 buổi và theo dõi bài đăng kế tiếp ở link meetup

Sau hơn 30 phút chữa bài tập của bài học số 8. Nhóm gồm 11 người đã cùng nhau tìm hiểu nội dung bài số 9 với các chủ để cực mới lạ:

  1. Parameterizing Types
  2. Prameteryzing type synonyms
  3. Prameteryzing data types
  4. Recursive data types
  5. Tweet me a river
  6. A Sequence of Nodes
  7. A Tree of Nodes
  8. Kinds
  9. The newType keyword
    Bài học cực dài và có nhiều điểm cần tìm hiểu thêm từ các nguồn sách khác.
    Sau đây là một số hình ảnh từ buổi học


Các bạn nào có cùng quan tâm đều có thể tham dự với điều kiện làm hết bài tập của 09 buổi và theo dõi bài đăng kế tiếp ở link meetup

Bài tập của bài 8 và bài 9 đã tạo ra nhiều khó khăn cho anh em trong việc viết code. Buổi học số 10 anh em quyết định là buổi định hướng lại. Một số hạng mục anh em đã thống nhất:

  • Học đảm bảo hiểu bài và làm được bài tập, không chạy theo tiến độ hay thời gian
  • Tạm dành 02 buổi kế tiếp để tìm hiểu lại bài 8,9 và chữa bài tập
  • Các buổi kế tiếp cần học đến đâu nắm bài đến đó, không theo tiến độ mỗi buổi một bài mà do nhóm chủ động bố trí.
    Buổi học kế tiếp ngày 28/02/2023 nhóm 1 sẽ chữa bài.

Sau 09 bài lý thuyết, nhóm học quay trở lại ôn tập. Buổi 10 là buổi ôn tập đầu tiên với toán tự tạo kiểu đồng nghĩa type và cách tạo kiểu mới data trong haskell



Đây là buổi ôn tập làm rõ cách khai báo, cách sử dụng biến đa giá trị, đa trường trong Haskell

Nhóm cùng nhau học Haskell đã sang đến buổi thứ 11 - Đây là buổi ôn tập Nhóm đã ôn lại :slight_smile: - Nội dung về hàm bậc cao

  • Toán tử áp dụng hàm $
  • Hàm hợp và toán tử (.)
    Và thực hiện các bài tập
    đây là môt số hình ảnh từ buổi chia sẻ


Buổi học thứ 12 là buổi các thành viên trong nhóm cùng nhau ôn luyện lại các nội dung ở Bài 1 và bài 9 thông qua 08 bài tập giúp các học viên hiểu dõ hơn về hàm đệ quy

Buổi học thứ 13 cả nhóm tiếp tục ôn lại kiến thức về hàm hơp, hàm đệ quy qua 08 ví dụ.
Qua các ví dụ cụ thể, các thành viên đã cảm nhận:

  • Tự tin hơn trong việc tự viết hàm đệ quy
  • Có khả năng suy luận, viết code tốt hơn
    Sau đây là một hình ảnh của buổi học:

Tối ngày 4/4/2023. Nhóm 08 thành viên đã cùng nhau tìm hiểu bài số 10. Nội dung cụ thể gồm có:

  • Overloading
  • Steps to create Type Classes and Instances
  • The Eq type class
  • Defining the Type Class
  • Defining multiple instances
  • Improving our Eq type class with mutual recursion (and MCD)
  • Defining an instance for a parameterized type.
  • The WeAccept Type Class
  • The Container Type Class
  • Exploring Ord type class (Subclassing)
  • Deriving
  • Deriving can go wrong

Bài học có nhiều khái niệm khá trừu tượng, Nhóm đã quyết định lên buổi kế tiếp là phần bài tập để làm rõ kiến thức đã học.
Sau đây là một số hình ảnh của lớp



Video của buổi học có tại đây Cùng nhau học Haskell- Bài 10 - YouTube

Tại buổi học thứ 16, nhóm đã cùng nhau ông lại học bài số 10 và học bài số 11 với các nội dung sau:

  • Pure functions
  • Introduction to IO actions
  • IO actions under the hood
  • IO actions in practice
  • The () type
  • Interacting with the user
  • getChar, getLine, and putStrLn
  • Actions are first-class values
  • Composing IO actions (>> and >>= operators)
  • The do block
  • Using let, nesting do-blocks, escaping IO and return
  • The main action
  • Recap

Một số hình ảnh từ buổi học



Video của buổi học có tại đây -Cùng nhau học Haskell- Buổi học thứ 16 - YouTube

Đây là buổi học thứ 17, nhóm sẽ cùng nhau học tiếp bài số 11 và ôn luyện phần bài đã học
Nội dung còn lại của bài 11 gồm có:

** Cùng nhau học Haskell- Bài số 20**

Từ bài 20 trở đi nhóm đã chuyển sang học Plutus. đây là bài đầu tiên với các nội dung

  1. What is a smart contract?
  2. What’s the difference between “on-chain” and “off-chain” in plutus smart contracts?
  3. Concurrency and all that: Cardano smart contracts and the EUTXO model
  4. Using the Cardano command line interface
  5. Cardano Node CLI Reference
  6. Plutus scripts
  7. Writing basic validator scripts

Video của buổi học được lưu trữ tại đây

Cùng nhau học Haskell- Bài số 21
Đây là buổi học thứ 21,
Nhóm sẽ cùng nhau ôn lại học phần1- bài số 2 và học phần còn lại bài 2 trong khóa học Plutus Pioneer Program, nội dung chính gồm có:

  1. Explain what validators are.
  2. Differentiate between typed and untyped scripts.
  3. Execute and inspect validators’ code to identify code issues.
  4. Employ built-in and custom data types.
  5. Use the cardano-cli to interact with validators.

Nội dung của buổi học được ghi lại tại video sau đây Cùng nhau học Haskell- Bài số 21 - YouTube

Cùng nhau học Haskell- Bài số 22
Đây là buổi học thứ 22,
Nhóm sẽ cùng nhau học bài 3 trong khóa học Plutus Pioneer Program, nội dung chính gồm có:

  1. Describe what the script context is.
  2. Explain how Plutus scripts manage script context via the ScriptContextV2 data type.
  3. Understand how the different purposes of a Plutus script work.
  4. Handle time in transactions using the POSIXTimeRange data type.
  5. Describe how the time range works in Cardano while sending transactions to the blockchain.
  6. Restate how time validation works in Cardano transactions.
  7. Use Plutus to implement a time-handling example.
  8. Restate how time constrains can be implemented by using Plutus.

Recording của buổi học có sẵn tại đây PPP4-3-Part1 - YouTube

Cùng nhau học Haskell- Bài số 23

Trong buổi họp 5 thành viên của nhóm đã trao đổ về các nội dung

  1. Handle time in transactions using the POSIXTimeRange data type.
  2. Describe how the time range works in Cardano while sending transactions to the blockchain.
  3. Restate how time validation works in Cardano transactions.
  4. Use Plutus to implement a time-handling example.
  5. Restate how time constrains can be implemented by using Plutus.

Đây là một số hình ảnh từ buổi học

Nội dung được ghi thành video tại đây

Cùng nhau học Haskell- Bài số 24

Trong buổi này Nhóm đã cùng nhau chữa bài tập bài 3 và học bài 4- trong khóa học Plutus Pioneer Program, nội dung chính gồm có:

  1. Install the cardano-cli-gui.
  2. Interact with multiple inputs and outputs using the cardano-cli-gui.
  3. Manually balance transactions.
  4. Summarize the pros and cons of cardano-cli.

Một số hình ảnh tại buổi học



Video của buổi học được lưu tại đây

Cùng nhau học Haskell- Bài số 25

20:30 ngày 20/6/2023 Nhóm cùng nhau học Haskell đã cùng học các nội dung

  • Lesson 4.4: Off-Chain Code with Lucid
  • Lesson 5.1: Introduction to Native Tokens in Cardano
  • Lesson 5.2: The Value Type
  • Lesson 5.3: A Simple Minting Policy
    Sau đây là một số hình ảnh từ buổi học

Nội dung bài học có tại đây