- Use sorting appropriately in solving problems;
- Develop classes that implement the Comparable interface;
- Use timing data to analyze empirical performance;
- Break problems into multiple classes, each with their own methods;
- Determine if a class from the Java API can be used in solving a particular problem;
- Implement programming solutions using multiple approaches and recognize tradeoffs;
- Use object-oriented concepts including interfaces and abstract classes when developing programs;
- Appropriately hide implementation decisions so they are not visible in public methods; and
- Recognize the limitations of algorithms and Java programs in solving problems.
- Recognize standard Java classes and idioms including exception-handling, static methods, java.net, and java.io packages.