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.
We will be using portions of some textbooks, but these are available online through the UW library. We will make selected chapters (the ones required for class) available through Canvas (Files on Canvas). 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.
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.
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 (FundCG-UW). We will also provide the chapters for required readings as PDFs via the course Canvas (FCG Files on Canvas). If you want to buy a physical copy, it is available from (FundCG-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 graphics programmer, you probably want to have this book. But for class, it’s overkill - we will only use a small number of readings.
The UW Library has an electronic copy of Real-Time Rendering, 4e (RTR-UW). We will also provide the chapters for required readings as PDFs via the course Canvas (RTR on Canvas). If you plan on doing interactive graphics beyond the class, you might want to buy this book for your bookshelf (RTR-Amazon).
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 Canvas Directory 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 Javascript in CS559 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. This is available (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 (see Javascript and 559).
Speaking Javascript, by Axel Rauschmayer. Again, available online (SpeakingJS-Web), or a physical book (SpeakingJS-Amazon). 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. I found it because of the authors later books that talk about newer versions of Javascript.
If you’ve got the basics of Javascript, you might want to learn more about some of the newer features of the language (that will help you avoid some of the problems of the original language). There are web resources, but I recommend the online book:
Exploring Javascript ES6, by Axel Rauschmayer (online). This focuses on the new changes for ES6 (2015). He has newer books about Javascript 2017 and 2018. I think the ES6 changes are the ones that are relevant for the class (modules and block scope).
I used to recommend Javascript the Good Parts by Douglas Crawford. This is a great book - but its focus is on how to work around the problems in the old versions of the Javascript language, so the book is a little obsolete. If you want to look at it, you can find it online from the library (JavaScript: The Good Parts - UW Library), or get a cheap copy from Amazon (JavaScript: The Good Parts - Amazon).
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).