Poetry of Programming - Puzzle Based Introduction to Functional Programming

The course was presented at the 2017 Clojure/conj conference! Here are the slides, the abstract, and the recorded video of the talk.

This is a Clojure programming course designed for non-programmers, in particular for Liberal Arts students with some college/high school algebra background. The course discusses the functional core of the language. It is offered at Akita International University in Japan (MAT245).

Try the language online: replumb(cljs) reepl(cljs) repl.it(clj)


Poetry of Programming Book

Comments are welcome! When reporting errors please specify the version number. These tutorial notes usable for self-study. However, it is expected that at some point one will face difficulties in the learning process. Here some guidelines for that situation.

How To Code It?

Exercises and assessment

Assignments are for lab work. In case of running out of time, they become homework problems.

Reading Exercises are for traditional paper-based exams. The task is to determine what the one-liners evaluate to.

Extra problems

Mini-projects require a bit more work than exercise problems.

This work is licensed under CC BY-NC-SA 4.0.

Attila Egri-Nagy

Course Introduction 2017/18 Winter


The purpose of the course is to experience the joy of computer programming. Serious fun that can easily be turned into an important skill in career planning.

Course Introduction 2017 Spring

This course aims to share the empowering and fun experience of writing computer programs. It is a gentle introduction to functional programming in Clojure, which is based on very simple mathematical ideas and it is currently gaining widespread adoption in software industry. According to stackoverflow, it also appears to be well-paid.

Is this course for you? First of all, you do NOT need any previous programming experience. So if you are interested, then YES.

In particular, Poetry of Programming is for you if you agree with AT LEAST ONE of the following statements.

  1. You like puzzles but you do not find solving equations too exciting (or you do).
  2. You don’t like math but you are happy to give it one more chance.
  3. You like math.
  4. You would like to understand how computers work.
  5. You like the idea of an intellectual adventure.
  6. You are planning a career in information technology.
  7. You are concerned about the society in the information age, so you would like to understand computing as one of its driving forces.
  8. You know some other programming language, but want to learn Clojure as well.

Unfortunately, the gender ratio in computing is currently out of balance. There are efforts to get more diversity (see for example girlswhocode.com), so there could be good career opportunities for women in the IT sector. Therefore, female students are particularly recommended to consider this course.

Original blog entry on how this project started