Wassily Kandinsky Willem de Kooning Joan Miro Russ Abbott, California State University, Los Angeles.

Slides:



Advertisements
Similar presentations
Construction process lasts until coding and testing is completed consists of design and implementation reasons for this phase –analysis model is not sufficiently.
Advertisements

Educating Programmers: A Customer Perspective Alexander Stepanov A9.com Workshop on Quality Software: A Festschrift for Bjarne Stroustrup Texas A&M University,
Unified Modeling Language
2 We need programming languages to communicate with a computer. The two broad classifications of programming languages are: Low-level and High- level.
Object-Oriented Analysis and Design
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Introduction To System Analysis and Design
0 PROGRAMMING IN HASKELL Chapter 12 – Lazy evaluation and infinite lists Slides not from Hutton.
Contributions of Dr. David Parnas to the Development of Software Engineering Background History of Computer Technology Career of David Parnas Areas of.
Programming in the Many Software Engineering Paradigm for the 21 st Century Nenad Medvidovic Center for Software Engineering Computer Science Department.
Software Engineering General Project Management Software Requirements
Fall 2005CSE 115/503 Introduction to Computer Science I1 Lecture #4 Agenda Announcements Review Questions? Classes and objects UML class diagrams Creating.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Chapter 1 Software Engineering. Homework ► Read Section 2.2 (pages 79-98) ► Answer questions: ► 7, 8, 11, 12, & 13 on page 134. ► Answer on paper, hand.
Wassily Kandinsky Willem de Kooning Joan Miro Russ Abbott California State University, Los Angeles.
Describing Syntax and Semantics
Information Extraction from Documents for Automating Softwre Testing by Patricia Lutsky Presented by Ramiro Lopez.
1 ENG236: Introduction (1) Rocky K. C. Chang THE HONG KONG POLYTECHNIC UNIVERSITY.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
CSCI-383 Object-Oriented Programming & Design Lecture 4.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Introduction By: Dr. Javad Razjouyan. Programming Languages.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
No Silver Bullet. CS460 - Senior Design Project I (AY2004)2 No silver bullet "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
Adaptive Processes © Adaptive Processes Simpler, Faster, Better Software Requirements.
Week 4 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
Computer Engineering 1 nd Semester Dr. Rabie A. Ramadan 1.
Detailed design – class design Domain Modeling SE-2030 Dr. Rob Hasker 1 Based on slides written by Dr. Mark L. Hornick Used with permission.
Introduction To System Analysis and Design
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
Jeff Marino & Ron Reed. Main Concepts Object-oriented programming is programming that is based on using premade objects and writing code for the objects.
SOFTWARE ENGINEERING Chapter 1. Introduction We can’t run the modern world without software. Why? Discussion….
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Week 4 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
NJIT UML Class Diagrams Chapter 16 Applying UML and Patterns Craig Larman.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
 What is Modeling What is Modeling  Why do we Model Why do we Model  Models in OMT Models in OMT  Principles of Modeling Principles of Modeling 
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
The basics of the programming process The development of programming languages to improve software development Programming languages that the average user.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Engineering Emphasis for Engineering Computing Courses William Hankley Computing & Information Sciences Kansas State University.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
Object-Oriented Programming © 2013 Goodrich, Tamassia, Goldwasser1Object-Oriented Programming.
 Programming - the process of creating computer programs.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
11 Software Design CSCU 411 Software Engineering.
Lecture 2: Review of Object Orientation. © Lethbridge/La ganière 2005 Chapter 2: Review of Object Orientation What is Object Orientation? Procedural.
1 Here are some quotations to get an overview of the kinds of issues of interest.
Object Oriented Programming. OOP  The fundamental idea behind object-oriented programming is:  The real world consists of objects. Computer programs.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
Class Diagrams Revisited. Parameterized Classes Parameterized Classes - are used to represent relationships between templates.
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
Chapter 3 Implementing Classes
WELCOME TO OUR PRESENTATION UNIFIED MODELING LANGUAGE (UML)
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
COMP 412, FALL Type Systems C OMP 412 Rice University Houston, Texas Fall 2000 Copyright 2000, Robert Cartwright, all rights reserved. Students.
Design Concepts ch-8
Systems Design.
Software Engineering Fall 2005
11.1 The Concept of Abstraction
Software Quality Engineering
Chapter 2 Database Environment.
Chapter 4 Functions Objectives
The Purpose of this Course
From Use Cases to Implementation
Chapter 11 Abstraction - The concept of abstraction is fundamental in
Presentation transcript:

Wassily Kandinsky Willem de Kooning Joan Miro Russ Abbott, California State University, Los Angeles

5/10/2015What is abstraction?2  PHILOSOPHY conceptualization : the process by which people develop concepts either from experience or from other concepts. (Encarta.com)

5/10/2015What is abstraction?3  When an entity, biological or mechanical, makes a distinction (e.g. by behaving differently under different circumstances) it has not created an abstraction.  An abstraction is a reified distinction, a distinction for which the entity has a name and to which it can refer—abstractly.  Abstraction implies conceptualization, which implies a mind that holds the abstraction.

5/10/2015What is abstraction?4 eval(A + B, C) :- eval(A, AVal), eval(B, BVal), C is AVal + BVal. eval(A - B, C) :- eval(A, AVal), eval(B, BVal), C is AVal - BVal. eval(A * B, C) :- eval(A, AVal), eval(B, BVal), C is AVal * BVal. … eval(Expr, Result) :- Expr =.. [Op | Args], isArithmeticOp(Op), !, map(eval, Args, ArgsVals), Expr1 =.. [Op | ArgsVals], Result is Expr1. Liskov: Abstraction by parameterization extracts an essential core of some computational element and reifies it as a named element of its own, leaving parameters to be filled in when the abstraction is instantiated.

5/10/2015What is abstraction?5 switch (expression) { case 1: code_1; case 2: code_2; … } class SuperClass; class Class1 extends SuperClass; class Class2 extends SuperClass; … Convert a distinction ( switch ) into a concept ( class )

5/10/2015What is abstraction?6  Since abstraction results from the extraction and reification of the essence of something, one cannot extract an essence of something until that thing exists.  A significant thread in computer science is the process of becoming aware of and then reifying a thought process as an abstraction.  Backus conceived Fortran when he realized that it was possible to program a computer to do the same sort of translation that programmers did mentally.  Then came compiler generators, etc.

5/10/2015What is abstraction?7  Software composition involves (a) organizing software elements (b) to serve a given purpose.  Bottom-up. The pieces existed—even if only in one’s mind—before they could be organized.  Top-down. The intended meaning existed before the software could be written.  Software composition—i.e., implementing an abstraction—is where top-down meets bottom-up.  That’s the magic that we as human beings can do.

5/10/2015What is abstraction?8  Yes. We teach abstraction when we teach programming languages and techniques.  We are reasonably successful at doing this. Students can learn how to use abstractions. But learning abstraction tools requires a lot of work. primes = sieve [2.. ] where sieve (p:xs) = p:sieve [x | x  xs, (x `mod` p) /= 0] fib = 0 : 1 : zipWith (+) fib (tail fib)  Yes, self-awareness can be taught, but with difficulty.  To do that teach design patterns by giving problems for which a design pattern is a solution but require students to come with it themselves.  No, abstraction as brilliance cannot be taught.  But one can be taught to recognize good abstractions. This is similar to recognition (P) vs. generation (NP), which is typically much harder.

5/10/2015What is abstraction?9  To be successful software engineers students must be able to construct conceptual—i.e., abstract—models of different customer domains.  Give students as much experience as possible in seeing the world in different ways.  Teach how different disciplines model the world—especially how they use visualization and modeling programs to think.

5/10/2015What is abstraction?10  Abstraction by parameterization extracts an essential core of some computational element and reifies it as a named element of its own, leaving parameters to be filled in when the abstraction is instantiated.  Abstraction by specification abstracts from the implementation details (how the module is implemented) to the behavior users can depend on (what the module does).