By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
World of SoftwareWorld of SoftwareWorld of Software
  • News
  • Software
  • Mobile
  • Computing
  • Gaming
  • Videos
  • More
    • Gadget
    • Web Stories
    • Trending
    • Press Release
Search
  • Privacy
  • Terms
  • Advertise
  • Contact
Copyright © All Rights Reserved. World of Software.
Reading: How Do You Teach I/O Before Monads? Inside a Radical Syllabus for a 1000-Student FP Course | HackerNoon
Share
Sign In
Notification Show More
Font ResizerAa
World of SoftwareWorld of Software
Font ResizerAa
  • Software
  • Mobile
  • Computing
  • Gadget
  • Gaming
  • Videos
Search
  • News
  • Software
  • Mobile
  • Computing
  • Gaming
  • Videos
  • More
    • Gadget
    • Web Stories
    • Trending
    • Press Release
Have an existing account? Sign In
Follow US
  • Privacy
  • Terms
  • Advertise
  • Contact
Copyright © All Rights Reserved. World of Software.
World of Software > Computing > How Do You Teach I/O Before Monads? Inside a Radical Syllabus for a 1000-Student FP Course | HackerNoon
Computing

How Do You Teach I/O Before Monads? Inside a Radical Syllabus for a 1000-Student FP Course | HackerNoon

News Room
Last updated: 2025/07/16 at 4:56 PM
News Room Published 16 July 2025
Share
SHARE

Table of Links

1 Introduction

2 Course Structure and Conditions

2.1 Conditions

2.2 Syllabus

3 Lectures

4 Practical Part

4.1 Engagement Mechanisms

4.2 Technical Setup and Automated Assessment

4.3 Selected Exercises and Tools

5 Check Your Proof by Example

6 Exams

7 Related Work

8 Conclusion, Acknowledgements, and References

2 Course Structure and Conditions

2.1 Conditions

The 5 ECTS[2] course was mandatory for computer science undergraduates in their third semester and an elective for other related degrees such as games engineering or information systems. All students studied Java in their first semester and had taken courses on algorithms and data structures, discrete mathematics, and linear algebra. The course ran for 14 weeks with one 90-minute lecture, one 90-minute tutorial, and one exercise sheet each week.

1057 students registered for the first iteration[3] that took place on campus in winter semester 2019 (WS19) and 1031 for the second iteration[4] in winter semester 2020 (WS20), taking place in virtual space due to the COVID-19 pandemic.

Both iterations were organised by the lecturer, Tobias Nipkow, and the authors of this paper. The former designed the lecture material, created the slides[5], and delivered the lectures. The others took care of the practical and organisational part of the course. All gained valuable experience in running an online course on the theory of computation for 1071 students in summer semester 2020. Finally, Manuel Eberl had the honour of assisting us with the weekly programming competition (see Section 4.1).

Needless to say, running tutorials for more than 1000 students each semester on our own is impossible. We were further assisted by 13 student assistants in WS19 and 22 student assistants in WS20. In WS19, their primary job was to run the tutorials and provide feedback for homework submissions (e.g. code quality). However, it became clear to us that this manual feedback is not effective and that their time is better spent creating engaging exercises (see Section 4.1). On average, each assistant worked 10 hours per week, spending 4 hours on running tutorials and the remaining 6 hours preparing themselves for the tutorials, grading student submissions, and implementing new exercises for students.

2.2 Syllabus

The course deals with the basics of functional programming and the verification of functional programs. Most parts of the course could be done using any functional language. We chose Haskell because of its simple syntax, large user community, and good testing facilities (in particular QuickCheck). The syllabus stayed close to the one presented in [4]. The changes are the omission of the parser case study, the rigorous introduction of computation induction and type inference, and the decision to split off I/O from monads and introduce it earlier. The last is done in an effort to convince students more quickly that pure functional languages can be practical and deal with side effects. For ease of reference, we list the syllabus below. New or modified topics are marked (∗):

  1. Introduction to functional programming

  2. Basic Haskell: Bool, QuickCheck, Integer and Int, guarded equations, recursion on numbers Char, String, tuples

  3. List comprehension, polymorphism, a glimpse of the Prelude, basic typeclasses (Num, Eq, Ord), pattern matching, recursion on lists (including accumulating parameters), scoping by example

  4. Proof by structural induction and computation induction on lists (∗)

  5. Type inference algorithm (∗)

  6. Higher-order functions: map, filter, foldr, λ-abstractions, extensionality, currying

  7. Typeclasses

  8. Algebraic datatypes and structural induction

  9. Concrete I/O without introducing monads (∗)

  10. Modules: module syntax, data abstraction, correctness proofs

  11. Case studies: Huffman codings, skew heaps

  12. Lazy evaluation and infinite lists

  13. Complexity and optimisation

  14. Monads (∗)

Concepts are introduced in small, self-contained steps. Characteristic features of functional programming languages such as higher-order functions and algebraic data types are only introduced midway through the course. This makes the design of interesting practical tasks harder but ensures that students are not overwhelmed by the diversity of new principles that are not part of introductory imperative programming courses. In general, the course progresses from ideas close to what is known from imperative languages (e.g. boolean conditions, recursion on numbers, auxiliary functions, etc.) to simple applications of new concepts (e.g. recursion and induction on lists) to generalised new concepts (e.g. algebraic data types and structural induction).

Authors:

(1) Kevin Kappelmann, Department of Informatics, Technical University of Munich, Germany ([email protected]);

(2) Jonas Radle, Department of Informatics, Technical University of Munich, Germany ([email protected]);

(3) Lukas Stevens, Department of Informatics, Technical University of Munich, Germany ([email protected]).


[2] European Credit Transfer System; one ECTS credit equals 30 hours of work

[3] https://www21.in.tum.de/teaching/fpv/WS19/ (website – except “Wettbewerb” – German; course material English)

[4] https://www21.in.tum.de/teaching/fpv/WS20/ (English)

[5] https://www21.in.tum.de/teaching/fpv/WS20/assets/slides.pdf

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
Share This Article
Facebook Twitter Email Print
Share
What do you think?
Love0
Sad0
Happy0
Sleepy0
Angry0
Dead0
Wink0
Previous Article Amid Starlink’s Expansion, FCC Moves to Speed Up Satellite Approvals
Next Article Today's NYT Connections: Sports Edition Hints, Answers for July 17 #297
Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Stay Connected

248.1k Like
69.1k Follow
134k Pin
54.3k Follow

Latest News

Making Augmented Reality Accessible: A Case Study of Lens in Maps
News
Linux 6.17 To Fix AMDGPU Hibernation So It Doesn’t Take ~50 Minutes On Large GPU Servers
Computing
Perfect phone under Rs. 40,000? Oppo reno14 could be the answer
Software
25 of the most iconic computers ever | Stuff
Gadget

You Might also Like

Computing

Linux 6.17 To Fix AMDGPU Hibernation So It Doesn’t Take ~50 Minutes On Large GPU Servers

3 Min Read
Computing

Xiaohongshu gains massive new users amid TikTok exodus, teams work overtime to meet demand · TechNode

1 Min Read
Computing

Kenyan BNPL startup Wabeh halts operations as defaults rise

5 Min Read
Computing

Can You Schedule Posts on Bluesky? Yes! Plus Recycle Them

23 Min Read
//

World of Software is your one-stop website for the latest tech news and updates, follow us now to get the news that matters to you.

Quick Link

  • Privacy Policy
  • Terms of use
  • Advertise
  • Contact

Topics

  • Computing
  • Software
  • Press Release
  • Trending

Sign Up for Our Newsletter

Subscribe to our newsletter to get our newest articles instantly!

World of SoftwareWorld of Software
Follow US
Copyright © All Rights Reserved. World of Software.
Welcome Back!

Sign in to your account

Lost your password?