This document discusses tools and techniques for structured problem solving and program development, including top-down design, pseudocode, and logic diagrams. It provides an example of using top-down refinement to develop an algorithm for calculating a class average based on quiz grades. Various flow charting symbols are also presented and explained. Finally, an assignment is given to develop a flow chart or algorithm to sort apples from a large box into baskets by color.