This document is to be used as a letter of recommendation for two students Han-Ku Lee and Sang Lim. Both students have started research work in June of this year and performed quite excellently. Their early independent study work was sufficiently promising that we awarded them RA positions in NPAC. I expect both to be able to get a Ph.D. thesis of high quality and NPAC will support them to do this. Their work is in the parallel Java group in NPAC led by Dr. Bryan Carpenter and recently the home of our excellent visitor Prof. Xiaoming Li who is now back in Peking University. This is the purest research work in NPAC as it focuses on parallel compiler and message passing technology. It has been recognized by publication of key papers and an NSF award which will start soon. The students are working in quite different efforts and we can evaluate them independently and both in my opinion appear some of the strongest Ph.D. candidates we have seen recently. The reviews in detail come from Bryan Carpenter and show that we have monitored these students quite carefully. Both are both talented and very serious and sincere. I am personally committed to helping them graduate with an excellent thesis. Recommendation for Han-Ku Lee ----------------------------- Han-Ku Lee has been working in Carpenters research group as a CIS 690 independent study student since June this year. At that time he expressed a specific interest in compilers for parallel architectures. We asked him to work closely with Dr. Guansong Zhang on the front-end being developed in our HPJava translation project. Zhang is a highly talented visitor from Harbin institute of technology where Xiaoming Li originally came from. HPJava is a new language for parallel programming, extended from Java. The HPJava translator is being written in Java. It is built around a new front-end developed using the JavaCC parser-generator tool from JavaSoft. To complete his assigned projects Lee had to familiarize himself with this software, and with the accompanying Java classes for manipulating syntax trees generated by the parser. Although his knowledge of Java and compiler development were initially quite limited, Lee rapidly gained proficiency with these tools, and Dr. Zhang now finds him a valuable and capable worker. Under Dr. Zhang's supervision Lee has implemented various components to be used either in phases of translation---including an unparser for ``code-generation'' and a module for transforming expression trees to simplify translation---or in debugging the translator itself. Directions for his work in the immediate future may include improvements to the semantic-analysis module of the translator. In the slightly longer term there is much work to be done on code analysis and optimization. Lee has regularly attended and contributed to meetings of the research group over the Summer, and has generally demonstrated his ability and enthusiasm. Recommendation for Sang Lim --------------------------- Sang Lim has worked in Carpenter's research group as a CIS 690 independent study student since June this year. He has worked directly with Bryan on the new `mpiJava' Java binding of the Message Passing Interface standard (MPI). In particular we have been working toward adding better support for communicating Java objects. NPAC is founding member of international team establishing this standard. MPI is an interface for interprocess communication in ``scientific'' parallel programs. Until recently MPI bindings were available only for C and Fortran. In the last year our group suggested a Java API for MPI, and implemented it through a Java Native Interface (JNI) wrappers to C MPI code. This binding is called mpiJava. The initial version of mpiJava only allows communication of primitive data types (in the Java sense). The work of Sang Lim has been towards relaxing this limit. We expect to alleviate the restriction by using the standard Java object serialization mechanism. The JNI wrappers will automatically serialize object data to byte-arrays before sending them. In practice the MPI standard is complex, and adding serialization in a uniform way to all MPI communication functions while preserving the expected behavior for blocking, non-blocking, non-deterministic, etc., communication modes is a significant task. The work with Lim demonstrated how to solve most of the associated problems. We have implemented these solutions at the level of prototype code. In the coming months we plan to incorporate the solutions into the released mpiJava code. This will lead to a much more flexible communication package for parallel programming in Java. We find Lim to be an excellent student. He has familiarized himself with Java and object serialization, as well as with technical details of the MPI standard. He has stayed in close contact while under my supervision. He understands and implements suggestions readily, and knows when to ask questions about topics that might hold him up. Besides the work on serialization he has helped administer our computers, and is working on demonstration codes for mpiJava.