David Dagon
Instructor
dagon@cc.gatech.edu
I. What
Georgia Tech's course catalog lists CS4812A as "CS TA Training". While many teaching assistants will take the class, the course offers a general consideration of 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.
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
P1:
"Jinx--A Java console-based HTML browser." 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 format the remaining text for a variable number of columns.
Object serialization is also supported.
Files include:
P1Info.java -- Instructional information in a convenient Java source file
P1Info_Supp.java -- Additional instructions and suggestions
gtPage.java
-- A wrapper class for holding HTML and parsed/formatted text.
Please do not modify this file.
***NEW AND IMPROVED:
Now with public class visibility!
P2:
"Jinx Again" -- Creating a graphical version of your
text-based browser. Students will create various lightweight components
to render and display
HTML. Files provided:
p2info.java -- a descriptions of the project.
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 -- instructions
for the impatient
Hostile applets
and denial of service attacks
A topic related
to your project for p3!!
IV. Calendar
|
|
|
|
|
|
|
| Wk1 | 21 | 22 | 23
Classes Begin |
24 | 25 |
| Wk2 | 28
<P1 Assigned> |
29 | 30 | 1 | 2 |
| Wk3 | 5
<Notification deadline for grade allocation> |
6 | 7 | 8 | 9 |
| Wk4 | 12
<P1 Due> <P2 Assigned> <Deadline for reserving presentation topic and date> |
13 | 14 | 15 | 16 |
| Wk5 | 19 | 20 | 21 | 22 | 23 |
| Wk6 | 26 | 27 | 28 | 29 | 30
Last day to DROP a course or to WITHDRAW form school with "W" grades in all courses |
| Wk7 | 2
|
3 | 4 | 5 | 6 |
| Wk8 | 9
<P2 Due>
|
10 | 11 | 12 | 13 |
| Wk9 | 16
|
17 | 18 | 19 | 20 |
| Wk10 | 23
<Final Presentations> |
24 | 25 | 26
OFFICIAL SCHOOL HOLIDAY |
27
OFFICIAL SCHOOL HOLIDAY |
| Wk11
Finals |
31
<P3 Due> |
1 | 2 | 3 | 4 |
Books:
http://www.EckelObjects.com
Lecture Slides
Lecture 0 ("The Null Lecture")
Lecture 1 ("Fun with IO")
Lecture 2 ("Containers;
AWT Heavyweights")
Lecture 3 ("Events")
Lecture 4 ("Lightweights")
---HTML
Lecture 5 ("Animation/Double Buffering")
---HTML
---Demonstrations (.zip)
Lecture 6 ("Threads")
Lecture 7 ("JNI")