In my focs course, I wrote a simple minimax implementation in Scheme, and was introduced to wrapping my mind around functional programming. Writing in a functional language is fun because it pushes you to see problems from a new perspective. The code I've written here has no variable assignments, for/while loops, or arrays.
Then, after reading about Huffman compression, I thought I'd write my own implementation, not for course credit but just for fun. I started writing it in Python, but then noticed that nearly all the recursion I had used was with tail-calls. So why not use a functional language, especially where tail-calls were optimized?
And I'm really liking the aesthetic structure of the code.
The minimax code I mentioned above can be seen here. You'll need to provide definitions for create_new_table, get_open_spaces, place_at_position, and is_winning.