Natural Language Tutoring and the Novice Programmer H. Chad. Lane & Coached Program Planning: Dialogue-Based Support for Novice Program Design H. Chad Lane and Kurt VanLehn, Pitt This isn't really in our subject area, but has a pretty thorough survey of software systems for tutoring of students, and discusses a software system which forces students to "self-discover" many of the patterns strategies were created to represent. -- Bridge: Tutoring the Programming Process Bonar and Cunningham, 1988 Can't find the actual paper, but I've seen reference to it around. Seems like the point is that a student programs via "menus a high level solution expressed in a constrained natural language form. ... this solution is iteratively rewritten into more precise forms." Something seemingly very much like strategies, except conformity to the structure was forced via the software. I can't actually find the paper though, so I might be incorrect. -- Introduction to Computing and Algorithms. Addison-Wesley Shackelford, Russ http://www.aw-bc.com/catalog/academic/product/0,1144,0201314517,00.html Seen reference to this textbook in multiple places; it seems like the entire course was based on pseudocode implementations of algorithms with no actual "programming". Can't find the book. -- DuHadway, L. P., Clyde, S. W., Recker, M. M., and Cooley, D. H. 2002. A concept-first approach for an introductory computer science course. J. Comput. Small Coll. 18, 2 (Dec. 2002), 6-16. concept_first.pdf VERY much like strategies, except the individual concepts being discussed varies slightly. The results from a very informal experiment were generally positive, with the greatest advantage seeming to come from the separation of syntax and concept. An example of "Our Psuedocode", their strategy like language to average three user inputted numbers: Print the message "Please enter a number" Get a value for first_number Print the message "Please enter a number" Get a value for second_number Print the message "Please enter a number" Get a value for third_number Set value of average to (first_number + second_number + third_number) / 3 Print the message "The average is " Print value of message Stop -- Reed, D. 1998. Incorporating problem-solving patterns in CS1. In Proceedings of the Twenty-Ninth SIGCSE Technical Symposium on Computer Science Education (Atlanta, Georgia, United States, February 26 - March 01, 1998). D. Joyce and J. Impagliazzo, Eds. SIGCSE '98. ACM Press, New York, NY, 6-9. DOI= http://doi.acm.org/10.1145/273133.273137 problem_patterns.pdf Shows the use of a single pattern (binary reduction) to illustrate multiple concepts in a CS1 course. Interesting from the perspective that the binary reduction pattern shown is applied in such a way as to get pattern recognition from students, meaning that they intuitively start to understand a domain of problems, mainly those which are divisible. This seems like it would be a good approach towards tacit knowledge: a pattern which experts understand. -- Reed, D. 1998. Incorporating problem-solving patterns in CS1. In Proceedings of the Twenty-Ninth SIGCSE Technical Symposium on Computer Science Education (Atlanta, Georgia, United States, February 26 - March 01, 1998). D. Joyce and J. Impagliazzo, Eds. SIGCSE '98. ACM Press, New York, NY, 6-9. DOI= http://doi.acm.org/10.1145/273133.273137 -- Wallingford, E. 1996. Toward a first course based on object-oriented patterns. In Proceedings of the Twenty-Seventh SIGCSE Technical Symposium on Computer Science Education (Philadelphia, Pennsylvania, United States, February 15 - 17, 1996). K. J. Klee, Ed. SIGCSE '96. ACM Press, New York, NY, 27-31. DOI= http://doi.acm.org/10.1145/236452.236485 This one in particular is interesting in light of strategies. Give the student a large corpus of code schema and they will do better at top-down design. -- Porter, R. and Calder, P. 2004. Patterns in learning to program: an experiment?. In Proceedings of the Sixth Conference on Australasian Computing Education - Volume 30 (Dunedin, New Zealand). R. Lister and A. Young, Eds. ACM International Conference Proceeding Series, vol. 57. Australian Computer Society, Darlinghurst, Australia, 241-246. "This means that in writing a pattern language you have to be concerned about design decisions that are above the level of syntax; concepts, like repetition and choice,that give the pattern language more structure than a programming language alone has." --