Syllabus: Summer
2001 [Adobe
Acrobat]
Announcements:
Descriptions of assigned
labs may be found in Lewis & Loftus.
Please, submit the following:
- a printout of the
commented source code
a printout of
the output screen (screen capture is OK)
- a cover page with
your name, last two digits of your Student Number, e-mail address,
URL of your class-related Web page, and the lab number
- please, staple your
submission
Slides: (Microsoft
Powerpoint
format)
Slides: (Adobe
Acrobat
format)
Labs:
- LAB 1 (Assigned:
7-13-2001; Due: 7-23-2001)
- Lewis and Loftus,
page 217-218; "Programming Project" 4.3 and 4.5.
- LAB 2 (Assigned:
7-27-2001; Due: 8-15-2001)
- Lewis and Loftus,
page 374; "Programming Project" 7.4.
- LAB 3 (Assigned:
7-27-2001; Due: 8-15-2001)
- Lewis and Loftus,
page 438; "Programming Project" 9.8.
Class-related software:
(free download)
Java technology &
real World: (main
page)
- Keck Observatory (Mauna
Kea) (read)
- Hubble Space Telescope
(read)
- Mars Pathfinder Mission
(read)
Java-related resources:
Optional Projects
These are high level descriptions
of Research & Implementation Projects. Feel free to add additional
functionality not mentioned here - be as creative as you can be.
- JavaMail
Download JavaMail
and learn how to use it. Sun Microsystems provides many great
examples and you may also want to search deja.com
for Usenet postings related to JavaMail.
Compile the examples
that Sun provides, and try to send an email to your account.
If you do your coding at work, pay attention to firewall issues
as many companies use them. Also, consult your sys admin at
work to find out which SMTP server to use. If you do your work
at UMass Lowell, use 129.63.1.1 as your SMTP. Please note that
this server will accept requests from UMass Lowell (uml.edu)
domain only.
When your program
works, start thinking about the user interface (GUI).
Here is a partial
list of affordances for this program:
- This program
can be implemented as an application or an applet.
- All parameters
can be set and stored via GUI (SMTP, your default email address,
maximum number of characters that can be sent at the time
- short messages sent to cell phones are limited to 'x' characters,...).
Store the settings in a text file or in a database using JDBC.
Please note that UMass Lowell does not provide a database
for this course since JDBC is taught in the Advanced Java
class.
- The program has
to provide an address book and store it in a text file or
in a database using JDBC. You can also add/remove/modify the
content of the address book.
- Typed message
may not exceed 'x' characters mentioned above. Characters
typed past allowed length of the message ('x') are indicated
by color, typeface or size.
- Removes vowels.
Many words can be understood even after we remove the vowels.
For example: support and spprt or guesswork and gsswrk. We
can use this techique to shorten the length of a message.
- The program supports
multiple recipients - a message can be sent to multiple addresses
at the same time. Sent messages are stored for later retrieval.
Also, stored messages can be re-sent to any valid email address.
- This program
does not read email. It only sends messages.
- ... Add other
features and do not forget to include a user manual/tutorial
in HTML, as well as a high-level design (modules, their purpose
and functionality).
- Servlets
Create an auction
servlet. Create a database of several items that are being auctioned.
Make a Web page that allows the user to select an item on which
to place a bid. After the bid is placed, the the user is notified
if the bid is lower than the previous hig bid and is given an
opportunity to submit a bid again. Allow the user to return
to the servlet and query it to determine if they won an auction.
... Add other features and do not forget to include a
user manual/tutorial in HTML, as well as a high-level design
(modules, their purpose and functionality).
- 2D Drawing and
Geometrical Transformations
Create a "Primitive"
menu with the following entries:
- a line
- a square/rectangle
(can be filled)
- a circle/ellipse
(can be filled)
- a general polyline
(open)
- a general polygon
(closed; can be filled)
Each entry represents
a primitive that can be drawn by your program, and should be
represented in the menu graphically (not textually). Picking
an entry in the menu with the left button selects that primitive
as the "current" primitive type. (You should visually identify
the primitive that is "current".)
Create an "Attribute"
menu with the following entries:
- line styles:
normal, dashed, thick (can have various thicknesses)
- line color
- fill pattern
- fill color
Line style and color
determines the style and color the current primitive will be drawn
(including circles, rectagles, etc.). The same goes for fill pattern
and color.
Whenever the left
mouse button is pressed in the main window, add a copy of the
"current" primitive to the display at that point. Use "rubberbanding"
to allow adjustments to the size of the primitive.
Redisplay the window
correctly whenever necessary (Expose event).
Whenever the second
(middle) mouse button is pressed "near" a primitive drawn in
the main window, that primitive can be dragged to the position
of the mouse where the button is released. Near includes every
point of the primitive, and some area around it. You should
determine the width of the area around the primitive, but it
should be at least a few pixels all around it.
Display a delete
symbol of some kind (like the Win98 trash can). When a primitive
is "dragged" (with the middle button) to the delete symbol,
delete it from the display and your data structure.
Impress me.
For example, resizing individual objects, or being able to edit
objects otherwise is nice. Let me connect lines between symbols.
Handle window resizing, by resizing the objects (rather than
just restricting the range of coordinates). Impress me some
more. E.g., additional primitives, arcs, text symbols, arrowed
line styles, etc. Be creative! This application needs a dynamic
data structure. Use a linked list for storing your symbols and
their locations. Do not use arrays or Vectors.
Do not forget to
include a user manual/tutorial in HTML, as well as a high-level
design (modules, their purpose and functionality).
- Artificial Intelligence
- Kohonen Self-Organizing Map Algorithm
Learn about the
Kohonen's SOM and implement this very popular neural network.
More information on SOMs can be obtained from Helsinki
University of Technology or at UML library.
Do not forget to
include a user manual/tutorial in HTML, as well as a high-level
design (modules, their purpose and functionality).
- Stocks
Create a Java program
that will read a file describing an investor's stock portfolio.
For each stock the investor owns, the file contains the stock
ticker symbol and the number of shares of that stock the investor
owns. The program then accesses some stock quotation service
avilable over the Internet (read about Networking in Java) and
filters out only those stock transactions for the stocks in
the investor's portfolio. As the program fetches new stock prices,
it displays a spreadsheet on the screen and dynamically updates
the spreadsheet. The spreadsheet shows each stock symbol, the
latest price of that stock, and the number of shares and the
latest total value of shares of that stock. The spreadsheet
also totals the latest value of the investor's entire portfolio.
An investor could run your Java program in a small portion of
his or her screen while proceeding with other work.
Do not forget to
include a user manual/tutorial in HTML, as well as a high-level
design (modules, their purpose and functionality).
- Java Speech
Create a Java program
that will use a text-to-speech technology
to "read" a text file for you. The program checks the content
of a URL (stocks or exchange rates, for instance) and it returns
this information to you via the audible channel (speech). A
suitable GUI is required. See #5 for possible ideas.
Do not forget to
include a user manual/tutorial in HTML, as well as a high-level
design (modules, their purpose and functionality).
|