Mini-Projects that can be covered in an 1 hour Haskell tutorial I am supposed to be holding a tutorial session in an Undergraduate Haskell Course, which is also supposed to be a first course in programming for a few of the students. Ideally, the tutorial should be interesting, interactive and inviting problem solving skills.

My audience is a group of Undergraduate students, a large number of which are mathematically oriented and a few graduate students, majoring in Computer Science. For the undergraduate students, it can be assumed that quite a few of them are new to programming or CS in general. And functional programming is new to almost everyone. This tutorial is part of a course they are all attending - the aim of which is to introduce programming.

I am wondering what sort of things I could cover in such a tutorial. Some ideas I had are these:


A sudoku solver
A Brain**** Interpretter
An Arithmetic Expression Parser and Interpretter
Discussing a data structure which the students have not seen before - like binomial heaps, or red black trees


What other things could I try? Functional Programming specific applications are especially welcome.
The ideas in your question are far too difficult, for a one hour introduction.
Yesterday I had a look at Haskell and learnt some. I have over 30 years programming experience (20 years professional). Have experience with functional programming. Yet it took me several hours, and did not get far enough to be able to do your suggestions.
Mathematics
You say that your students have a maths background.
Take advantage of this. Choose some math problems. That Haskell is ideally suited to solve. And explain why you are doing this.
Ensure that you have more than you think you will need, as some students will be much faster than you expect, but don't expect to use them all.
There are some good ideas here https://stackoverflow.com/a/15110828/537980 also some of the other answers, to the same question: sort, search, interpreter (this one may take too long), factorial.
Avoid bad examples
Don't do problems that are more difficult in a functional language than in a procedural one (Reversing a list, using procedural techniques, in $O(n)$, is easy. If by using functional they will probably get a $O(n^2)$ solution, and $O(n)$ is hard, then you are teaching a disadvantage on day one.)
Fibonacci is, I think $O(2^n)$, for simple recursive implementations.
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)

I did it in $O(n)$ once, that was the day I learnt a lot about caching. It was hard, it took me a whole day.