Textbooks and language referencesThere are two required texts, but you don't need to purchase them; they are available online, and hard copies of assigned reading from them will be provided as handouts (in installments).
You should also have at hand at least one up-to-date and comprehensive C++ language reference. The most authoritative such reference is, of course, the C++ standard itself: Document#: INCITS/ISO/IEC 14882-2003It is available from American National Standards Institute eStandards Store. Note that this is the 2003 revision of the standard (the first official C++ standard was released in 1998). The price for the electronic version is $30, for the print version ...unless you have an Uncle Midas, you'll want to choose the electronic version. But the standard's legalistic style and lack of tutorial examples make for difficult and sometimes frustrating reading. Instead you might prefer one of the following: Stanley Lippman, Josée Lajoie, and Barbara Moo, C++ Primer, Fourth Edition, 885 pages, Addison-Wesley, 2005, ISBN 0-201-72184-1;The following book is less thorough and can't take the place of a complete reference, but it has lots of examples and emphasizes the advantages of understanding and using the C++ standard library from the beginning: Andrew Koenig and Barbara E. Moo, Accelerated C++, 336 pages, Addison Wesley, 2000, ISBN 0-201-70353-X. C++ Style GuideIn programming assignments and projects for the course, adhere to rules in this C++ Style Guide.Cygwin Tools (including the GNU C++ compiler, X Windows, and Emacs)The Cygwin Tools are a set of freeware compilers (including for GNU C/C++), other programming tools (such as debuggers), editors (Emacs in particular), and utility programs (such as the BASH shell and X Windows) for Windows 95/98/NT/2000/XP. They provide many of the same useful tools you would find on a typical Unix or Linux platform.If you have a Windows box you should install the Cygwin Tools on it. Download the installation file for your OS version from the Cygwin Web page. GNU C++ compiler and standard libraryThis is a just a command-line compiler, but in combination with the compilation support commands of Emacs you can have a reasonable edit/compile/execute environment. For this course, version 3.3 or later is required, and version 4.1.1 is preferred. On CSLab's FreeBSD and Solaris machines, use g++4 to invoke version 4.1.1. On the FreeBSD machines either g++3 or simply g++ gets you version 3.4.2. On the Solaris machines, g++3 gets you 3.3.3. (Amazingly, version 2.95.3 is still available on Solaris machines and is what you get with g++; you should definitely not use this version).On the Solaris installation of 4.1.1, the path to the standard library is /software/gcc-4.1.1-0/pkg/lib/gcc/sparc-sun-solaris2.10/4.1.1/include/c++ On FreeBSD it is: /software/gcc-4.1.1-0/pkg/lib/gcc/i386-unknown-freebsd5.4/4.1.1/include/c++/ ConceptGCCFrom a 10/13/2006 message to the C++ standards committee from Doug Gregor (who got his BS and PhD from Rensselaer and is now doing a postdoc at Indiana University):We have just released a new version of our prototype compiler for concepts, ConceptGCC. This compiler implements most of the current concepts proposal (N2081) and is a great way to explore concepts.[Added 11/14/2006: A description of the ConceptGCC project is included in Doug's OOPSLA paper on extending C++ with concepts (hardcopies handed out in class on 11/13/2006). There are some reading assignments in this paper.] EmacsGNU Emacs, ``the extensible, customizable, self-documenting real-time display editor,'' is available on most campus computers. For Windows, either install Cygwin's implementation (it's under the Editors category; you'll also need Cygwin's X Windows implementation) or the native Windows version from GNU Emacs Web page.Emacs has a built-in tutorial (type Esc-x help t) and ``info system'' (type Esc-x info). You can tailor Emacs to your preferences with a file called .emacs in your home directory. For use in this course, you should use the following .emacs file or add its contents to your existing .emacs file. See the comments (lines that begin with semicolon) in the file for explanation of each part. Some parts are optional. .emacs SubversionFrom the Subversion project home page: ``The goal of the Subversion project is to build a version control system that is a compelling replacement for CVS in the open source community.'' Subversion is fully documented in the Subversion Book, which is available in various electronic formats. The main part of the book needed for use in this course is ``Basic Work Cycle: Chapter 3. Guided Tour'' (a printed copy was handed out in the 9/7/2006 class), but you should also go through enough of the rest of the book to get an overview and to know where to look for answers to questions that come up later.STL Web resources
Boost LibrariesThe Boost Organization provides many useful C++ Libraries. Not all are generic libraries in the full sense of the term; the largest library that is generic is the Boost Graph Library, BGL.On CSLab machines the Boost libraries (this is not quite the latest version) are installed at /software/boost-1.32.0-0/pkgSo if you just put the option -I/software/boost-1.32.0-0/pkgon your compilation command line, the compiler will be able to find any of the Boost header files you are using in your source files. GThe programming language G, which Jeremy Siek introduces in A Language for Generic Programming, is available on CSLab Solaris machines only. To use it, log onto Solaris and cd to your local copy of the course codebase and do an svn update. This will create a directory called G-code, which contains a few small G programs and a Makefile. To compile and execute the program accumulate.g, for example, cd into G-code and do gmake accumulate.ok (you have to use gmake, the GNU version of make). (Other options, such as compiling but not running, will be discussed in class.) At this time, a couple of the files, copy.g and for_each.g may not compile for you, though they do compile when the compilation is done in the G home directory. Stay tuned, this should be fixed soon.LATEXFrom LATEX: A Document Preparation System: ``LATEX is a high-quality typesetting system, with features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents.'' If that's not enough motivation, see Word Processors: Stupid and Inefficient, by Allin Cottrell.LATEX is available on CSLab, RCS, and probably most other campus computers. To apply it to latex source file mydoc.tex, run latex mydocThis produces a DVI file, mydoc.dvi, which can be converted to a Postscript file, mydoc.ps, with dvips -o mydoc.ps mydocor to a PDF file, mydoc.pdf, with dvipdfm mydocPdflatex is a tool that produces a PDF file directly from a LATEX source file mydoc.tex: pdflatex mydocproduces mydoc.pdf. Using a LATEX package called hyperref, e.g., with \usepackage[plainpages=false,pdftex,colorlinks,backref]{hyperref}causes cross-references and citations to appear as hyperlinks in the resulting PDF file. To download a LATEX system (free) for use on a Windows box, visit MiKTeXThe MikTeX distribution includes utilities dvips, dvipdfm, and pdflatex. If you are not familiar with LATEX, a good place to get started is the brief Introduction to LATEX by A. J. Hildebrand. A not so short introduction is The Not So Short Introduction to LATEX2e (PDF). The original LATEX manual, by the system's creator, is Leslie Lamport, LATEX: A Document Preparation System User's Guide & Reference Manual, Addison-Wesley, 1986, ISBN 0-201-15790.Another possibility is First Steps in LATEX, by George Gratzer. Beginning LATEX users (and some veterans) sometimes make errors that cause no complaint from the LATEX processor but do result in poor formatting. The following short note discusses some common problems and how to avoid them: D. R. Musser, Elements of LATEX Style, November 24, 1998. |