Opportunities for JAVA Programming Projects

Here is a list of Java project opportunities (I will be addiing to this list as new ideas come to mind):

  1. Graphical Animation of Actively Controlled Mass-Spring Systems.
  2. Java Graphical Interface for Stuctural Analysis Learning Tool (SALT).
  3. Decision Tree Applet using Java Swing.
  4. Specification and Engineering Analysis of Planar Polygons.
  5. Java-based Geometric Modeling Workbench
  6. Task Interaction Analysis for Engineering Project Development
  7. Shell Game to teach Conditional Probability in ENCE 302
  8. Statistics Tutor.
  9. Block Diagram Editor

In selecting a project, please keep in mind that students should work in teams of two. I am particularly interested in projects that make good use Java Swing and Java2D, and possibly explore Java3D and Java working with XML.


Project 1. Graphical Animation of Actively Controlled Mass-Spring Systems.

Required Background. Structural dynamics and control.

Problem Statement. In the field of active control of structures, there has been a bevy of analytical studies. There exists a need for an easily implemented tool for animating the time-history of simple, controlled systems. Java Swing is ideal for implementing a platform-independent GUI which would animate the real-time history of the system.

In particular, the program should be able to animate the time-history response of a damped 10-DOF mass-spring system. The program should accept the time-history of the analyized system along with the time-history of the excitation force. Then simultaneously open windows showing the real-time animation of the system and a real-time graph of the input force. To get an idea of what the final product should look like (your interface will be much simpler) reference the following URL: http://www.nd.edu/~quake/java/animation.html


Project 2. Java Graphical Interface for Stuctural Analysis Learning Tool (SALT).

Required Background. Structural and/or matrix analysis. Good knowledge of C, including data structures.

Problem Statement. In the mid-1980s, Chris Thewalt, then a graduate student in Civil Engineering at Berkeley, wrote an interactive Structural Analysis Learning Tool (SALT). SALT is about 4,000 lines of C code (some of it quite advanced). Using a grammar that is similar to MATLAB (although, I believe SALT predates MATLAB), SALT allows for the interactive specification of material and section properties, matrices, and matrix operations (e.g., solution of linear equations; eigenvalues/eigenvectors).

SALT has an X Windows interface that supports keyboard input, the display of active matrices and variables, and pull-down menus for online help, history mechanisms, and so forth.

In this project we will replace the X windows interface with a Java Interface. Rather than rewrite the C code that handles the matrix computations, I think we should keep Thewalt's code and explore the use of Java Native Interface (JNI) for the GUI/analysis engine interaction. The result would be a standalone Java/C package that someone could download over the web and run locally on their workstation/PC.

Point of Contact. For more information, see Mark Austin.


Project 3. Develop a Decision Tree Applet using Swing GUI.

Required Background. A probability and statistics course (ENCE302)

Problem Statement. Decision trees are used to examine the available information for the purpose of decision making. They include decision and chance nodes. The decision nodes are followed by possible actions that can be selected by a decision maker. The chance nodes are followed by outcomes that can happen without the complete control of the decision maker. The actions have costs associated with them, the outcomes have both probabilities and consequences. Each line followed from the beginning of the tree to the end of the tree is called a tree branch. Each branch represents a possible scenario of decisions and possible outcomes. The most suitable decisions can be selected such that the minimum total expected cost is obtained.


Project 4. Specification and Engineering Analysis of Planar Polygons.

Required Background. Civil or Mechanical Engineering.

Problem Statement. Planar polygons play a central role in many areas of engineering analysis. For example, problems in the analysis of reinforced concrete cross-sections can be viewed as determination of flexural/shear strength of a polygon shape.

In this project we will design and implement a Java applet that allows a user to specify interactively the shape and position of a polygon, and then compute and display its engineering properties.

The underlying polygon data structure (I can help you with this) should support the representation of simple and complex polygons. A simple polygon is one that has a single nonintersecting boundary. A complex polygon has one or more holes. During the polygon definition, nodes should be snapped to an underlying grid of coordinates. To be useful, the program should run a separate thread that acts as a diagnostic rule checker -- the rule checker should reject, for example, a new edge if it intersects with another edge. It should check the orientation of holes, and reorder the edges if necessary (otherwise the engineering analysis methods won't work).

Engineering properties of interest include: area, position of the centroid, moments of inertia (i.e., I_xx, I_yy, I_xy, I_yx), and orientation of the principle axes, detecting whether or not a point is inside the polygon, and distance to the nearest edge.

Point of Contact. For more information, see Mark Austin.


Project 5. Java-based Geometric Modeling Workbench

Required Background. Civil or Mechanical Engineering. Interest in Geometric Modeling.

Problem Statement. While geometric modeling techniques are now a central part of manufacturing engineering, they have not gained recognition in Civil Engineering.

In this project we will design and implement a Java-based Geometric Modeling Workbench. Solids will be represented by the half-edge data structure, as described in the text "An Introduction to Solid Modeling," by Mantyla (1988). We will develop and test a library of code for assembling solids using the basic euler operators (e.g., make-vertex-face-solid, make-edge-vertex, make-edge-face). A simple graphical interface will display the results.

p.s. This project is not as hard as it seems .. I already have the C code from Mantyla's book, and an X-windows version of what I have in mind (written by an M.S. student in 1993).

Point of Contact. For more information, see Mark Austin.


Project 6. Task Interaction Analysis for Engineering Project Development

Required Background. Systems Engineering or Project Management.

Problem Statement. We use the term "task interaction" to succinctly describe how information/data generated by one task may affect another tasks in processes for engineering design and project management. For many real-world engineering developments, the problem of understanding and representing task interactions is complicated by large numbers of systems and tasks, and by flows of information/data that are sometimes circular. When design interactions are not well understood, the product realization can easily become confused, and degenerate into a difficult, time-consuming iterative process, with costly corrections sometimes needed late in the design procedure. As a result, the design process may fail to reach closure because information was not available when it was needed, or perhaps, because budget considerations prohibited further design iterations.

An established way of representing task interactions is as a directed graph of tasks. Design structure matrices are a visual means of displaying relationships for flows of data/information among tasks.

In this project we will develop a Java class to represent task interactions as directed graphs (we can probably find this data structure in a Java data structures book), and to display the interactions in design structure matrix format. Simulated annealing techniques will be used to reorder the task sequence so that flows of information to tasks downstream are maximized.

Point of Contact. For more information, see Mark Austin.


Projects 7. Shell Game to teach Conditional Probability in ENCE 302:

Required Background. Random number generation, Basic Probability, Graphics Skills.

Problem Statement. The host shows you 3 doors. Behind one door is a Porsche, behind one a goat, and behind the other nothing. You choose a door. The host opens one of the other doors, revealing... nothing. You are asked if you wish to stay with your choice, or change to the other door. Then you get to open your door, and see the Porsche! ... or the Goat!

Is there a strategy to improve your chances of winning?

The Java code would simulate the host's role, allowing the player to choose, then to "change" or "stay." A table of outcomes would be tallied:

    Game  |   Change   Stay  |  Win   Lose
    ======================================
    1     |      x           |    x
    2     |               x  |    x    x
    etc.

After the player had played a number of times, they would be given a table of sums, and be prompted to estimate the conditional probability of winning if they "change," and if they "stay." If they give the wrong answer, they are invited to continue playing, or to think about it some more and come back.

Point of Contact. For more information, see Kaye Brubaker.


Projects 8. Statistics Tutor.

Required Background. Random number generation, basic probability and statistics, graphics

Problem Statement. An infinitely patient tutor for a specific set of skills: understanding the Normal Distribution. The applet would set up graphical problems such as: < insert normal distribution graph, with randomly selected mean and standard deviation >

Given this graph of a normal distribution,

  1. What is the mean?
  2. What is the standard deviation?
  3. What is the Probability (x >= something)
  4. What is the Probability that |x| < something,

There would have to be a standard normal (Z-table) look-up included in some fashion.

I can see numerous future applications for this infinitely-patient tutor, so this app would be just a start. Ideally, the "tutor" could start to identify the student's weak points, and target the questions to work those points. I call it "Batting Practice" or "Private Pro." Like having someone throw you pitch after pitch, or hitting one tennis ball after another -- just to sharpen your skills. I've already seen one or two things on the market along these lines, but not nearly as good as what I imagine (lacks the "Smart Tutor" AI); I have a demo disk of such a product if the student would care to study it.

Point of Contact. For more information, see Kaye Brubaker.


Project 9. Block Diagram Editor

Required Background. Systems Engineering.

Problem Statement. In this project we will design and implement an editor for creating and manipulating block diagrams. Each block will have multiple inputs and multiple outputs (MIMO).

Key tasks in this project include:

I do not expect that the blocks will have behavior (another project, another day).

Point of Contact. For more information, see Mark Austin.


Developed in March 2001 by Mark Austin
Copyright © 2001, Department of Civil Engineering, University of Maryland