There is no required textbook for this course. If you are intending to continue programming in Java beyond this course (e.g., CS, IMGD, or RBE majors), I strongly recommend Effective Java by Joshua Bloch. The readings for some lectures reference sections of this book for additional perspective; you will not be expected to know material that appears solely in this book though.

You should not need a Java language manual for this class. If you find that you need a construct that we did not cover in class, ask about it on the discussion forum (in InstructAssist). If you want more language details than we cover in lecture, you could consult the Learning the Java Language portion of the Java tutorial pages. If you need documentation on a particular Java class, look in the official Java documentation.

If you are mainly looking for additional examples, check out the additional exercises that we will post when we cover new Java constructs. Other Java textbooks cover different material in a different order than we do, so they will be of limited use to you in helping with work for this course.


You may use whatever Java programming environment you like for this course, as long as you can configure JUnit for it. We provide configuration instructions for three: DrJava, Eclipse, and IntelliJ.

Eclipse and IntelliJ have a higher learning curve but are used in higher level CS courses and in industry. If you are not going on to upper-level CS courses or if you prefer a gentler introduction to Java, we recommend DrJava. You are welcome to switch between development environments are you see fit. Lectures will use DrJava for demonstrations.

Between IntelliJ and Eclipse, many students find that IntelliJ works more easily "out of the box" (as opposed to needing you to install extensions for some common support tools). Eclipse supports more additional features (none of which you will need for this course). Either would prepare you to use Java in an internship. Many of the SAs have experience with both, so feel free to ask them if you are debating between these two tools.

No matter what environment you choose, you will have to set up your environment to work with JUnit. We will use JUnit to develop tests for our programs. This will help you ensure your program is behaving properly and will give you valuable testing skills. Instructions for the supported environments are below:

Configuring InstructAssist Notifications

We will use InstructAssist for the discussion forum and homework submission. You can control which notifications InstructAssist emails to you. You can choose to get email whenever a new thread is created, whenever there is activity in a thread you posted in, and whenever a low-priority announcement is sent out. By default you will receive email for all of these situations. Log in and access "Profile Options" under the "Preferences" menu to adjust your settings.

Note that you cannot opt out of high-priority announcements. These will be rare, limited to messages that need to get to everyone within a few hours (such as a class cancellation, handling of the system going down, or some other "big" issue).

You are responsible for all clarifications and low-priority announcements made to the discussion forum, whether or not you receive them by email. We expect that you are checking for low-priority announcements at least once every 24 hours during the week. If you don't want the email, log into the forum regularly. Or keep the email coming and set up filters to put the mail in folders that you check from within your mail system. Failure to see a post more than 24 hours old during the week is not an acceptable excuse for not acting on an announcement.

A separate page talks about how to configure homework partners in InstructAssist.


We will be using clickers during lecture this term to assess how everyone is understanding certain concepts. Please sign out a clicker from ATC, either in their office on the first floor of Fuller Labs or from the Technology and Learning center to the right of the helpdesk in the library. We will start using the clickers on the third day of class (Friday, October 28).