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.
To use Gambit have /pkgs/Gambit-C/current/bin/ in your path. The regular Gambit interpreter and compiler are called gsi and gsc; the versions of the Gambit interpreter and compiler that have Meroon preloaded are called gsi++ and gsc++.
There are sources for various software packages. I've put together a separate software installation page with some notes about how to install them yourself if you want. (But, PLEASE, read some documentation, README files, etc., to learn a bit about it on your own.)
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)