References

Textbook

The "textbook" for this course is Interactive Programming in Java (IPIJ). It's still a work in progress, but it does follow the philosophy and structure of this course.

Chapters [show]

Chapters [hide]

  1. Introduction to Program Design
  2. The Software Development Process
  3. Things, Types, and Names
  4. Specifying Behavior: Interfaces
  5. Expressions: Doing Things with Things
  6. Statements and Rules
    Expressions and Statements
  7. Classes and Objects
  8. Designing with Objects
  9. Animate Objects
  10. When Things Go Wrong: Exceptions
  11. Reusing Implementation: Inheritance
  12. Dealing with Difference: Dispatch
  13. Encapsulation
  14. Intelligent Objects and Implicit Dispatch
  15. Event-Driven Programming
  16. Event Delegation and AWT
  17. Communication Patterns
  18. Synchronization
  19. Network Programming

Subversion

We recommend Subversion for your code version control when you're working in groups on your final project.

You can download the Subversion tools from the Subversion project page. You can geek out with the sources directly, or you can scroll down the page to find a pre-built version for your operating system.

Once you've got them installed, you'll need to download the Subversion profile for NetBeans. Open NetBeans, and select Tools->Update Center. Make sure to check the bottom box labeled "NetBeans Update Center Beta", then hit the Next button. Wait while it checks a bunch of web sites, then scroll to the bottom where you'll find VCS Profiles / SVN 1.1 Profile v 1.1.6. Click the goofy arrow button at the top right of the list, and then hit the Finish button.

Subversion comes with a very nice online manual, which describes the version control problem in general, as well as how to use Subversion to solve it.

In-class code

Java-specific references

Fun papers

Goto Considered Harmful by Edsger Dijkstra
This is the original paper declaring that the use of the goto statement leads to unreadable, spaghetti-like code. Someone mentioned in class that the break statement is much like goto. I disagree in that the code flow of a break is very straightforward -- it always jumps to the end of the most recent containing for, while, do, or switch statement. The continue statement jumps control flow backward, is messier, and therefore wasn't mentioned in class.

On Holy Wars and a Plea for Peace by Danny Cohen
An int is 32 bits, or 4 bytes long. How those four bytes are stored in memory caused quite a few arguments in the day, and is still not consistent from processor to processor. Danny Cohen's paper illustrates how each of the storage techniques can be considered to be self-consistent, and how some inconsitent storage techniques fell out of politcs and furtive behavior. This paper is the origin of the words big-endian and little-endian as applied to memory and storage.