In trying to answer the two proposed questions, our group made the following suggestions:
A component that is inserted into the library must be approved by a professor of an appropriate department and also by a librarian, whose job it is to guarantee that all components satisfy the prescribed format. Components can only be accessed for reading (perhaps code stored in source form, so that anyone can copy it, compile it, and execute it, but not change it in the library). The librarian only will control changes (possibly deletion) if errors are detected.
Beginner courses in computer science and software engineering should require the use and documentation of components from this library into assigned projects. New systems would therefore have modules of others that clearly indicate where, when and by whom they were developed. Later courses should more thoroughly integrate larger and more varied components.
A black box approach [#!Tra90!#] is very valuable in industry where it is comparable to engineering pluggable components. Program instantiations and transformations have equal importance, similar to the customization of hardware components. Perhaps, however, a white box approach is most applicable to an educational curriculum spread over a few years. Thus, a white box approach allows viewing of portions of code, documentations, etc. that illustrate standards and techniques for users to follow and can be incorporated into new systems as long as they are appropriately referenced. This process is similar to the analysis and integration of the research of an English major and has some relevance to art and music education.