Top-down and Bottom-up Approaches
In Top-down programming approach, we start by identifying the major modules of the program, decomposing them into their lower modules and iterating until the desired level of detail is achieved. This is also termed as Step Wise Refinement; starting from an abstract design, in each step the design is refined to a more concrete level until we reach a level where no more refinement is needed and the design can be implemented directly, whereas in Bottom-up programming approach, we identify modules that are required by programs and decide how to combine these modules to provide larger ones; to combine those to provide even larger ones, and so on, till we arrive at one big module which is the whole of the desired program.
In Bottom-up approach, we need to use a lot of intuition to decide exactly what functionality a module should provide. This is not the case in Top-down approach.