Using Programming Language Concepts to Teach General Thinking Skills
The programming language field has developed in response to an unprecedented situation in human history - the need to communicate with entities (such as computers), if every aspect of the computation and information representation is specified explicitly and completely. The availability of an immediate and automated feedback through appropriate interaction with a computer enhances the accessibility of concepts and promotes a fully rigorous approach that makes it difficult for a student to slide by with only a partial understanding. This paper focuses on three elementary concepts: Multiple Formal Perspectives, Automation and Translation & Abstraction (more precise and sophisticated), that radically increase a person's ability to conceptualize, understand and see other worldly aspects of the scholarly and physical world. The programming languages field provides a uniquely favorable context for teaching certain fundamental concepts in modern human endeavors like - Understanding the central role that one's perspective plays in the entire quandary conceptualization, formulation, and solution process; multiple perspectives are available for different problems; improving human productivity and that there is an appropriate division of tasks between automated systems and humans, and Understanding a precise notion of abstraction. This approach can therefore provide part of the solid, foundational understanding that all individuals, and not just computer scientists, need to think clearly and be truly effective in whatever endeavor they choose to pursue.