This course has no required textbook. See the Notes instead. There are some recommended texts providing background and references for the course, listed below.
Perhaps the most important reference for you will be the Racket documentation, which is extensive and installed locally when you install Racket and available at:
How to Design Programs, Second Edition (On-line Draft) by Felleisen, Findler, Flatt, Krishnamurthi.
If you have never seen functional programming, particularly type-driven design in functional programming, you should read this book.
This text uses the Racket environment and Racket-like programming languages so it can also serve as a good introduction to the programming language we will be using throughout this course, even if you are familiar with the concepts the book covers.