Learning Programming with Erlang

"The only concept to perform things several times, is recursion, which has a intuitive, simple semantics. Most students are able to implement backtracking on their first day!"

"With this knowledge and Erlang’s simple concept for concurrent and distributed programming, we were able to address a more interesting topic as the final project: we implemented a distributed chat in groups of 4 or 5 pupils."

Learning Programming with Erlang or Learning Erlang with Ladybirds pdf

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Multi-agent programming in a first course

We have explored a similar idea: the progressive enrichment of multiagent microworlds, where concurrency is available from the start. We start with a simple microworld and as soon as the students have reached its limits we add concepts to get a richer microworld. In this way, the students see six or seven microworlds and at the end of the course they are programming interactive multi-user games such as Pong. Probably it is possible to add fault tolerance and distributed programming as well within the same style.

We did all this in French, teaching beginning students; the full reports and the software are available here. The software environment is called LogOz and is built on top of Mozart (the inspiration from Logo is evident!).

I think that the whole programming curriculum should be rethought, building on these ideas for the first programming course. Students who go back to a "classical" programming course after the multiagent course tend to be highly disappointed. There is no other reason to add the artificial complexity of current programming systems, except to prepare the students for what they will see after they graduate.

PS, Frank Huch is a true Erlang expert: he won a best paper award several years ago for a paper on Erlang's formal semantics.

Artificial Complexity of current programming systems

Perhaps we should have classes on refactoring.

Or maybe call it "extreme refactoring" when paradigms/languages are changed.

This should probably include consideration for pragmatics of speed + size.


You can also get his presentation slides here (pdf).