Why should this course be interesting? - Scheme is an example of a general-purpose programming language. This means that it can express and solve all computable functions. (This is also known as Turing-complete.) - There are problems that will involve uncomputable functions. Practical computing involves the domain of computable tasks. - The structure of practical computing is determined by asymptotics, problems that can be approximated to arbitrary precision. - Programs are extremely malleable. They are as malleable as thought, in that a single modification involves understanding of the entire design. (c.f. friendship --> falling in love) Why is Scheme Used? - Input/Output is implemented well for pedagogical purposes. - Object-oriented aspect implemented well. - Scheme is a functional programming language (i.e. the style for expression is handled as in math functions). This is different from procedural languages. Practical DrScheme information: - There are various options for the language, including beginner, intermediate, advanced, and professional settings. Each imcrement provides a larger subset of the standard functionality. - We will begin on the beginner settings. It excludes more complicated functionality that will disrupt the learning process. We will move onto more complex settings soon, though.