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.
It is about successive refinement Definition: Refinement = task is broken up into a number of subtasks What is a Task? Goals: • 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.
not about learning a powerful programming language • programming is NOT easy • 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.
the source code. It will be discussed in our next lecture Problem to solve: 1. Read a file line by line 2. Split lines in words (group of characters) 3. Classify each word as: name, keyword (if, while), or delimiter (parenthesis and curly brackets) 4. Store them in a data structure