1. Human Genome Sequencing The history of humankind is replete with examples of how we have constructed machines and used them to change our environment. With the advent of the computer, we may now be able to change ourselves. The key to genetic engineering is the codification and understanding of the human genome. Describe the "human genome" problem. Explain how computers are (or can be) used to understand the human genome. Estimate the computer resources required to sequence the entire human genome. Compare and contrast this with the resources required to sequence a viral genome. Has any complete genome of any organism been sequenced to date? Write the code to sequence some DNA and carry out the computation. 2. Global Climate Modeling Climate modeling involves coupled ocean-atmosphere-geosphere-biosphere calculations which must simulate centuries of real time. Restrict your attention to the coupled ocean-atmosphere model. Explain the physical/mathematical model, its algorithms, their numerical implementations and the performance of such models on today's high-end computers. Use the shallow water equations to do some sample computations of your own. 3. Performance Evaluation Computers are the most complex tools ever built. Computer scientists typically examine them from the bottom up - starting with individual components which are assembled into subsystems. Computational scientists typically examine them from the top down - starting with an application code running on a full computing system and then attempting to trace the causes of the codes' performance back into the machine and its interacting subsystems. Performance evaluation is a very difficult game. Its "horse race" version is called benchmarking. Explain benchmarking, its assets and liabilities. Present a comparison of various benchmarks of the same machine. Present a comparison of various machines which perform the same benchmark. Characterize the GMU applications "workload" and design a representative benchmark which could be used in future procurements by the University. Test your benchmark on the collection of publicly available computers at GMU. 4. Public Key Encryption The RSA Algorithm and the public-domain software based on it, PGP and PGPfone, are revolutionizing the world of cryptography. Secure communications were formerly available to only a few - mostly those in military or other forms of government service requiring secrecy. Govenrments had been able to intercept communications signals and decode them fairly easily. Now anyone with a personal computer can encript both e-mail and telephone conversations to "military" standards. Investigate the RSA Algorithm. Learn how to build public-key encription software. Estimate the computer resources required to decrypt on-the-fly one message which uses 128 bit public key encryption. develop public-key breaking software and demonstrate it. 5. New Application One of the things that makes computational science interesting is that not all disciplines are at the same stage of assimilation of its techniques. Thus, an interesting opportunity is to find a field which is ripe for exploitation by the computational science approach. Document one such occurrence which has taken place in the past decade. Propose and thoroughly document the case for a new breakthrough area of computational science. Perform proof of concept computations. 6. Distributed Computing Computers evolve. We're moving from one processing element in one box, to many identical processing elements in one box, to many identical processing elements in many boxes interconnected by a network, to to many different boxes containing different sorts of processing elements interconnected by many networks of differing bandwidth. How does one decide on the "right" computing environment for a particular application? What is a virtual heterogeneous machine? How do individual computational scientists make use of such a machine? Is there software currently available to schedule the use of such a machine? If so, get it and use it. If not, write it and demonstrate it. 7. Common Threads Computational science moves from "physical reality" to a mathematical model to a solution algorithm, to a numerical implementation of the algorithm on a specific computer architecture. In traversing this space, one often discovers similarities where they might not be expected. Such similarities can occur at any stage of the process. Explain how designing commercial aircraft, understanding the dynamics of interstellar gas jets, and modeling the world's oceans are the same - and different. What are the common threads. If you don't like this example, propose another one and carry out the same analysis. Take a "subsystem" from one application and use it to compute in another application. 8. Continuous or Discrete? John Horton Conway invented the game of "Life" - a very simple, discrete computer game. I don't remember when - it was some time within my (long) lifetime. Please find out. The game of Life led to the creation of cellular automata and eventually spurred the creation of the field of study now called Artificial Life (or A-Life). An offshoot along this path was the creation of lattice gas dynamics as an alternative, discrete, model to the (continuous) Navier-Stokes equations describing the motion of a continuous fluid. Compare and contrast the lattice gas and Navier-Stokes approaches to modeling fluid motion. Get a lattice gas code and compute with it. 9. A-Life Trace the history of this field from its first meeting in Santa Fe in the early eighties (reported in the National Enquirer) to its curent state. In particular, focus on the sub-field of artificial evolution. Describe it, get some artificial evolution code, and compute. Who knows, you might get A-Life! 10. Searching Large Spaces Notice I didn't call them "databases." I called them "spaces" because they may be too disorganized to merit being called a database. Whatever they're called there are a lot of big ones out there and more on the way. Just consider what's hidden away behind the collection of all URLs on the Net. How does one effectively navigate such spaces and find "relevant" material? Serendipity and intuition are great, but can we do better? Define the problem, design a search engine to blow away the best of the current crop, build it, demonstrate it, start a company, give me a lot of stock for giving you the idea, and let's have a public offering! Actually, just completing the first four steps will be sufficient for this course...