TeachScheme!

TeachScheme!

The TeachScheme! project is an outreach effort of the PLTresearch group. The goal is to train college faculty, high school teachers andpossibly even middle school teachers in programming and computing.

History

Matthias Felleisen and PLT started the effort in 1995 (January, one day after the POPL symposium)in response to observations of his Rice freshmen students and the algebra curriculumof local public schools. His objective was to use functional programming to bringmathematics alive and to help inject design knowledge into the introductory
computer science curriculum.

The group raised funds from several private foundations, the US Department of Education, and the National Science Foundation to create
* software appropriate for novices in functional programming
* courseware (curricula, lecture notes, exercises, mini-projects)
* teacher training camps.

Over ten years, it ran several dozen one-week workshops for some 550 teachers. In2005, the TeachScheme! project ran an Anniversary workshop where two dozen teacherspresented their work with students.

Functional Programming, Computing and Algebra

The starting point of TeachScheme! is the observation that students are computers ingrade school courses on arithmetic and middle/high school courses onpre/algebra. Teachers program them with rules and run specific problems viaexercises. The key is that students execute purely functional programs.

If we can turn students into teachers that create functional programs and run themon computers, we can reinforce this content and show students how writing downmathematics and how writing down functional programs creates lively animated scenesand even computer games.

Here is an example: ;; create an image from the current time (define (create-image t) (place-image APPLE 50 (* 10 t) SPACE))

;; names for basic images (define APPLE (circle 3 'solid 'red))(define SPACE (empty-scene 100 100))

;; --- run program run: (run-simulation 100 100 1/22 create-image)This four-line program simulates an apple falling from the top to the bottom of asmall white canvas. It consists of three parts:
* a function definition for create-image, which is a one-line function in mathematics, assuming an algebra of images with place-image, circle, and empty-scene have been introduced;
* two abbreviations, where names are equated with some value, just as in "let x be 5" in an algebra text; and
* one line for running the program.

A teacher can explain create-image as easily as any ordinary function in an algebracourse. For example, one can first draw a table with two rows and "n"columns where each column contains "t" at the top and an appropriate image atthe bottom. That is, if the numbers increase from left to right, then on each image thered dot is a little bit lower.

Finally the run-simulation line displays the images on a 100 x 100 canvas at therate of 22 images per second. That's how movies are made.

The background needed for such an example is little more than knowledge about makingmovies, about the algebra of pictures in DrScheme (which is like the one fornumbers), and minimal pre-algebra. The TeachScheme! project claims, however, thatchildren would have more fun with such "live" functions than with algebraicexpressions that count the number of garden tiles [see Prentice Hall books forgrades 8-9] .

The TeachScheme! project proposes that both traditional mathematics as well asscience courses could benefit from an integration of this form of programming. Incontrast to the traditional Basic or Visual Basic blocks in such books, a Schemeprogram consists of as many lines as the mathematics. Moving between the mathematicsand the program is thus straightforward. Better still, the meaning of the two arethe same. DrScheme's algebraic stepper can illustrate how Scheme evaluates theprogram as if it were a sixth or seventh grade student, step by step, using plainalgebra.

Functional Programming, Computing and Design in Programming 101

For the introductory curriculum on programming, the TeachScheme! project emphasizesthat courses should focus on the role of systematic design. Even if students neverprogram again, they should see how helpful a systematic approach to problem solvingis. This should help them if they become programmers or doctors or journalists orphotographers. Thus, an introductory course in programming would not be perceived aplace where students learn about the syntax of the currently fashionable programminglanguages, never to be remembered, but a place where they can learn something thatis applicable elsewhere.

The key design element of the TeachScheme! curriculum is the "designrecipe". It has two dimensions: the process dimension and the data dimension.

Along the process dimension students learn that there are six steps to designing a(simple) program, before they can run it and others can use it:
* problem analysis with the goal of describing the classes of data that go into the program and come out;
* the reformulation of the problem statement as a concise purpose statement;
* the creation of examples that illustrate the purpose statement;
* the organization of givens, also called a template or inventory;
* coding;
* and the creation of a test suite from examples to ensure the program worksproperly on small inputs. A close look at these steps shows how even a journalist, for example, benefits froma similar process: figuring out the major concepts in a story; coining a headline;lining up examples and specific data; organize the article about the story aroundthe givens and how the story unraveled; writing; and fact checking.

Organizing the givens is the task of translating the descriptions of data into aprogram skeleton. Each form of description determines a specific form of programorganization. The transformation is nearly mechanical and helps the students focuson the creative part of the task.

How to Design Programs is the text book authored by the core of the TeachScheme!group.

TeachScheme! and Scheme

While the name TeachScheme! appears to imply that this design recipe requires Schemeand is only useful with Scheme, it is actuallya pun for computer scientists who know post-fix notation: teach Scheme, "not". Neitherthe process nor the data axis of the design recipe require the use of Scheme. TheTeachScheme! members and their students have successfully applied the design recipein Assembly, C, Java, ML, Python, and other programming languages, not to speak ofpoetry, geometry, and biology courses.

To get started the TeachScheme! project has produced three essential elements:
* a series of teaching languages, which are dialects of Scheme, matched to the design recipe but with much better error reporting than a plain Scheme implementation;
* a pedagogic programming environment that helps students grow from Beginning Scheme to Intermediate, Advanced and plain Scheme;
* a curriculum, encoded mostly in the book HTDP.Their choice of Scheme reflects their belief that Scheme is a good language for asmall team with little funding (in comparison to Java) to validate theirconjectures. The PLT group has always ensured, however, that the ideas remainportable to other contexts.

From TeachScheme! to ReachJava

Over the past few years, the team has also created a second part of thecurriculum. It demonstrates how the same design recipe ideas apply to a complex
object-oriented programming language, such as Java.

A part of the team has a grant from the National Science Foundation for conducting field tests in colleges and high schools. The first trial workshops are taking place in the summer of 2007. This part of the project is dubbed ReachJava; the accompanying book istentatively titled "How to Design Classes."

TeachScheme! and Bootstrap

Recently PLT at Northeastern University and CitizenSchool from Boston have joint efforts to reach out to inner city students with after-school programs. CitizenSchool is a nation-wide organization that matches volunteers with after-school program sites and gets them started with scripted curricula. They have translated the TeachScheme! material into a sixth-grade curriculum and tested it with great success in Boston. The effect on the mathematics courses of this program has encouraged Microsoft to fund a national scale-up effort, developing materials for training teachers and creating sites in Texas, California, and other volunteer cities.

External links

* TeachScheme! website: http://www.teach-scheme.org/
* PLT Scheme: http://www.plt-scheme.org/
* How to Design Programs: http://www.htdp.org/


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • PLT Scheme — Infobox Software name = PLT Scheme caption = developer = PLT latest release version = 4.1 latest release date = Release date and age|2008|08|12 latest preview version = latest preview date = operating system = Cross platform platform = x86, PPC,… …   Wikipedia

  • DrScheme — Infobox Software name = DrScheme caption = DrScheme Editing Environment on Windows developer = PLT latest release version = 4.1 PLT Scheme blog, [http://blog.plt scheme.org/2008/08/plt scheme v41.html PLT Scheme v4.1] ] latest release date =… …   Wikipedia

  • How to Design Programs — (HtDP) is a textbook by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi on the systematic design of computer programs published in 2001 by MIT Press. The book introduces the concept of a design recipe , a six… …   Wikipedia

  • Matthias Felleisen — is a computer science professor and an author of German background. Felleisen is currently a Trustee Professor in the College of Computer and Information Science at Northeastern University in Boston, Massachusetts. In the past he has taught at… …   Wikipedia

  • Robert Bruce Findler — Robert Bruce Findler, colloquially known as Robby , is a computer scientist, currently teaching at the University of Chicago. He is also a member of PLT and, as such, responsible for the creation and maintenance of DrScheme. In addition to… …   Wikipedia

  • DrRacket — Developer(s) PLT Inc. Stable release 5.2 [1] / November 9, 2011; 1 day ago ( …   Wikipedia

  • Racket (programming language) — Racket Paradigm(s) Multi paradigm: Functional, Procedural, Modular, Object oriented, Reflective, Meta Appeared in 1994 Developer …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”