| Program Composition | |
| We define this as an ability to design a programming solution to a medium size programming problem that involves teamwork and results in a working product. | |
| 1. Be able to define requirements and produce specifications for the problem. | |
| 2. Have a knowledge of tools and environments and be able to use those appropriate for solving the problem in a creative manner. | |
| 3. Understand higher level programming components: | |
| classes | design and implement |
| exception handling | understand and use |
| libraries | understand and use a subset |
| GUI | be familiar with |
| scripting languages | be familiar with at least one |
| 4. Be able to work in a team and to implement (with the team) a complete program from given specifications. | |