Welcome to Software Engineering. Lecture 1 Metaphysics of Software Engineering Alex

Slides:



Advertisements
Similar presentations
Lecture 19. Reduction: More Undecidable problems
Advertisements

CS0007: Introduction to Computer Programming Introduction to Classes and Objects.
Composition CMSC 202. Code Reuse Effective software development relies on reusing existing code. Code reuse must be more than just copying code and changing.
The Halting Problem of Turing Machines. Is there a procedure that takes as input a program and the input to that program, and the procedure determines.
Copyright © Cengage Learning. All rights reserved.
Limitations. Limitations of Computation Hardware precision Hardware precision Software - we’re human Software - we’re human Problems Problems –complex.
Problem Solving #1 ICS Outline Review of Key Topics Review of Key Topics Example Program Example Program –Problem 7.1 Problem Solving Tips Problem.
Complexity 11-1 Complexity Andrei Bulatov Space Complexity.
Comp 205: Comparative Programming Languages Semantics of Imperative Programming Languages denotational semantics operational semantics logical semantics.
Proof Points Key ideas when proving mathematical ideas.
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
CS 536 Spring Global Optimizations Lecture 23.
Humans, Computers, and Computational Complexity J. Winters Brock Nathan Kaplan Jason Thompson.
1 Lecture 7 Halting Problem –Fundamental program behavior problem –A specific unsolvable problem –Diagonalization technique revisited Proof more complex.
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
4/25/08Prof. Hilfinger CS164 Lecture 371 Global Optimization Lecture 37 (From notes by R. Bodik & G. Necula)
1 Lecture 7 Halting Problem –Fundamental program behavior problem –A specific unsolvable problem –Diagonalization technique revisited Proof more complex.
Analysis of Algorithms CS 477/677
1 Classes, Encapsulation, Methods and Constructors Class definitions Scope of Data –Instance data –Local data The this Reference Encapsulation and Java.
Prof. Fateman CS 164 Lecture 221 Global Optimization Lecture 22.
Slide 1 of No. Insert Unit Name Here Lecture L: Computability Unit L1: What is Computation?
Computability and Complexity 10-1 Computability and Complexity Andrei Bulatov Gödel’s Incompleteness Theorem.
Describing Syntax and Semantics
Halting Problem. Background - Halting Problem Common error: Program goes into an infinite loop. Wouldn’t it be nice to have a tool that would warn us.
Prof. Bodik CS 164 Lecture 16, Fall Global Optimization Lecture 16.
Writing algorithms using the while-statement. Previously discussed Syntax of while-statement:
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
Describing algorithms in pseudo code To describe algorithms we need a language which is: – less formal than programming languages (implementation details.
Introduction to Programming (in C++) Conclusions Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Cs3102: Theory of Computation Class 18: Proving Undecidability Spring 2010 University of Virginia David Evans.
CMPS 3223 Theory of Computation Automata, Computability, & Complexity by Elaine Rich ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Slides provided.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
The Recursion Theorem Pages 217– ADVANCED TOPICS IN C O M P U T A B I L I T Y THEORY.
CS61B L03 Building Objects (1)Garcia / Yelick Fall 2003 © UCB  Dan Garcia ( Kathy Yelick  (
Undecidable Languages (Chapter 4.2) Héctor Muñoz-Avila.
1 Sections 1.5 & 3.1 Methods of Proof / Proof Strategy.
CPSC 335 Randomized Algorithms Dr. Marina Gavrilova Computer Science University of Calgary Canada.
Chapter 2 Introducing Interfaces Summary prepared by Kirk Scott.
Complexity and G ö del Incomplete theorem 電機三 B 劉峰豪.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
Lecture 18. Unsolvability Before the 1930’s, mathematics was not like today. Then people believed that “everything true must be provable”. (More formally,
Introduction to programming in the Java programming language.
Course Overview and Road Map Computability and Logic.
1 CS161 Introduction to Computer Science Topic #9.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Chapter 4&5 Defining Classes Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
1 Recursion Recursion is a powerful programming technique that provides elegant solutions to certain problems. Chapter 11 focuses on explaining the underlying.
1/32 This Lecture Substitution model An example using the substitution model Designing recursive procedures Designing iterative procedures Proving that.
Computation Motivating questions: What does “computation” mean? What are the similarities and differences between computation in computers and in natural.
Chapter 4 Computation Chapter 4: Computation.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To design and implement programs with more than one function ❏ To be able to.
The Big Picture Chapter 3. A decision problem is simply a problem for which the answer is yes or no (True or False). A decision procedure answers a decision.
Welcome to Software Engineering
Concepts of Object Oriented Programming
Universality of Computation
Lecture 2 of Computer Science II
CS154, Lecture 11: Self Reference, Foundation of Mathematics
Introduction to Computer Programming
Java Software Structures: John Lewis & Joseph Chase
Busch Complexity Lectures: Undecidable Problems (unsolvable problems)
Chapter 4 Functions Objectives
Computability and Complexity
CS 350 – Software Design Singleton – Chapter 21
This Lecture Substitution model
CS154, Lecture 11: Self Reference, Foundation of Mathematics
Software Design Lecture : 39.
Algorithms CSCI 235, Spring 2019 Lecture 37 The Halting Problem
Lecture 23: Computability CS200: Computer Science
Presentation transcript:

Welcome to Software Engineering

Lecture 1 Metaphysics of Software Engineering Alex

General Disclaimer All thoughts, ideas, techniques, truths and mistakes, contained herein and in all the rest of the lectures, assignments and tests are based on my personal experiences and, therefore, are completely subjective...

Books

There is only one constant - change

Model is simplification of reality

Requirements change

Software is cheap! (not really…)

Software Engineering is not just a science. It is an intricate blend of science and art.

Beauty in Software Engineering A piece of code is beautiful if every line in it serves a concrete, explainable purpose.

Beauty in Software Engineering A design is beautiful if it creates all encompassing and succinct model of the process.

Occam’s Razor Things must be complex, but no more complex that they really need to be.

Complex vs. Complicated Complex is Natural - complexity arises out of simplicity through non- linear permutations. Complicated is really Man-Made - arises when the problem is not well understood, when details come before global picture.

Code as a Living Entity Iterate through the code every day Don’t be afraid to change it Get feedback from your code Recfactor, compact, reduce (but not at the expense of the correct design)

First pass is the last pass Never say ‘I will make this better later…’ Consider every pass through the code to be the last pass. Do it cleanly, elegantly, compactly Then later, if you see a better way, come back and re-write it all.

Patterns 1,0,1,0,1,0,1,0,1,... 1,0,1,1,0,1,1,1,0,.… 1,1,0,1,0,0,0,1,1,...

Godel Theorem It is not possible to construct a mathematical system based on axioms such that it will be both sound and complete. There will always be statements that are true, but unprovable.

Simple sentence which contradicts itself This sentence is false.

Turing Theorem It is not possible to determine via mathematical algorithmic procedure whether given Turing machine will halt on the given input. Or simply: There are things that are not possible to compute!

Modeling What is it that will make our models better, closer to perceived reality?

What is a Class? Class is a category, aggregate abstraction, a philosophical form, which unites underlies and describes objects or entities of similar type. Entities, which are similar enough to be assigned to a single class. Class is a blueprint for an object. Class, as far as program is concerned, is a meta physical entity.

What is an Object? Object, is a member, instance of a class. Objects are grouped into classes by similar features. Object, as far as program is concerned, is a physical entity.

Example public class Human { // Constructs human with first name & last name public Human( String sFirstName, String sLastName ) { this.sFirstName = sFirstName; this.sLastName = sLastName; } public String getFirstName() { return sFirstName; } public String getLastName() { return sLastName; } public String toString() { return sFirstName + " " +sLastName; } private String sFirstName, sLastName; // Lets try it out public static void main( String[] args ) { Human ka = new Human("Ken", "Arnold"); // an instance of a class is object System.out.println( "We have created human [" + ka.getName() + "]" ); }

Please read Prefaces and first chapters of all the books that you got.