Computational Thinking Pattern Algorithm Design