Stepwise Refinement (1971) • Niklaus Wirth. Program Development by Stepwise Refinement Niklaus Wirth Communications of the ACM April 1971 Computer Scientist. Turing Award 1984 for developing a sequence of innovative programming languages.
Stepwise Refinement (1971) Note: The author gratefully acknowledges the helpful and stimulating influence of many discussions with • A. Hoare - sorting algorithm quicksort (1959) • E. W. Dijkstra - shortest path algorithm (1956) and compiler construction, operating systems, distributed systems, concurrent programming, programming language, program verification, graph algorithms, etc.
Stepwise Refinement (1971) Goal: • programming is NOT easy • programming is not about learning a powerful programming language • Students must be taught to be conscious of the involved decisions and to critically examine and to reject solutions, sometimes even if they are correct as far as the result is concerned; they must learn to weigh the various aspects of design alternatives in the light of these criteria.
Stepwise Refinement (1971) • Decomposition = successive refinement (Top Down) • Refinement = task is broken up into a number of subtasks • Refinement implies design decisions based upon a set of design criteria. • Among these criteria are efficiency, storage economy, clarity, and regularity of structure (quality). • maintainability and extensibility (portability) can be measured primarily in terms of the degree to which a program is neatly structured.
GPU Programming It is used to: § accelerate video, digital image, and audio signal processing, § statistical physics, scientific computing, medical imaging, computer vision, § neural networks and deep learning, § cryptography, and intrusion detection, § among many other areas