Component Architecture is the art/science/craft/practice of creating a solution to some problem using components that are computer programs, or parts of programs.
An obviously very important first step is to have some components!
This course will focus on design of components, which means first developing some ideas as to what they could be, how they might operate, and the kinds of tools that could be used for connecting them together.
The model that is "in the back of our minds" (sometimes very far back) is that of small-scale electronic components, the ubiquitous "chips". In the beginning we think on a level corresponding to very small (in terms of functionality, not size) scale chips, especially the kind known as LS TTL chips. Here we consider an architecture built from things such as Flip-Flops, Multivibrators, Registers, Latches, and so on, where some of these (such as Registers and Latches) are themselves assemblages of other components such as Flip-Flops.
Our components are "program-pieces", and the programming language that we will focus (almost exclusively) on is Java. The main reasons for this focus are: