CS4812 "Stealth" Java




I. Who, What?

Instructor
David Dagon.
dagon@cc.gatech.edu
Overview
Georgia Tech's course catalog lists CS4812A as "CS TA Training". While many teaching assistants will take the class, the course is generally concerned with the Java programming language. This bit of indirection is necessary to keep enrollment low, and maintain an optimal class size. The course presumes a working knowledge of Java. 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++.
In general, the course will cover the following general topics: IO Streams in Java, with special emphasis on object serialization. AWT extensions, including custom-built lightweight components and JFC/Swing components Java graphics, including double/triple buffering, sprite animation, clipping areas, etc. Basic java networking, primarily with TCP Sockets, and RMI. If time allows, custom UDP classes and utilities will be covered.



II. Grading


Students are required to complete three programming assignments, and give one presentation on a topic of their choice.  Grading follows 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 first program falls due.  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

The programs are as follows:

P1:

MP3 Patrol -- A Java console-based web robot that locates valid links to mp3 files, for enforcement purposes only. (Please do not use this program to download mp3 files.)

This assignment requires you to create a text-based menu-driven program that will read in an HTML document from an arbitrary URL or file, parse the HTML to remove tags, and identify hypertext links to other documents. When links to mp3 files are detected, a record of the URL is kept, and uploaded to a server via RMI. The URLs can also be serialzed to disk.

   Files include:

P1Info.java -- Instructional information in a convenient Java source file

MP3.java -- A wrapper class for holding URLs     Please do not modify this file.

P1Constants.java -- an required interface for p1.

rmi.txt -- a helpful 'lab' style description of the RMI design process.

P2:

   "Jinx Again"  -- Creating a graphical version of your text-based MP3 Patrol program.   This will involve the use of lightweights and jfc classes.

Additional information from:

P2Info.java


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.  

Hack alert: for this assignment do whatever it takes to get it working.  Commenting is extra credit.

If you wish to work on lab development for P3, you might consult some of the labs and programs given to CS1502 students. Attached you will find a collection of all labs and programs given out during Spring 1999.

    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.   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




IV. Presentations

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 -- instructions for the impatient
  • Hostile applets and denial of service attacks





V. Calendar


Classes Begin
Week
Monday
Tuesday
Wednesday
Thursday
Friday
Wk1 -- 30 31 1 2
Wk2 5 6 7 8 9
Wk3 12 13

Shad Hashmi Presentation (jars), TA Meeting



14 15 16
Wk4 19

<Deadline for reserving presentation topic and adjusting date>

20



21 22 23
Wk5 26

Irfan Ahmed Presentation, Class

Dino Presentation, Class



27

Spencer Chastain Presentation, TA Meeting



28 29 30
Wk6 3

Hyun Lim Presentation, Class

Shaharya Aarbi Presentation, Class

Jeremy Pitchford

4

Jesse Goodell Presentation, TA Meeting

Jamil Karim Presentation, TA Meeting



5 6 7
Wk7 10

Seth Markle Presentation, Class

John Nowell Presentation, Class

Alexander Salazar Presentation, Class

 

11

Brandon McKay Presentation, TA Meeting

Chris Morris Presentation, TA Meeting



12 13 14
Wk8
17

Chun Chau Presentation, Class

Danial Phommathep Presentation, Class

Byron Saltysiak Presentation, Class

18

James Roberts Presentation, TA Meeting

Brian Smith Presentation, TA Meeting



19 20 21
Wk9 24

  Brian Sanders Presentation, Class

Brad Wogsland Presentation, Class

John Yeager Presentation, Class

25

Mike Yunis Presentation, TA Meeting

<reserved>

26 27 28
Wk10 31 1 2 3 4
Wk11
Finals
7 8 9 10 11



VI. Resources

Books:
    http://www.mindview.net
 

Factoids:
Setting a CLASSPATH

Lecture Slides:

Lecture 0

Lecutre 0 (Compound):

Lecture 1 -- IO

Lecture 1 -- RMI

Lecture 2 -- Space and Stuff



Lecture 4 -- Lightweights




Last modified: Mon May 10 21:01:52 EDT 1999