Distributed Scientific Simulations using Java Technologies
Spring Semester, 2003
Instructor: Daniel D. Warner, 656-5244
Office: Martin Hall O-203
Hours: 14:30 - 15:30 MWF
Classroom: Martin Hall M-305
Class Times: 13:25 - 14:15 MWF
Last updated on January 10, 2003.
Because of its object orientation, its platform independence, and its tight specifications on arithmetic operations; Java is an appealing language for the development of Scientific Simulations. More importantly, Java has extensive support for distributed computing. It includes low level facilities, such as threads, sockets, and remote method invocation, as well as very advanced features such as JINI and JavaSpaces.
This course will focus on the development of one or more distributed simulations which will support the following features. On the client side, the services will support multiple clients simultaneously viewing the same simulation, and the clients will also have the support of an active chat server. On the server side, the simulations will be run in parallel using coarse grained parallelism through JavaSpaces.
The only prerequisite is permission of the instructor. Permission will be based on a demonstration of maturity in computational mathematics at the upper division level. This would include at least two semesters of programming and at least one course in applied mathematics beyond differential equations.
Each student will be given an account on the Arabica cluster in the Department of Mathematical Sciences.
- Java Programming Overview:
- Modeling with Objects
- Inheritance and Polymorphism
- GUI issues (AWT and Swing)
- Threads, Events, and Exceptions
- Distributed Programming Overview:
- Remote Method Invocation (RMI)
- JINI lookup services
- The "Model - Viewer - Controller" paradigm for simulations
- Designing and building the Service Manager Class
- Parallel Computing Overview:
- Distributed Data Structures
- Parallel computing strategies
- Latency, communications costs, and other performance issues.
- Scientific Computing Topics:
- Computation of the Mandelbrot set
- Galaxy simulation
- Molecular dynamics
- Large Sparse Linear Systems of Equations
- Other topics of interest to the students
Textbooks:JavaSpaces™ Principles, Patterns, and Practice
by Eric Freeman, Susanne Hupfer, and Ken Arnold
Addison-Wesley Longman, 1999, ISBN: 0201309556
This text is required for the course. Some students may also want a good introductory or intermediate level text on programming with Java. There are a great many Java books on the market, but their value depends a lot on what you already know. O'Reilly & Associates has a long list of books addressing almost every topic where Java is being heavily used.
For an introductory text, you may find one of the following three books particularly useful.
- Thinking in Java
by Bruce Eckel
Prentice Hall, 3nd Edition, 2002
1136 pages Paper Bound w/CD-ROM, $49.99, ISBN: 0-13-027363-5
Bruce Eckel's book is a very popular introductory book for learning Java. It's available online from his web site, and is mirrored here for the duration of this course. It is also available in printed form from the CU Bookstore as well as online bookstores. If you feel that you need more basic information on Java, check out the link above.
- Java for Engineers and Scientists
by Stephen J. Chapman
Prentice Hall, 2000
571 pages, $75.00, ISBN: 0-13-919523-8From the very beginning, this concise introduction to Java develops and executes practical examples useful for solving problems in an engineering environment. Focused on the proper way to write reliable Java programs, it outlines excellent software development practices; uses a top-down design technique to break the program up into logical portions; and demonstrates object re-usability by building later examples on the classes and methods created in earlier examples. The text makes learning an interactive experience by providing all sources for all examples through a Website.
- Learning Java, 2nd Edition
by Patrick Niemeyer and Jonathan Knudsen
O'Reilly & Associates, July 2002
700 pages, $44.95 , Includes CD-ROM, ISBN: 1-56592-718-4This new edition of Learning Java has been expanded and updated for Java 2 Standard Edition SDK 1.4. It comprehensively addresses important topics such as web applications, servlets, and XML that are increasingly driving enterprise applications. This edition provides full coverage of all Java 1.4 language features including assertions and exception chaining as well as new APIs such as regular expressions and NIO, the new I/O package. New Swing features and components are described along with updated coverage of the JavaBeans component architecture using the open source NetBeans IDE the latest information about Applets and the Java Plug-in for all major web browsers.
The syntax of the Java language is quite simple. However, the libraries included with the Java runtime are very extensive, and a reference book of some sort is absolutely essential. I would are highly recommend any of the following books.
- Java in a Nutshell, 4th Edition
by Dennis Flanagan.
O'Reilly & Associates, Fourth Edition March 2002
992 pages, $39.95, ISBN: 0-596-00283-1Java just keeps growing, adding features, functionality, complexity, and tempting developers to growl with frustration. The new 1.4 release of Java 2 Standard edition increases the size of the platform by 50%, to 2757 classes in 135 packages. How are you going to figure out what this means for your applications? As always, Java in a Nutshell has the answers. The new 4th edition still contains an accelerated introduction to the Java programming language and its key APIs so you can start writing code right away. And with more than 250 new pages, author David Flanagan quickly brings you up to speed on new features that come with version 1.4:
- Java Foundation Classes in a Nutshell, A Desktop Quick Reference
by David Flanagan
1st Edition September 1999
748 pages, $29.95, 1-56592-488-6Java Foundation Classes in a Nutshell provides an in-depth overview of the important pieces of the (JFC), such as the Swing components and Java 2D. It also includes compact reference material on all the GUI- and graphics-related classes in the numerous javax.swing and java.awt packages. Covers Java 1.2.
- Java Enterprise in a Nutshell, 2nd Edition
by William Crawford, Jim Farley, & David Flanagan
2nd Edition April 2002
992 pages, $39.95, 0-596-00152-5Completely revised and updated for the new 2.0 version of Sun Microsystems Java Enterprise Edition software, Java Enterprise in a Nutshell covers all of the J2EE APIs, including RMI, Java IDL, JDBC, JNDI, Java Servlet, and Enterprise JavaBeans, with a fast-paced tutorial and compact reference on each technology.
- Java Examples in a Nutshell, 2nd Edition
by David Flanagan
2nd Edition October 2000
582 pages, $29.95, 0-596-00039-1Java Examples in a Nutshell is full of real-world example programs that not only serve as great learning tools, but can also be modified for individual use. The second edition covers Java 1.3, and contains 164 complete, practical programs: over 17,900 lines of densely commented, professionally written Java code covering 20 distinct Java API's, including Servlets, JavaServer Pages, XML, Swing, and Java 2D.** Virtually all Java books, including the books listed above, can be purchased online thru Amazon.com, Barnes & Nobel, or Powell's Books.
If you have any questions, contact email@example.com.