This course is still in the planning stage. It might be offered in the academic year 2002-2003.
It assumes that students have a solid background in bioinformatics algorithms and systems.
The principal objectives of the course are to provide in-depth knowledge of techniques, tools, and reusable artifacts for rapid development of high-quality extensible software for bioinformatics.
Bioinformatics is a relatively new discipline dealing with the computational needs of genomics. Biology has become a data-intensive activity. Genomics databases must deal with this variety and scale, as well they must integrate disparate databases that are their information sources; must provide flexible, friendly user interfaces for querying and data mining; and cope with incomplete and uncertain data.
Information technology must also address the workflow within the laboratory, including the automated analysis of data. Some analysis techniques require significant computational resources, and the management of large-scale distributed computation is an issue.
The swift progress of science and biotechnology demands rapid development of the corresponding software for data management, analysis, and visualization in order to keep scientists ahead of the competition.
To come.
Domain modeling: this is the basis of systematic reuse and rapid software development. Context, scope, features, concepts and relationships, architecture, template metaprogramming, domain-specific languages.
Onion approach to designing evolvable software.
Software Libraries: principles of good library design. Examples of libraries: STL algorithms and collections; numerical, statistical, and scientific algorithms; graph algorithms; FSMs, patterns, and strings; machine learning; information retrieval; visualization.
Software Frameworks for Extensibility: Java UI frameworks; Jini service registry model; dynamic object model; adaptive workflow model; layers, APIs, and XML.
Students are required to apply (30%) their learning to an actual problem in bioinformatics, to present (20%) their design and results to the class, and to write a term paper (50%) describing their work.