470-01 Internet Programming Languages: Supporting Applications on the GRID
Dr. Monisha Pulimood
Background
Grid Technology is fast revolutionizing business models and scientific research methods. A grid computing system is a distributed parallel collection of computers that enables the sharing, selection and aggregation of resources. This sharing is based on the resources' availability, capability, performance, cost and ability to meet quality-of-service requirements. Bioinformatics, oil and gas exploration, automotive and aerospace engineering, and financial services industries were among the early corporate adopters. Today the Grid spans computers at several universities, commercial and government research facilities. IBM, Sun, and Hewlett-Packard have each developed grid initiatives based on their own hardware, while companies like Avaki, DataSynapse, Entropia, and Platform Computing specialize in grid management and scheduling software. Financial services firms use grid computing to prepare complex models of individual currencies or complete portfolios, and get the results quickly enough to trade based on the model's predictions. The largest game hosted so far on the Grid has about 50,000 concurrent users.
This course will introduce student to the Grid and related technologies. Students will delve into the intricacies of a language that can produce strongly mobile programs to effectively exploit the Grid. A strongly mobile program (mobile computation) is one that can commence execution at one site, discover a need for a resource at a different site and then halt execution, migrate, and continue execution at the new site. In order to continue (without being forced to start over) the current state of execution must migrate along with the mobile computation.
Goals:
- Understand the motivation for strongly mobile programs
- Become aware of existing technologies that utilize the Grid
- Learn a language that supports strongly mobile programs
- Implement modules that provide support for strong mobility at the language and virtual machine
- Analyze performance
Structure:
- Students will be assigned papers to read, report on, and present.
- Students will conduct independent research into the state of the art by looking for relevant papers, read them, synthesizing their findings and presenting them.
- Students will design and implement modules that provide support for strong mobility at the language and virtual machine levels.
- Students will test performance of their implementation, analyze the results, and draw conclusions.
Assessment will be based on:
- Reports
- Presentations in class
- Semester project that includes implementation
- Analysis of performance of implementation
- Final paper in a style and format suitable for submission to a regional conference
Outcomes:
- Students will develop research techniques.
- Students will become more aware of the state of the art and thus broaden their knowledge base.
- Students will develop / strengthen their ability to test performance and to analyze results.
- Students will strengthen their technical writing skills.
- All of these will be useful in graduate school and / or in the industry.
470-02 Server-Side Applications
Professor Craig Kapp
This course is designed to teach students how to develop functional and engaging web delivered server-side applications. Topics covered will include the design and development of dynamic, interactive web-based applications using the Common Gateway Interface (CGI) and Perl. Additional topics will include the development of applications using non-HTML interfaces, specifically Macromedia Flash. Knowledge of HTML and programming experience in any language or scripting tool (C, C++, Java, Perl, Basic, VB, ASP, PHP, etc) is required.