I’m currently pursuing the UBCx Software Development MicroMasters. I’m learning systematic program design and really enjoying it. The key things I’ve learned so far are:

  • The design recipes
    • How to Design Functions
    • How to Design Data
    • How to Design Worlds
  • Templating functions
    • Data Driven Templates
  • The functional programming paradigm
  • Test Driven Design
  • Domain Analysis

Here’s an example problem from the course and my solution. As you can see from my comments, I forgot to say which template rules I used and had to add them in later. Also, there’s some inconsistency between the data definition using “Light” as the type name and the template using “light-state” for the function name. From now on I’ll be trying to make sure they match.