Skip to content
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
unix-xwindows Modified my first Makefile! Oct 6, 2010
README Initial commit, includes the book's libraries. Oct 6, 2010



Welcome!  You have reached the top-level directory in the FTP archive
designed for use with the text "The Art and Science of C: A Library-
Based Approach" (Addison-Wesley, 1995) and Programming Abstractions
\in C: A Second Course in Computer Science, both by Eric Roberts.
From here, you can get access to the source code for the libraries used
in the books along with several other resources both for those teaching
from the texts and for those learning from them.


To make it possible to teach ANSI C at the introductory level, "The Art
and Science of C" is designed around several special libraries --
 collectively known as the cslib library -- that hide much of the
complexity associated with C until students are better equipped to
understand how everything works.  To use the text, you must have access
to the cslib library on your own machine.  Although the code for the
cslib library is included in Appendix B of the text, it is much easier
to obtain an electronic copy from the FTP site.

With the exception of the graphics library presented in Chapter 7, the
cslib library is completely standard and requires nothing more than what
is provided as part of ANSI C.  Thus, if you do not intend to use the
graphics library, it doesn't matter what version of cslib you get --
 they are all the same.  However, because the mechanics of displaying
screen images depend on the hardware and software configuration of each
computer, you need an implementation of the graphics library that is
appropriate to your computing environment.


1.  Check to see if your computing platform is any of the following:

     o  A Macintosh running THINK C or Symantec C++
     o  An IBM PC (or clone) running the Borland C/C++ or Turbo C++
     o  Any Unix system running the X Windows operating system

    For each of these platforms, there is a corresponding implementation
    of the libraries specific to that computing environment.  To obtain
    it, you should connect to the appropriate subdirectory and follow
    the instructions in that README file.

2.  If you are using one of the hardware systems from the preceding list
    with a different compiler or operating system, consider purchasing
    the software necessary to make your platform correspond to one of
    the standard implementations.  For example, if you own an IBM PC but
    use some compiler other than the Borland or Turbo compiler, it might
    be worth installing one of those systems so that you can use all the
    features provided by the libraries, including interactive graphics.
    Although implementations for other platforms may be released in the
    future, adapting the graphics library is not a high-priority task
    now that there is at least one implementation for each of the major
    hardware platforms used in most universities.

3.  If you cannot obtain the desired software or are using some other
    type of machine, get a copy of the standard version of the library
    code from the standard subdirectory.

    This implementation defines the libraries in an ANSI-standard form
    but does not provide any on-screen graphics.  The standard
    implementation of the graphics library instead writes a file
    containing a text representation of the image suitable for printing
    on any PostScript printer.

4.  Although the standard library implementation is highly portable and
    works without change on every machine I've tried, there may be some
    systems that cannot support it.  If you find that your system does
    not support the standard libraries for some reason, you should try
    the simplified version of the library, which provides the minimum
    level of support necessary to run the programs in the text.


The Roberts.CS1.C directory itself contains no files other than a README
file.  The files you need for the various libraries are collected in the
following subdirectories, each of which has its own README file for
further information:

simplified     This subdirectory contains the simplest possible version
               of the library code and matches the code printed in
               Appendix B of the text (except for two minor changes
               introduced to increase portability).  This implementation
               is machine-independent and requires no system support
               beyond the standard ANSI libraries.  The implementation
               of the graphics library provides no actual screen display
               but instead writes a PostScript file containing the
               image.  The simplified version of the cslib library
               should be used only if you are unable to get the standard
               version or one of the platform-specific implementations
               to work in your environment.

standard       This subdirectory offers a more advanced version of the
               libraries than that used in the simplified package.  One
               advantage of the standard version is that it is
               compatible with the programs in the forthcoming companion
               volume to "The Art and Science of C", which will cover
               more advanced material focusing on data structures and
               algorithms.  Most importantly, the standard version of
               the library includes a portable exception-handling
               package that makes it possible to use better error-
               recovery strategies.  Using the standard version of the
               cslib library, as opposed to the simplified set, makes
               for a smoother transition to more advanced work.

               Like the simplified package, the standard package
               implements the graphics library in a machine-independent
               way by writing a PostScript file.  If you are working on
               a system for which there is a platform-specific
               implementation of the graphics library (these systems are
               enumerated later in this list), you should use that
               version instead.  The standard version exists so that the
               fundamental libraries can be used on the widest possible
               set of platforms.

unix-xwindows  Along with the facilities provided by the standard
               library package, this subdirectory contains an
               implementation of the graphics library designed for use
               with the X Windows system, which is available on many
               computers that run the Unix operating system.  The
               implementation is designed to work with several different
               versions of the Unix operating system and automatically
               configures itself to use the appropriate code for each.

mac-think-c    This subdirectory contains an implementation of the
               graphics library for THINK C (or Symantec C/C++) on the
               Apple Macintosh.  It also includes an interface that
               allows students to make a typescript of their computer
               session, which is a difficult operation with older
               versions of THINK C.  To work correctly, the Macintosh
               must be running System 7 of the operating system and the
               THINK C compiler must be version 5.0 or later.

pc-borland     This subdirectory contains two separate implementations
               of the graphics library for the Borland C/C++ compilers
               used on the IBM PC and its clones.  The dos subdirectory
               provides a simple implementation of the basic graphics
               library on top of DOS.  The windows subdirectory has a
               complete implementation of the graphics library that is
               compatible with Microsoft Windows.  Except for the
               graphics library, the package is identical to the
               standard package.  The pc-borland version of the
               libraries has been tested with Version 4 of the Borland
               C/C++ compiler.  The same code may work with other
               versions of the compiler and associated software, but it
               impossible to test it with every version of the compiler.

pc-turbo       This subdirectory contains an implementations of the
               graphics library for the Turbo C++ compiler.  The code is
               the same as that used in the windows version of the pc-
               borland package, but has different installation

documents      This subdirectory contains documentation on the libraries
               and the overall approach used in "The Art and Science of
               C".  See the README file in the documents directory for
               more information.

programs       This subdirectory contains electronic copies of all
               sample programs used in the text.  If you are teaching a
               course using this text and want solutions to the
               exercises, please contact your Addison-Wesley


The cslib libraries are in the public domain and may be freely copied
and distributed, although they remain under development.  No warranties
are made concerning their correctness or stability, and no user support
is guaranteed.  Bug reports and suggestions, however, are appreciated
and may be sent to

                      Eric Roberts <>

Something went wrong with that request. Please try again.