Professional Documents
Culture Documents
Matthias Felleisen
Content
Academic
Context
Content
Academic
Context
What is a student to do
when s/he reaches the end of HtDP?
What is a student to do
when s/he reaches the end of HtDP?
What is a student to do
who doesnt see HtDP in his/her first year?
Lisp
Fun
Games
Learning
Programming
Stories with Comics
Web Sites, Songs, and Videos
Lisp
Fun
Games
Learning
Programming
Stories with Comics
Web Sites, Songs, and Videos
Lisp
Fun
Games
Learning
Programming
Stories with Comics
Web Sites, Songs, and Videos
Fun
Games
Learning
Programming
Stories with Comics
Web Sites, Songs, and Videos
Racket
Fun
Games
Learning
Programming
Stories with Comics
Web Sites, Songs, and Videos
Mimi Lin
Nicole Nussbaum
Spencer Florence
Pranav Gandhi
Content
Academic
Context
}
How to Design Programs
How to Design Components
How to Design Systems Racket
How to Prove Programs
}
How to Design Programs
How to Design Components
How to Design Systems Racket
How to Prove Programs
}
How to Design Programs
How to Design Components
How to Design Systems Racket
How to Prove Programs
Carl Eastlund
Daniel Friedman
HtDP/2e
HtDP/2e
design recipes
design guidelines
topics, order of (mostly)
finite data
simple recursive data
functional abstraction
complex recursive data
generative recursion
design with accumulators
modules and abstract data
functional data representations
loops and iterators
finite data
simple recursive data #lang 2htdp/asl
finite data
simple recursive data #lang 2htdp/asl
finite data
simple recursive data
functional abstraction
complex recursive data
generative recursion
design with accumulators
modules and data abstraction
functional data representations
loops and iterators
examples:
finite data + finite sets
simple recursive data + dictionary/hashes
functional abstraction + infinite sets
complex recursive data
generative recursion
design with accumulators
modules and data abstraction
functional data representations
loops and iterators
examples:
finite data + finite sets
simple recursive data + dictionary/hashes
functional abstraction + infinite sets
complex recursive data
#lang 2htdp/isl
generative recursion ;; Set = [Any -> Boolean]
design with accumulators
;; Set Set -> Set
modules and data abstraction
(check-expect
functional data representations (element-of (union odd? even?)
loops and iterators (random 100000))
true)
(define (union s t)
(lambda (x)
(or (s x) (t x))))
(define (scalar* a v)
(for/vector ((x v))
(* a x)))
Input/Output:
Input/Output:
interactive I/O
Input/Output:
Input/Output:
finite data
#lang 2htdp/bsl
simple recursive data
functional abstraction (require 2htdp/batch-io)
(require 2htdp/itunes)
complex recursive data
generative recursion ;; String -> [Listof iTuneRecords]
(define (retriev-database file-name)
design with accumulators (list->iTune-Record
(read-file-as-list file-name)))
modules and abstract data
functional data representations ... process titles, singers, ...
(require 2htdp/universe)
finite data (require 2htdp/batch-io)
(require google-yahoo-credentials.rkt)
simple recursive data
functional abstraction (define (main s)
(big-bang (retrieve-maps
complex recursive data (retrieve-coordinates s))
generative recursion [to-draw draw-first-map]
[on-key rotate-maps]))
design with accumulators
;; Address -> Coordinates
modules and abstract data
(define (retrieve-coordinates address)
functional data representations (read-url YAHOO-GEO-SERVICE ...))
finite data
World World
simple recursive data
functional abstraction
complex recursive data
World
generative recursion UniverseServer
design with accumulators
modules and abstract data
World
functional data representations World
loops and iterators