changes as of 6/22/04

  1. removed comments on RubberBand from s04 lecture 2, as comments are not discussed until ch2.

  2. moved SunAndMoon from s04 lecture 2 into ch2, as it uses the color class which is not discussed until ch2.

  3. moved BetterBasketBall from s04 lecture 4 into ch4, as it uses conditionals which are not discussed until ch4.

  4. updated comments on BetterBasketBall to reflect its behavior

  5. moved CelestialCycle from s04 lecture 4 into ch4, because of conditionals.

  6. updated comments on CelestialCycle to reflect its behavior

  7. moved RandomColors from s04 lecture 4 into ch4, because it uses conditionals as well as the random number generator.

  8. updated comments on RandomColors to reflect its behavior

  9. updated comments on BestBasketBall from s04 lecture 5

  10. added comments to DoubleWhatADrag from s04 lecture 5

  11. moved BBall4One and BBall4Two from s04 lecture 6 to ch6, as they both use separate classes to define a BBall, which is not discussed until ch6

  12. corrected typo in comments for 'onMouseMove' method of Spiral from s04 lecture 6.

  13. moved SimpleBBall4One from s04 lecture 6 folder (it wasn't linked on the page) to ch6, as it uses a separate class

  14. updated comments on Spiral from s04 lecture 8 to reflect its behavior


  1. removed MAKEMEbegin() method of WagonWheel from s04 lecture 9 because it was never called. I then moved WagonWheel into the ch7 examples as it did not use any of the concepts taught in chapter 8.


  1. wrote RainCloudController class for RainCloud.

  2. wrote CreditScrollerController class for CreditScroller (both the plain and smooth-scrolling versions).

  3. corrected typo in run() of FallingBall for the PatheticPong program

  4. added comments to PatheticPong, StillPatheticPong, and Pong to reflect their individual behavior

  5. corrected typo in dropTheBall method of BouncingBBall.

  6. added comments to from the BouncingBBall program to clarify the purpose of some of its constants


  1. corrected typo in comments of DrawingProgram from s04 lecture 12

  2. changed comments for LaundrySorter programs from s04 lecture 12 to reflect their behavior.


  1. updated comments on lecture programs from s04 lectures 13,14, and 15.


  1. wrote control class for NestedRects programs from chapter 12

  2. wrote graphical control class for UrlList program from chapter 12

  3. updated comments on BullsEye, ChainReaction, and LivingFractal examples from lectures 16, 17, and 18


  1. replaced while loops with for loops in Snow example from s04 Lecture 19

  2. removed oldonMouseClick method from Knitting example from s04 Lecture 19 because it contained the same code as another method and was never called.


  1. rewrote RadarStats class to match code presented in textbook

  2. wrote RaceController gui for RaceStatistics class defined in ch.14


  1. wrote CalendarController gui for YearlyCalendar class defined in ch.15

  2. wrote MagicSquares program to implement method fillSquare() as defined in ch.15

  3. altered Smoothing program to match code as defined in the textbook

  4. altered ImageEdit example from s04 lecture 23 to use a picture of hopkins hall rather than one of a student, which seemed more appropriate


  1. wrote FrameMaker program to display the various types of frames defined in ch.17


  1. moved TicTacToe example from s04 lecture 24 into ch.15 lectures folder as it dealt with 2d arrays.

  2. Made the changes requested by Tom through chapter 5, including adjusting constants for the Voting and FourVoting classes of chapter 4


  1. adapted CalendarController example from ch.15 to use code samples provided in ch.18 as examples

  2. altered PigLatin program from s04 lecture 28 to extend Controller rather than JApplet

  3. moved PigLatin into ch.16 lecture examples as it was designed to demonstrate string methods


  1. placed BBall examples from ch.6 lectures into a group

  2. placed Pong examples from ch.9 lectures into a group

  3. placed BouncingBall examples from ch.14 lectures into a group

  4. placed SuperPong examples from ch.14 lectures into a group


  1. wrote BookmarkController class to run as application although it is introduced in the text as an applet

  2. altered example programs from s04 lectures 29,30, and 31 to run as applications rather than applets so that they would be able to read and write from the file system

  3. made changes recommended by Tom through chapter 8


  1. re-wrote SortSearchTimer demo from s04 lecture 33 to use the searching/sorting algorithms presented in the textbook, then used it as the textbook example for ch.20

  2. altered SortDemo program from s04 lecture 33 to use external classes rather than internal classes to define searching/sorting algorithms

  3. made changes recommended by tom through chapter 10


  1. made changes recommended by Andrea through chapter 12

Changes that might be made in the textbook

  1. ICanCount program on p.83 of ch.3 starts counting at 1, perhaps this should be 0, as it is with the version that counts to the console.

  2. DrawGrid program on p.127 of ch.5 does not compile. It needs 0's added to the lines that create the FilledRects

  3. ClickTimer program on p.141 of ch.5 does not compile. It needs a 'new' added before 'Location' when declaring TEXT_POS

  4. FaceDrag program on p.155 of ch.6 says it uses the FunnyFace class, it does not.

  5. typo in word "resulttt" on p.223 of chapter 8

  6. RainCloud class on p.238 of ch.9 does not compile. It should use canvas.getWidth() as the second parameter to the RandomIntGenerator constructor instead of theCanvas.getWidth()

  7. I'm seeing some strange behavior in the CreditScroller programs from chapter 9. They compile and run, but after a seemingly random stretch of time they stop running. The program does not seem to be stuck in a loop, as System.out.println() text stops being written. Top also reports cpu usage for the process to be 0.0% after it halts. The applets run normally under internet explorer, which I believe uses the microsoft java virtual machine.

    It may be the case that Text objects are the only ones that behave this way, as FilledOvals worked without an issue.

  8. FallingBall on p.349 of chapter 11 does not compile. It needs a ';' after the speed = initSpeed line. It also needs to have the canvas stored as local variable for use in the run() method.

  9. SliderBallController on p.361 of chapter 11 does not compile. It needs "new" in front of the JSlider constructor

  10. GUIApplet on p.368 of chapter 11 appears with the text 'backslash$.n' instead of '\n'

  11. Craps on p.447 of chapter 13 is missing the line message = new Text("", 10, 50, canvas); in the begin() method.

  12. The drawHistogram() method which appears on p.475 of ch.14 should declare totalspeeders as a double so that the results of (speedersAt[hour]/totalSpeeders) doesn't get rounded to integer accuracy. The same change needs to be made to the drawHistorgram() method which is defined on p.477 of ch.14.

  13. The smoothImage() method defined on p.481 of ch.15 has an extra ");" at the end of a line.

  14. the FramedText class defined on p.533 of ch.17 has a private method positionContents() which is later used by FramedCounter, so it needs to be declared protected, but this change is not mentioned in the text.

  15. the FramedText class defined on p.540 of ch.17 calls message.moveTo( displayX(), ...) inside of its positionContents() method. This should be changed to message.moveTo( displayLeft(), ...)

  16. the SteadyTester program defined on p.130 of ch.5 defines a mouseClick method rather than onMouseClick

  17. in several places in ch.18, starting at the section about exception subclasses, the textbook refers to a RunTimeException. This should be changed to RuntimeException.

  18. the JustAWindow class defined on p.607 of ch.19 needs "int" in its constant declarations

  19. the getTemp() method defined on p.626 of ch.19 has a "-" in its printline(...) statement which should be a "+" sign.

  20. typo on p.660 of ch.20, in explaination of insertion sort the text reads "care" instead of "card"

  21. the contructor method for the Cup class defined on p.694 of ch.21 uses the constant HEIGHT_RATIO in two places instead of HEIGHTRATIO

  22. the constructor method for the Cup class should use Location upperLeft as its first parameter instead of Location aLocation

  23. the onMouseDrag method for ShellGame defined on p.699 of ch.21 should use the variable selectedCup instead of selected

  24. the onMouseDrag method for ShellGame calls the method getyY() in two places instead of getY()

  25. the run() method of Shuffler class defined on p.710 of ch.21 needs "int" before its use of count in the for loop.