Books

You are not required to purchase books for this class.

All required readings will be provided online. Some of the readings are provided under academic fair use, and are only for students in the class. For this reason, they will be provided via the course Canvas page.

In the past, we used textbooks more extensively in class. Over time, students seemed to become less interested in them. This year, we will try to reduce our reliance on them. This is a bit of an experiment.

To the extent that we use textbooks, we will only use small portions of them, and we will only use books that we can provide free online access for. Some of these are commercially published books, but they are available online through the UW library. We will make selected chapters (the ones required for class) available through Canvas (Canvas Files). We will also be using chapters from a (as of today) unpublished book whose author is allowing us to share chapters with you.

You may prefer to have a physical copy of the graphics textbooks. This is a good way to support the authors. We will only use small portions of the book (less than half of the main text, just a few chapters of the advanced text), so it may be hard to justify the cost for most people. See “Graphics Texts” below.

You may wish to have a book to help with JavaScript programming. The ones we recommend are available online for free, or you can purchase hardcopies.

The workbooks (which are important readings in their own right) will point you towards readings in the required books, and give links to the specific chapters.

I am providing links to Amazon because it is convenient, and their book pages have useful information. I do not endorse Amazon (I prefer to support local stores), but I appreciate its convenience. Amazon links may have an affiliate reference for the UW Graphics Group so that we might receive a small payment if you buy something using a link.

Graphics Texts

Unfortunately, there is no single textbook that fits the goals of the class.

For the “fundamentals” of graphics (the theory), we will use chapters from Fundamentals of Computer Graphics by Peter Shirley and Steve Marschner (with chapters contributed by others, including me). Note that we will be using the newer 4th edition (with a cover that fades from purple to orange) - it probably is not substantially different from the 3rd edition. There is an even newer 5th edition, but we do not have access to it through the UW Library. If you buy the book, you should probably buy the new version.

The core of the book - the parts written by Shirley and Marschner - are great. They are a fantastic introduction to the key theory topics. We will use those. The rest of the book is a scattering of topics and lacks the cohesiveness of the main part of the book. Most of the chapters are about topics that we won’t cover in class, and many of the topics we will cover are missing from the book.

The UW library has an electronic copy of Fundamentals of Computer Graphics, 4e Fundamentals of Computer Graphics 4e (official access at ProQuest). We will also provide the chapters for required readings as PDFs via the course Canvas Fundamentals of Computer Graphics (Canvas Folder). If you want to buy a physical copy, it is available from Fundamentals of Computer Graphics 5e (purchase via Amazon). But, it’s hard to justify recommending it: we won’t use that much of it for class, and it’s not a great reference book for after class is over (it’s good to learn from).

For more depth in some parts, we will use portions of Real-Time Rendering by Thomas Moller, Eric Haines, Naty Hoffman, and some others. We’ll use the recent 4th edition. This book is an amazingly extensive reference book that surveys many approaches and details for a huge variety of topics. It’s an invaluable reference - if you’re going to be a real-time graphics programmer, you probably want to have this book. But for class, it’s overkill - it’s way too much depth, so we’ll just use it for a few topics.

The UW Library has an electronic copy of Real-Time Rendering, 4e (Real-Time Rendering 4e (official access at ProQuest)). We will also provide the chapters for required readings as PDFs via the course Canvas (Real-Time Rendering (Canvas Folder)). If you plan on doing interactive graphics beyond the class, you might want to buy this book for your bookshelf .

Prof. John Hart at the University of Illinois has started to write a graphics textbook The Big Fun Book of Computer Graphics. He hasn’t finished it. He is letting us use the book for the class. Many of the chapters will be required reading. The Big Fun Book of Computer Graphics, Hart's Draft (Canvas Folder) has individual chapters and the whole book as a PDF.

Javascript and Web Programming Books

The best source of information about web programming is, not surprisingly, the web. But for learning Javascript, you might want a more in-depth resource.

One problem with JavaScript books is that the language keeps changing. The old stuff still works, but there are newer and better ways to do things.

On the Books Page there is advice on how to learn JavaScript. But, if you want a book, I have two recommendations (and some semi-recommendations). Part of the reason I recommend them is that they are freely available online (as well as physically). There are probably lots of other books - these are just two that I am aware of (and are freely available).

  • Eloquent Javascipt, by Marijin Haverbeke. A book available online (EloquentJS-Web). You can buy a physical copy from Amazon (EloquentJS-Amazon). I like this book because it introduces JavaScript as a modern, functional programming language, and fits my philosophy on how to teach JavaScript. It’s also up to date with ES6.

  • JavaScript for Impatient Programmers, by Axel Rauschmayer. A book (mostly) available for free online (JS for impatient). What you need is available as (html) or (pdf). I like this because (1) his previous books were good (arguably better), (2) it is up to date with the recent language developments, (3) its discussion of the advanced topics connect them to the different ways we did things in the past.

    I still like his older book Speaking JavaScript. But, this book is about the older version of JavaScript (ES5), and spends time talking about dealing with ES5 shortcomings. I like it because it starts with a concise “crash course”, and then goes on to more detail. The crash course might be the best way to get started (but we don’t need to use IIFE anymore since we have “let” in ES6).

Math Books

We’ll review the “basic linear algebra” (really vector math) in class. We don’t expect you to have taken a linear algebra class. The basic concepts of linear algebra we need (vectors, matrices, dot products, cross products) are actually taught in classes before linear algebra. And we’ll review it in class.

But, if you really want a math book to help you review this stuff, I recommend Practical Linear Algebra by Farin and Hansford. It’s available online from the UW library (Practical Linear Algebra-UW) or you can buy a copy (Practical Linear Algebra-Amazon). We’ll provide some readings as part of the course materials (Key Chapters on Canvas).