The previous post talked about using a higher level language that looks at the engineering aspects of the program. The blocks being linked up are specific 'functions' that perform some sort of computation on data passed to it.
Separating the Computation from the Thinking
Computational thinking is one of the cool new terms in research. There is an ongoing debate on the ways to best describe what computational thinking is about.
Althought I'm not privy to the debate literature, I think at least some of basics are simple enough. I like Google's approach to it and will follow the four main components of computation thinking that is referred to at http://www.google.com/edu/computational-thinking/what-is-ct.html
- Pattern Recognition
- Pattern Generalization
- Algorithmic Design
In terms of separation between the engineering and computation parts, it is difficult to say at this point whether decomposition and pattern recognition and generalization should be handled at the 'computation' or 'engineering' levels. However, 'algorithmic design', it can be argued, is better suited for the computation level. Any computation that take place on data should be inside a 'function' block. Functional programming techniques should be used to make the code as expressive as possible.
- What are the similarities and differences between compuation at the function level in math and CS ?
- What is the best notation to use considering existing knowledge that kids have about mathematical functions ?
- Does a student's mastery of maths affect their grasp of functional programming concepts ?
- Does abstracting conditionals and state to a higher level affect students' use of conditionals in functional code ?
- Develop a few test cases for functional programming using a syntax close to mathematics but with CS specific additions such as recursion and data-types. - Test the language with students with similar knowledge in mathematics.
- Look for correlation between students' performance using the new language their understanding of mathematical functions
Mathematical Thinking : http://www.math-in-cs.org/ Peter B Henderson : http://blue.butler.edu/~phenders/ Keith Devlin : http://profkeithdevlin.com/