ProgramByDesign: Difference between revisions

Content deleted Content added
No edit summary
Line 1:
{{norefs|date=June 2010}}
The "ProgramByDesign project", formerly known as '''TeachScheme! project'',' is an outreach effort of the [[Racket (programming language)|PLT]]
research group. The goal is to train college faculty, high school teachers and
possibly even middle school teachers in programming and computing.
Line 21:
presented their work with students.
 
In 2010, [[Racket (programming language)|PLT]] renamed its major programming language [[Racket (programming language)|Racket]]. The nameAt forthe [[DrScheme]]same time, the [[integratedgroup developmentrenamed environment|IDE [[DrScheme]], was changed to [[DrRacket]] and TeachScheme! to ProgramByDesign.
 
==Functional Programming, Computing and Algebra==
 
The starting point of TeachScheme!ProgramByDesign is the observation that students are computers in
grade school courses on arithmetic and middle/high school courses on
pre/algebra. Teachers program them with rules and run specific problems via
Line 68:
The background needed for such an example is little more than knowledge about making
movies, about the algebra of pictures in [[DrRacket]] (which is like the one for
numbers), and minimal pre-algebra. The TeachScheme!ProgramByDesign project claims, however, that
children would have more fun with such "live" functions than with algebraic
expressions that count the number of garden tiles [see Prentice Hall books for
grades 8-9].
 
The TeachScheme!ProgramByDesign project proposes that both traditional mathematics as well as
science courses could benefit from an integration of this form of programming. In
contrast to the traditional Basic or Visual Basic blocks in such books, a Racket
Line 84:
==Functional Programming, Computing and Design in Programming 101==
 
For the introductory curriculum on programming, the TeachScheme!ProgramByDesign project emphasizes
that courses should focus on the role of systematic design. Even if students never
program again, they should see how helpful a systematic approach to problem solving
Line 92:
languages, but a place where they can learn something widely applicable.
 
The key design element of the TeachScheme!ProgramByDesign curriculum is the ''design recipe''.
It has two dimensions: the process dimension and the data dimension.
 
Line 118:
on the creative part of the task.
 
[[How to Design Programs]] is the text book authored by the core of the TeachScheme!ProgramByDesign
group.
 
==TeachScheme!ProgramByDesign and choice of programming language==
 
The name TeachScheme! appears to imply that this design recipe requires Scheme (now [[Racket (programming language)|Racket]])
and is only teachable with [[DrRacket]]Scheme. Neither conclusion is true, however. TheMembers of PLT and their trainees have successfully applied the design recipe
TeachScheme! members and their students have successfully applied the design recipe
in Assembly, C, Java, ML, Python, and other programming languages, not to speak of
poetry, geometry, and biology courses. The fundamental idea of ProgramByDesign is to stress programming as a design activity.
This misconception is one of the reasons for the renaming actions taken in 2010.
 
To get started the TeachScheme!ProgramByDesign project has produced three essential elements:
* a series of successively more powerful and permissive teaching languages, which are dialects of Racket, matched to the design recipe but with error reporting matched to the student's level (for example, many things that are legal in standard Racket, but which a beginning student doesn't need, are flagged as errors in the Beginning Student level);
* a beginner-friendly, freely-downloadable, pedagogic programming environment, [[DrRacket]], that enforces these language levels;
Line 138:
portable to other contexts.
 
==ProgramByDesign for Java==
==From TeachScheme! to ReachJava==
 
Over the past few years, the team has also created a second part of the
Line 149:
tentatively titled "How to Design Classes."
 
==TeachScheme!ProgramByDesign and Bootstrap==
 
RecentlyIn 2006 PLT at Northeastern University and Citizen Schools from Boston [http://www.citizenschools.org/boston/] have joint efforts to reach out to inner city students with after-school programs. Citizen Schools is a nation-wide organization that matches volunteers with after-school program sites and gets them started with scripted curricula. TheyThe havegoal translatedof the TeachScheme!effort is to translate the material into a sixth-grade curriculum. andThe testedfirst itfew withtests were a great success in Boston. [http://www.cs.brown.edu/~sk/Publications/Talks/Moby-Bootstrap/] The effect on the mathematics courses of this program has encouraged Microsoft and Google to fund a national scale-up effort, developing materials for training teachers and creating sites in Texas, California, and other volunteer cities.
 
==External links==
 
* [http://www.teach-schemeprogrambydesign.org/ TeachScheme!ProgramByDesign]
* [http://www.racket-lang.org/ Racket]
* [http://www.htdp.org/ ''How to Design Programs'']