CSE564 Lecture 02

CSE564 Lecture 02

Software Design
The Beginning
(202008)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

August 02, 2020
Tweet

Transcript

  1. jgs CSE 564 Software Design Lecture 02: The Beginning Dr.

    Javier Gonzalez-Sanchez javiergs@asu.edu javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment
  2. jgs Previously

  3. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 3 jgs

    What Makes a Good Design? OOAD, Grady Booch, 2007
  4. jgs The Beginning

  5. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 5 jgs

    Timeline 1971 1985 1972 1969 1959 1995 1997
  6. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 6 jgs

    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.
  7. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 7 jgs

    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.
  8. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 8 jgs

    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.
  9. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 9 jgs

    Stepwise Refinement (1971) • Top Down Design Technique • Programming = Coding + Design • Function-driven development • Function, method, procedure • Instruction, predicate • Thought Processes: Sequence, Selection, Iteration • Unit of Modularity: Statements • Data representation • Data processing: statements
  10. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 10 jgs

    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.
  11. jgs And …

  12. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 12 jgs

    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
  13. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 13 jgs

    GPU Programming
  14. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 14 jgs

    GPU Programming
  15. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 15 jgs

    GPU Programming
  16. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 16 jgs

    GPU Programming
  17. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 17 jgs

    CPU Matrix
  18. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 18 jgs

    GPU Vector Addition
  19. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 19 jgs

    GPU Programming
  20. jgs Questions

  21. Javier Gonzalez-Sanchez | CSE564 | Fall 2020 | 21 jgs

    Homework Read: § On the Criteria To Be Used in Decomposing Systems into Modules D.L. Parnas Communications of the ACM April 1972
  22. jgs CSE 564 Computer Systems Fundamentals Javier Gonzalez-Sanchez javiergs@asu.edu Fall

    2020 Disclaimer. These slides can only be used as study material for the class CSE564 at ASU. They cannot be distributed or used for another purpose.