Resources
Section Resources
- [Week of 8/27] - Java Review PDF.
Textbooks
The main textbook for the class is:
- Data Structures and Abstractions with Java, 3rd edition, Frank M. Carrano, Prentice Hall, 2011. ISBN 0-13-610091-0.
See also the Prentice Hall website for additional material.
In addition, the following may be useful for further reading:
- Data Structures and Problem Solving Using Java, 3rd edition, Mark Allen Weiss, Addison Wesley, 2006. ISBN 0-321-32213-4. See also Weiss's website for additional material. A required text from previous years.
- Program development in Java: Abstraction, Specification, and Object-Oriented Design, B. Liskov and J. Guttag, Addison-Wesley, 2000. ISBN 0-201-65768-6. An excellent source of material on designing and specifying abstractions.
- Java Precisely, 2nd edition, P. Sestoft, MIT Press, 2005. To access the entire book for free, login via the Cornell Library.
- Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides, Addison Wesley, 1994. ISBN 0-201-63361-2. An extremely influential book on software engineering. According to Wikipedia, as of April 2007, the book was in its 36th printing and has sold over 500,000 copies in English and 13 other languages.
- Java in a Nutshell, 5th edition, David Flanagan, O'Reilly, 2005. ISBN 0-596-00773-6.
These titles are on reserve in the Engineering library, Carpenter Hall.
Videonote
Prof Birman's CS2110 lectures from Fall 2010 are available at Videonote. Note, however, that content and emphasis are somewhat different from the current version of the class. Nevertheless, this can give you a good 'second opinion' on topics.Code Style Guidelines
Downloading and Setting up Eclipse+Java
In CS 2110, you'll be using an integrated development environment (IDE) called Eclipse to develop and debug your applications. You will also be using the Java 6 Standard Edition (Java SE 6) platform.
Please download Eclipse Classic here .
Please download the Java 6 JDK from here if you're on Linux or Windows. For Macs, please use software update to get the latest version of Java.
If you are using a version of Java prior to 6, such as J2SE 1.4, you must upgrade. We will be using many new features that were introduced in Java 6, such as generics, autoboxing, and typesafe enums.
To find out which version of the Java Runtime Environment (JRE) you are
running, open a command window (in Windows, Start > Run... and type cmd
,
and in Mac OS X, Applications > Utilities > Terminal)
and type java -version
at the command prompt:
C:\>java -version java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)
This says I have version 6 installed (6 and 1.6 are synonymous).
If you are on a PC running Windows and have never installed a version
of the Java Development Kit (JDK) on your machine, you probably don't have it.
If you are on a Mac, you probably do. To find out, type javac -version
:
C:\>javac -version javac 1.6.0_07
If you get an error message or the version is earlier than 1.6, you must (re)install the JDK.
Compiling and Running from the Command Line
Compiling
Say your main class is MyProgram
and it is
contained in the source file MyProgram.java
.
If it is not in a package, navigate
to the folder containing MyProgram.java
and type javac MyProgram.java
.
If it is in a package (say myPackage
), the
source should be in a folder called myPackage
. Navigate
to the folder containing myPackage
and type javac myPackage/MyProgram.java
.
Running
From the same folder you compiled from, type
java MyProgram <program arguments>
if it is not
in a package, and java myPackage.MyProgram <program arguments>
if it is.
Specifying a Classpath
Sometimes you may need to inform Java where to find auxiliary
classes. You can do this with the -cp
option
to the java
command.
Supply a sequence of folders telling Java where to look
for classes, separated by :
(Mac) or
;
(Windows).
Support Services
Academic Excellence Workshops
The Academic Excellence Workshops (AEW) offer an opportunity for students to gain additional experience with course concepts in a cooperative learning environment. Research has shown that cooperative and collaborative methods promote higher grades, greater persistence, and deeper comprehension. The material presented in the workshop is at or above the level of the regular course. We do not require joining the AEW program, but do encourage students to join if they are seeking an exciting and fun way to learn. The AEW carries one S/U credit based on participation and attendance. The time commitment is two hours per week in the lab. No homework will be given. This is a wonderful opportunity for students to seek extra help on course topics in a small group setting.
Your fellow undergraduate students, who are familiar with the course material, teach the sessions with material that they prepare. The course staff provides guidance and support but do not actually teach the AEW course content or any session. A representative from the AEW program will be speaking about the program and registration procedures in lecture.
One of your TAs will be designated as the AEW liaison for CS 2110. Watch the announcements to find out who.
See the AEW webpage for further information.
Brushing Up
For students with limited Java experience, we recommend the online notes from CS 1130, Transition to Object-oriented Programming as a refresher. This is a self-paced course consisting of several modules that you can go through at your leisure.
More Ways To Catch Up
- See Sun's official Java Tutorial.
- Refer to the CS 1110 and CS 1130 websites, which contain numerous examples.
- For students with C++ experience, see http://www.perryland.com/Java2.shtml to compare C++ with Java.