+* We'll give examples using the packaging system shared by Debian and Ubuntu,
+ and we'll assume that those of you using different packaging systems will know
+ how to make the relevant substitutions.
+
+
+**For everyone**, a general item to take note of is what "processor architecture" your machine is running. Three of the possibilities are:
+
+* One of Intel's i386, i486, i586, i686 architectures. These are collectively known as "x86" or "IA-32" or sometimes just "32-bit".
+* Intel or AMD's x86\_64 architecture. This is also called "x64" or "amd64" or "IA-64" or sometimes just "64-bit". (Note that these *aren't* "x86" machines, even though "x86\_64" starts with those letters.)
+* ARM or some other architecture. These are generally lower-powered machines, like iPads. Some of the software we're proposing *might* in principle be capable of running on such machines, but installers don't seem to be available. We'll assume you have access to an x86 or x86\_64 machine.
+
+On Linux or Mac OS X, you can open a terminal and type `uname -m`. If the
+result is "x86\_64", then you've got x64/64-bit. If it's "i386" or something
+like that, then you've got x86/32-bit. I think that Mac OS Xs from 10.7 / Lion
+forward have all been x86\_64-only.
+
+On Windows,
+[here is a page that can help you figure this out](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows).
+I think that most machines running Windows XP will be x86/32-bit (unless it's
+a version of Windows with "64-bit" or "x64" in its title); machines running
+Windows Vista or Windows 7 or Windows 8 could be running either x86/32-bit or
+x64/64-bit.
+
+
+## PLEASE REPORT PROBLEMS (AND SOLUTIONS!) ##
+
+We haven't tested these instructions ourselves, and they're not explicit
+step-by-step instructions in any case. If you encounter troubles, please email
+to let us know so that we can amend the instructions to help others. If you
+figure out how to fix the problem youself (and please do), please also write
+with suggestions how we can change these instructions to make the process
+easier and more straightforward for others.
+
+
+## Preliminaries ##
+
+If you're using Linux or a Mac without MacPorts, then open a Terminal and type the following. You probably want to copy and paste it to make sure you don't make mistakes:
+
+ (IFS=:; for p in $PATH; do [ /usr/local/bin = "$p" ] && exit 0; done;
+ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile)
+ mkdir -p ~/bin
+ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bash_profile
+
+
+## Getting Scheme ##
+
+**Scheme** is one of two or three major dialects of *Lisp*, which is a large family
+of programming languages. The other dialects are called "Common Lisp" and "Clojure".
+Scheme is the more clean and minimalist dialect, and is what's mostly used in
+academic circles.
+
+* In your web browser:
+
+ There is a (slow, bare-bones) version of Scheme available for online use at <http://tryscheme.sourceforge.net/>.
+
+Scheme itself has umpteen different "implementations", which share most of
+their fundamentals, but have slightly different extensions and interact with
+the operating system differently. One major implementation is called [Racket](http://racket-lang.org),
+and that is what we recommend you use. (A few years back they were called PLT Scheme, but then
+they changed their name to Racket.)
+If you're already using or comfortable with
+another Scheme implementation, though, there's no compelling reason to switch.
+
+
+Another good Scheme implementation is [Chicken](http://www.call-cc.org). For our purposes, this is in some respects
+superior to Racket, and in other respects inferior. If you have any issues with installing or using Racket, you could
+try this out instead. You might even want to install both.
+
+<!--
+Racket doesn't have R7RS-small, and won't anytime soon.
+Other R7RS-friendly: [Gauche](http://practical-scheme.net/gauche), [Chibi](https://code.google.com/p/chibi-scheme).
+-->
+
+Racket and Chicken stand to Scheme in something like the relation Firefox stands to HTML. They are two programs (or platforms) among others for working with the Scheme language; and many of those programs (or web browsers) permit different extensions, have small variations, and so on.
+
+Racket has several components. The two most visible components for us are a command-line interpreter named "racket" and a teaching-friendly editor/front-end named "DrRacket". You will probably be working primarily or wholly in the latter.
+<!-- "racket" used to be mzscheme, "DrRacket" used to be DrScheme -->
+
+The current version of Racket is 6.1.1 (released November 2014).
+
+* **To install in Windows**
+
+ Go to <http://racket-lang.org/download/>. Download and install the "Windows x64" version. (Or the "Windows x86" verson if you have an older, 32-bit system.)
+
+* **To install on Mac without MacPorts**
+
+ Go to <http://racket-lang.org/download/>. Download and install the option for your system, most likely "Macintosh
+ OS X (Intel 64-bit)".
+
+ After you copy the files from the Installation disk to your /Applications folder, I think it's helpful to do these additional steps. In a Terminal, type:
+
+ sudo ln -s /Applications/Racket*/DrRacket.app /Applications/
+ ln -s /Applications/Racket*/bin/racket ~/bin/
+
+ (If you get an error about ".../bin/: No such file or directory", then you didn't follow the Preliminary instructions above.)
+
+ Then you can launch Racket either by double-clicking the DrRacket icon in
+ your Applications folder (this gives you the GUI interface); or by typing
+ `racket` in a Terminal (this gives you the command-line version).
+
+ Instead of, or in addition to, the first line above, you could drag the *DrRacket.app* icon to your Dock.
+
+* **To instead install Chicken Scheme on Mac without MacPorts**
+
+ Here are the exact steps I just verified worked. Note that I *first installed the Haskell Platform*, described further down this page; that installed some developer tools that were needed to build and install Chicken. If you don't know how to open a Terminal, move between directories, copy / rename / delete files and so on, then you're probably best off not doing this. You could break something.
+
+ 1. Go to <http://code.call-cc.org>, and click the "Source code" link near the top. Current version is 4.9.0.1, released November 2014. This should fetch a file to your download folder, and will probably automatically unpack that file into a folder, "chicken-4.9.0.1". Click on that folder and press command-C / Copy, then open a Terminal.
+ 2. In the terminal type `cd` followed by a space, then press command-V / Paste. Then press enter. This will move your session into the folder you just downloaded. <!-- Type `less README` and read that file. -->
+ 3. Type `make PLATFORM=macosx XCODE_DEVELOPER= XCODE_TOOL_PATH=/usr/bin PREFIX=$HOME` <!-- PREFIX defaults to /usr/local -->
+
+ The options starting with `XCODE_` are to tell the Chicken build scripts that I've got the developer tools installed in my main system, rather than as part of Xcode. (That's where the Haskell Platform installer put them.) Continuing:
+
+ 4. Wait a while while Chicken builds.
+ 5. If it finishes with no errors, then type `make PLATFORM=macosx XCODE_TOOL_PATH=/usr/bin PREFIX=$HOME install`. This will install Chicken in your user home directory.
+ 6. At this point you can type `which chicken`. It should give you an answer of "/Users/yourname/bin/chicken".
+ 7. In your terminal, type `chicken-install r7rs datatype matchable monad`. <!-- with "-sudo" if you installed chicken in /usr/local --> This will download, build, and install a few extensions (Chicken calls them "eggs") relevant to ideas we'll be working with in this course.
+
+* **To install on Mac with MacPorts**
+
+ Unfortunately, MacPorts doesn't have Racket itself available. It only has an older version from when they still called
+ themselves PLT Scheme. And even then, it only has the command-line program "mzscheme" (what's nowadays called "racket"); it
+ doesn't have the GUI program that corresponds to what's now called "DrRacket". You can install mzscheme by opening a Terminal
+ window and typing:
+
+ sudo port install mzscheme
+
+ <!-- mzscheme v4.1.5, from March 2009; latest mzscheme is 4.2.5, from April 2010 -->