ProgramByDesign: Difference between revisions

Content deleted Content added
m Disambiguating links to Program (link changed to Computer programming) using DisamAssist.
Bender the Bot (talk | contribs)
m Bootstrap: HTTP to HTTPS for Brown University
 
(5 intermediate revisions by 5 users not shown)
Line 3:
 
==History==
[[Matthias Felleisen]] and [[Racket (programming language)|PLT]] began the effort in January 1995, one day after the ''[[Symposium on Principles of Programming Languages]]'' (POPL), in response to Felleisen's observations of his [[Rice University]] freshmen students and the algebra [[curriculum]] of local public schools. His objective was to use [[functional programming]] to bringmake [[mathematics]] come alive and help inject design knowledge into the introductory [[computer science]] curriculum.
 
The effort began using a [[programming language]] named PLT Scheme which was<!-- Renamed, see below. --> which was a version of the language [[Scheme (programming language)|Scheme]], which is a newer [[Dialect (computing)|dialect]] of an older language, [[Lisp (programming language)|Lisp]].
 
The group raised funds from several private [[Foundation (nonprofit)|foundations]], the [[United States Department of Education]], and the [[National Science Foundation]] to create:
Line 22:
 
Here is an example:
<sourcesyntaxhighlight lang="racket">
(require 2htdp/universe)
(require 2htdp/image)
Line 35:
 
(animate create-image)
</syntaxhighlight>
</source>
This short program simulates an apple falling from the top to the bottom of a small 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
Line 68:
For example, a journalist benefits from a similar process: figuring out the major concepts in a story; creating a headline; lining up examples and specific data; organizing the article about the story of the givens and how the story unfolded; writing; and fact checking.
 
The data dimension can be summarized by the maxim ''the shape of the data determines the shape of the code and tests.'' For example, if the input or output data type has three variants, a test suite should have at least one test case from each variant, and program code will probably contain a three-way conditional (whether explicit or hidden in a polymorphic dispatch). If the input or output data type has three fields, a test suite will have to specify values for those three fields, and program code will have to refer to those three fields. If the input or output data type has a simple ''base case'' and one or more self-referential variants, the test suite should include a base case and one or more non-base cases, and the program code will probably have a base case and one or more self-referential cases, isomorphic to the data type. The technique of [[recursion]], rather than being mysterious and scary, is simply applying already-learned methossmethods to a self-referential data type.
 
Organizing the givens is the task of translating the descriptions of data into a program skeleton. Each form of description determines a specific form of program organization. The transformation is nearly mechanical and helps the students focus on the creative part of the task.
Line 90:
 
==Bootstrap==
In 2006 PLT, at Northeastern University and [[Citizen Schools]] from Boston, made joint efforts to reach out to inner city students with after-school programs. Citizen Schools is a nationwide organization that matches volunteers with after-school program sites and gets them started with scripted curricula. The goal of the effort is to translate the material into a sixth-grade curriculum. The first few tests were a great success in Boston.<ref>{{cite news |url=http://www.boston.com/yourtown/news/dorchester/2011/05/bootstrap_program_pulls_up_rox.html |title=Bootstrap program pulls up Roxbury, Dorchester middle-schoolers |work=Boston.com |author= |date=2011-05-03 |access-date=2011-09-29}}</ref><ref>{{cite web |url=httphttps://www.cs.brown.edu/~sk/Publications/Talks/Moby-Bootstrap/ |title=The Moby Scheme Compiler for Smartphones |last=Krishnamurthi |first=Shriram |date=March 2009 |website=Brown University, Computer Science Department |access-date=2019-01-08}}</ref> 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.
 
==References==