Teaching - Java Programming (90.301)
 

 

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)

  • All slides (the same as the handout you received)


Labs:
  • LAB 1 (Assigned: 7-13-2001; Due: 7-23-2001)
    1. Lewis and Loftus, page 217-218; "Programming Project" 4.3 and 4.5.
  • LAB 2 (Assigned: 7-27-2001; Due: 8-15-2001)
    1. Lewis and Loftus, page 374; "Programming Project" 7.4.
  • LAB 3 (Assigned: 7-27-2001; Due: 8-15-2001)
    1. 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.
  1. 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).

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

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

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

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

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