David J. Eck

(Ph.D. in Mathematics, Brandeis University, 1980)

Department of Mathematics and Computer Science
Hobart and William Smith Colleges
Geneva, New York 14456

Office:  Lansing 313
Phone:   (315)781-3398
Fax:     (315)781-3860
E-mail:  eck@hws.edu

Courses That I Teach

Coming up in Fall 2017, August 28 – December 15

CPSC 124: Introductory Programming.  (See the tentative syllabus and course web page.)
Textbook: Introduction to Programming Using Java (a free on-line book)

CPSC 424: Fundamentals of Computer Graphics  (See the tentative syllabus and course web page.)
Textbook: Introduction to Computer Graphics (a free on-line book)

Previous Courses:

Here is a list of courses I have taught, including course handouts from many past terms.

And here is a complete list of all the Honors projects and Independent Studies
that I have supervised over my years at Hobart and William Smith Colleges.

Free On-Line Java Text

The first programming course at Hobart and William Smith Colleges covers the Java programming language. Since we started teaching Java in 1996, the textbook for the course has been various versions of a free on-line Java textbook that I wrote for the course. The current version is Introduction to Programming Using Java, Version 7.0. It requires Java 7 or higher. Older versions of the book are also available; see the preface.html for links. The on-line verison of the book is available at the Web address:


The textbook is an introduction to programming and also an introduction to Java directed towards people who do not have any background in programming. You can use it on-line or download a copy for use on your own computer. PDF and print version are also available. Links can be found at the bottom of the main page.

Free Computer Graphics Textbook

New in January 2016: An introductory computer graphics textbook, available for use on-line. There are also links on the front page for downloading the web-site version or a PDF version. A preliminary version of this book was used in my Computer Graphics course in Fall 2015.

The prerequisite for the book is two semesters of computer programming in Java, C/C++, or JavaScript, including a basic knowledge of data structures, objects, and object-oriented programming. It covers core concepts from 2D graphics in Java, JavaScript, and SVG; 3D graphics with old-fashioned OpenGL 1.1; the three.js JavaScript library for 3D Web graphics; and WebGL, the modern version of OpenGL for the Web. There is an appendix with short introductions to the essential features of Java, C, and JavaScript. See the Preface for more information. The book is available at


Some Web Apps, written in JavaScript

For many years, I wrote small web applications as Java applets. However, applets are no longer supported in the Chrome web browser and are only poorly supported, if at all, in other browsers. A more modern alternative to Java Applets is to write web applications in JavaScript, which is well-supported in all modern browsers. (Note that Java and JavaScript are completely different languages, in spite of the names.) One of my projects for my sabbatical leave in Spring 2016 is to learn JavaScript better and to write some JavaScript Web apps. So far, I have ported some of my examples from Java to JavaScript, and added a few new apps that were written originally in JavaScript. The work that I have done so far is available on this page:

David Eck's JavaScript Page

Here are direct links to some of the more interesting examples:

The Mandelbrot set, in particular, is amazing. There is a large collection of images that are visualizations of pieces of that set. Click on any of the small images on that page to load that example into the Mandelbrot Viewer, where you can see a larger version of the image and explore it further.

Free CS Theory Textbook

CPSC 229: Foundations of Computer Science is an introductory course in theoretical computer science. It is a required course in the Computer Science major. For several years, the textbook in this course has been a set of notes written by Professors Carol Critchlow and me. This set of notes is now available for reading on-line or for downloading, at no charge. For more information and links to the PDF version of the book, see:


(A printed textbook can be ordered for the cost of reproduction from lulu.com.)


I am one of the programmers working on 3D-XplorMath-J, program for math visualization. It is a version written in the Java programming language of an older program, 3D-XplorMath, that only runs on Apple Mac OS computers. The program offers visualizations of plane curves, space curves, surfaces, fractals, and differential equations, with animations and "anaglyph" stereo viewing of 3D objects. The program is free and can be downloaded from its web site, or it can be sampled on-line as a collection of applets. (To use either the program or the applets, your computer must have Java version 5.0 or higher.)

The Most Complex Machine

My introductory computer science textbook, The Most Complex Machine, was published in July, 1995. The book surveys most of the major areas of computer science, and is suitable as a textbook for a first course in computer science. It is also suitable for self-study. A review of in the April '96 issue of CHOICE magazine says that it is "Strongly recommended as a foundation for guided self-study for gifted high-school students, as well as non-computing majors." You can read more about it here. A set of applets and labs for use with the text is freely available on-line.

This book is now quite old, and I really don't understand why the publisher has kept it in print. However, it is not so out-of-date as most computer books published in the 1990s. The applets, written in an old version of Java, are not as attractive as they could be, but some of them are still useful. In particular:

The source code for the applets can be downloaded from this page. You can also get .jar files for running the applets as stand-alone programs.

Unfortunately, Java applets have themselves become old-fashioned and unusable in most web browsers. I have written is a modern HTML 5 version of xSortLab that runs in a web browser. And a similar HTML 5 version of xTuringMachine.

"The Innocent Eye Test" by Mark Tansey (1981)