CS 4812: "Stealth" Class in Advanced Java


Summer 1998

David Dagon
Instructor
dagon@cc.gatech.edu
 

I.  What

    CS4812A is a course in Advanced Java topics.

Prerequisites include any one of the following:

        CS1502, or

        CS4802, or

        a working knowledge of Java, or

        significant experience with C AND an O-O language, OR C++.

II.  Grading


Students will be graded on the following criteria:
 
 
 

Task
% of Total Grade
P1
30
P2
30
P3
30
Presentation
10

 

Students have the option of shifting up to 10% of one program to another program or programs.  That is, you may reduce the weight given to one program by up to 10%, provided other programs are given an appropriate increase in value.  In any event, allocation must total 100% for three programs and one presentation.

To exercise this option, you MUST notify me in writing (or e-mail) BEFORE the start of class on Monday, July 6, 1998.  If I do not hear from students about their preference, I will presume (conclusively and for all times) that they prefer the 30/30/30 split shown above.

Additionally, students will be grading programs this quarter.  If a student does not seriously undertake this task, or gives a grade that is off by more than 3/4 a letter grade (higher or lower), the grader will suffer the consequences--usually just a one to two point deduction against their final grade.  Successful completion of a grading assignment does add to your overall grade.  (Thus, grading can only hurt you.)

III.  Programs & Presentation



The programs are as follows:

P1:
    Practice with object serialization.  Students will create a text-based menu-driven program that allows users to enter an array of 3D coordinates, and rotates the points using arbitrary input.  Users cannot also designate array points as 'connected' to create lines.  The program saves the coordinates as a serialized object.  To decrease emphasis on the 3D math, and to ensure the ability to share serialized object, students will be provided with a data class.  The learning goal of P1 is Java io and object serialization, not 3D data representation.

    Files provided:

        p1info.java -- details, details
        Dots.java -- a data class

P2:
    An applet with a thread rotating a 3D wire frame object.  This applet builds on the data class created in P1.  Students are to create a series of user-interface controls using lightweight components.  Wire frame objects can be read from a URL.  To focus efforts on component/GUI development, a basic threaded applet will be provided.

    File provided:

     PointRotation.java -- a simple applet (with a very poor OO design) that merely illustrates how to handle wire-frame rotation with a thread.  Use the math routines as a 'black box', or write your own 3D engine.

     p2info.java -- instructions for this assignment.

P3:
    "Using Java to Teach Java"  -- an applet or application that teaches Java and programming concepts to CS1502 students.  Potential topics include: animated sorting algorithms, graph searching, utilities that CS1502 students will find useful (e.g., debugging), applets that illustrate the functioning of applets, layout managers, event listeners, etc. etc.  Hack alter: for this assignment do whatever it takes to get it working.  Commenting is extra credit.

    To assist development, a triple-buffered, clipping area, lightweight component/lightweight container graphics engine will be handed out.  The engine will let you animate objects easily, without flicker, allowing you to concentrate on UI details, etc. etc.  Use of this engine is of course optional.

    The engine is provided in the form of a simple shuffle-board game (you may reverse engineer the game to find what is useful in the engine.

        Simple.java  -- a simple applet

        Dragster.java -- an event handler for lightweight components

       LightComponent.java -- a class for lightweight components

       LightContainer.java -- a class for lightweight containers

      MyPanel.java -- demonstrates creation of light containers, components

      OffBuffer.java -- part of the light containers work area

      test.gif -- a picture of Sox, the Whitehouse cat (currently under grand jury subpoena),
                    used by the MyPanel class

      All of the above--p3help.zip

Presentation
  Students are also required to give a brief presentation (approx. 15 minutes or more) on a topic of interest in Java.  The student should become an 'expert' on the subject, and provide a concise yet complete review of the topic.  A superior presentation would present some modest working code (nothing too fancy).  Topics must meet with the approval of the instructor.  Please examine the calendar for important dates in topic selection and presentation:

    Suggestions include:

          Delegates -- What are they, and what are they good for?
          Clipboard data transfer -- how to
          Applet security restrictions, and work-arounds
          The Java color model
          Some aspects of Swing (select a few classes)
          Lightweight containers -- how to use, and when to use
          RMI
          Hostile applets and denial of service attacks
          A topic related to your project for p3!!
 
 

IV.  Calendar



 
 
 
Week
Monday
Tuesday
Wednesday
Thursday
Friday
Wk1 22 23 
Classes Begin
24 25 26
Wk2 29 
<P1 Assigned>
30 1 2
OFFICIAL SCHOOL HOLIDAY
Wk3 6
<Notification deadline for grade allocation>
7 8 9 10
Wk4 13 
<P1 Due> 
<P2 Assigned>
<Deadline for reserving presentation topic and date>
14 15 16 17
Wk5 20  21 22 23 24 
Last day to DROP a course or to WITHDRAW form school with "W" grades in all courses
Wk6 27
<John Ayer: Some Aspects of Swing>
28 29 30 31
Wk7
<P2 Due>
<P3 Assigned>
 
 
 
 
 
 
4 5 6 7
Wk8 10

Heather Macleod: 
(The Sound of Java) 

<Ivan Brusic: LayoutManagers (Tentative)>

J.Tang: JIRE (Java
Interactive Runtime Environment).
 

Andrew LeRoux: Java Beans or RMI
 
 
 

11 12 13 14
Wk9 17 

Tod Cyr: Java Beans (More!) 
Itoro: <Some Aspects of Swing>

<Last Day for Presentations>
 
 

18 19 20 21
Wk10 24 
<Class Tentatively Cancelled>
25 26 27 28
Wk11 
Finals
31 
<P3 Due>
1 2 3 4
V.  Resources

Books:
    http://www.EckelObjects.com
 

Lecture Slides (sorry, Office 97 .PPT format only):
    Lecture 1 ("The Null Lecture")
    Lecture 2 ("Fun with IO")
    Lecture 3 ("Java for Jocks")
    Lecture 4 ("Lethal Lecture IV")  (demonstration files: demo.zip)
    Lecture 5 ("Version 5.0")  (demonstration files: demo2.zip)
    Lecture 6 ("The xemacs Lecture")