Here are some resources in PDF files.
To learn how to program in this style, work through the first two chapters of the Structure and Interpretation of Computer Programs.
There are sources for various software packages.
./configure CC='gcc -special-options-here' --prefix=/where-you-want-to-stick-it --enable-single-host make make installThe "where-you-want-to-stick-it" part defaults to /usr/local/Gambit-C/. The special options might include "-m64 -march=your-architecture", where your architecture might be "nocona" on a Core 2 Duo or "970" or "G5" on a Power Macintosh G5.
tar zxf MeroonV3-2008Jan10.tgz cd MeroonV3-2008Jan10 ./make_meroonUnfortunately, this will take a few gigabytes of memory to compile, and the default Gambit installer on MacOS builds both Intel and PowerPC versions at the same time, so if you want to build Meroon on MacOS you should download the Gambit sources and build it yourself.
I've collected some suggestions for projects. You don't need to choose a project from this list, you can choose any other project with my approval. You will need to choose a project soon after spring break. If we haven't yet covered a project on this list yet (for parabolic problems, hyperbolic problems, etc.) then look in the textbook to see what these problems are like and decide whether you'd like to work on them.
(define-class Polynomial Object ((= variable immutable:) (= terms immutable:))) (define-method (initialize! (p Polynomial)) (let ((terms (Polynomial-terms p))) ;; check that ;; (a) termlists are in decreasing order (let loop ((terms terms)) (cond ((or (empty-termlist? terms) (empty-termlist? (rest-terms terms)))) ((> (term-order (first-term terms)) (term-order (first-term (rest-terms terms)))) (loop (rest-terms terms))) (else (error "initialize! for Polynomials: terms are not in decreasing order" p)))) ;; (b) check that coeffs are not zero (let loop ((terms terms)) (cond ((empty-termlist? terms)) ((not (zero? (term-coeff (first-term terms)))) (loop (rest-terms terms))) (else (error "initialize! for Polynomials: not all term coefficients are zero" p)))) (call-next-method))) ;; implementation of termlists using Meroon objects (define-class kons Object ((= kar immutable:) (= kdr immutable:))) (define (the-empty-termlist) 'empty-termlist) (define (first-term termlist) (kons-kar termlist)) (define (rest-terms termlist) (kons-kdr termlist)) (define (empty-termlist? termlist) (eq? termlist (the-empty-termlist))) (define (adjoin-term term term-list) (if (=zero? (term-coeff term)) term-list (make-kons term term-list))) ;; end #| ;; implementation of termlists using lists (define (the-empty-termlist) '()) (define first-term car) (define rest-terms cdr) (define empty-termlist? null?) (define (adjoin-term term term-list) (if (=zero? (term-coeff term)) term-list (cons term termlist))) ;; end |# ;; the following works no matter the definition of termlist (define (empty-termlist? termlist) (equal? termlist (the-empty-termlist))) #| ;; implementation of terms using Meroon objects (define-class term Object ((= order immutable:) (= coeff immutable:))) ;; end |# ;; implementation of terms using cons (define make-term cons) (define term-order car) (define term-coeff cdr)