What are "Coarse Procedures"? ----------------------------- A "coarse procedure" is some rough, often handwritten code that solves a subset of a difficult or open-ended task. Example: static String containsGazelle(String s) { int dist = levenSubstringIC_limited(s, "gazelle", 2); ret dist == 0 ? "yes" : dist == 1 ? "maybe" : "no"; } This function detects whether the word "gazelle" or a slight misspelling occurs in a line. For "hello gazelle", the function returns "yes". For "hello gazele", it returns "maybe"... and so on. It uses a variation of the Levenshtein distance algorithm. This is of course not the final function that we actually want, which will be much smarter and adapt to more cases. However, the coarse function is very useful anyway. -We can use it right away -It is cheap to run -It is predictable, reliable and easy to understand -It will do what we want if the input is sufficiently well-formed -It gets an intention across -It can serve as a basis for an optimization algorithm that generates better code in its place ...and more. We can bootstrap an AI system with a bunch of coarse procedures and then proceed to optimize it, be it manually or automatically.