Lambda Calculus is a model of computation, there are many theoretical interesting things to do in it.
It is a symbolic language where you can basically define constants, functions and application of functions.
The module could at first implement the classic untyped lambda calculus.
The operations that could be implemented would be:
- solving alpha-equivalence (a notion of equality between terms)
- apply steps of beta-reduction (this can be seen as evaluation of a function). Here we can have many interesting methods like normal, eager, head-normal form, et al.
- determination of existence of normal forms of a sub-group of terms (normalization is an undecidable problem, but some sub-parts of the language have normalization guaranteed)
- beta equivalence (also undecidable problem in general case)
There are many interesting extensions that are quite big, related to type systems and logic for the future.
If you want, I can give more details about lambda calculus, so don't hesitate to ask.
On the other hand, there can be also other kind of models of computation, list functions are a Turing Complete model of computation. It is really elegant and simple but not well known. I guess automata theory and grammars could be an interesting project too.
Best Regards
Ezequiel