Learning outcomes

  • Know about pure functions (functions without side effects, functions which given same input always return same output).

  • Learn why and how to limit side effects of functions.

  • Discuss why and how to limit side effects of data. Also discuss when mutable data may be preferable.

  • The Zen of Python

  • Discuss why single-purpose functions are often preferred over multi-purpose functions.

  • Split-apply-combine, which lets you more easily parallelize. Make your code modular in a way that lets you split the steps and parallelize.

  • Think about global vs local data structures. It is not easy to separate them right.

  • Understand how a command line interface to a code can improve usability and also make the code more versatile (to be combined with workflow management tools).

  • Connect modular code development to the remaining lessons (version control, testing, documentation, reusability).