Cs2220: Engineering Software Class 1: Engineering Software? Fall 2010 University of Virginia David Evans.

Slides:



Advertisements
Similar presentations
計算機概論 ( 二 ) 4 授課教師:許永真 4 上課時間:週二 16:10-18:00 週四 13:10-14:00 4 上課地點:資 107/101 4 課程網頁: – 4 課程教材: –Structure and.
Advertisements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Introduction.
Applied Software Project Management INTRODUCTION Applied Software Project Management 1 5/20/2015.
Computers and Society Lecture 1: administrative details and an introduction to the class Professor: Evan Korth New York University.
Motivation Why study Software Engineering ?. What is Engineering ? 2 Engineering (Webster) – The application of scientific and mathematical principles.
1 Lafayette Crisis Center Scheduling System Project # 3 WISE.
CS/CMPE 535 – Machine Learning Outline. CS Machine Learning (Wi ) - Asim LUMS2 Description A course on the fundamentals of machine.
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
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.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To understand the structure of a C-language program. ❏ To write your first C.
Frequently asked questions about software engineering
David Evans CS200: Computer Science University of Virginia Computer Science Class 29: Vocational Skills How to Build a.
Discussion examples Andrea Zhok.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 28: Implementing Interpreters.
Computer Science 102 Data Structures and Algorithms V Fall 2009 Lecture 1: administrative details Professor: Evan Korth New York University 1.
Cs205: engineering software university of virginia fall 2006 Semantics and Specifying Procedures David Evans
Software Engineering EE323 Y.F. Fung Office: CF605 Consultation hours: Wednesday 6pm-7:30pm.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 1 1.
Upstream Prerequisites
Software Engineering What is Software Engineering? Clearly: developing software But what software? Obvious: PCs, phones … but not all computers have keyboards.
Spring 2008 Mark Fontenot CSE Honors Principles of Computer Science I Note Set 1 1.
1.1 1 Introduction Foundations of Computer Science  Cengage Learning.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Chapter 1: Introduction.
Overview of the Department’s ABET Criterion 3 Assessment Process.
University of Palestine Faculty of Engineering and Urban planning Software Engineering department Software Engineering Group Project Requirements Project.
CS 106 Introduction to Computer Science I 01 / 25 / 2010 Instructor: Michael Eckmann.
Prof. Matthew Hertz SH 1029F /
1 Welcome to CS 362 Applied Software Engineering What happens after (and during) design? Testing, debugging, maintaining programs Lessons for software.
CS216: Program and Data Representation University of Virginia Computer Science Spring 2006 David Evans Lecture 2: Orders of Growth
Introduction to Information Systems and Technology MIS 213, Spring 2015 CIS 2005, CIS 1007.
21 August Agenda  Introductions  Logistics  Selecting a project  Working with a client.
1 Project Information and Acceptance Testing Integrating Your Code Final Code Submission Acceptance Testing Other Advice and Reminders.
Words of Wisdom from the exiting 239 students Spring 2008 to the entering 139 students Fall 2008.
WEB PROGRAMMING M&IS Overview: – A little Bit About me! – Introduction of Web Programming – Structure of building – Successes – Hardships – Concluding.
Computer Science 102 Data Structures and Algorithms CSCI-UA.0102 Fall 2012 Lecture 1: administrative details Professor: Evan Korth New York University.
1 CPRE210: Introduction to Digital Design Instructor –Arun K. Somani –Tel: – –Office Hours: MWF 10:00-11:00 Teaching Assistant.
15 October 2003Computer Science1 David Evans ComputerScience.
Robert Crawford, MBA West Middle School.  Explain how the binary system is used by computers.  Describe how software is written and translated  Summarize.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 3: Rules of Evaluation.
Welcome to IST331 S1 Main concepts today Introduction to team, processes The user Cognitive ergonomics, design Examples of things about the user that are.
Cs205: engineering software university of virginia fall 2006 Introducing Java David Evans Don’t forget to your registration.
Inculcating Invariants in Introductory Courses David Evans and Michael Peck University of Virginia ICSE 2006 Education Track Shanghai, 24 May
Fall CSE330/CIS550: Introduction to Database Management Systems Prof. Susan Davidson Office: 278 Moore Office hours: TTh
David Evans Class 15: P vs. NP (Smiley Puzzles and Curing Cancer) CS150: Computer Science University of Virginia Computer.
David Evans CS201j: Engineering Software University of Virginia Computer Science Lecture 9: Designing Exceptionally.
Winter 2016CISC101 - Prof. McLeod1 CISC101 Elements of Computing Science I Course Web Site: The lecture outlines.
The problem that needs to be solved is if a computer career is for me.
Data Structures and Algorithms in Java AlaaEddin 2012.
Data, Information and Knowledge (and the delayed Introduction!) Session 2 INST 301 Introduction to Information Science.
Career Field Research Project Jayme Mason September 30, 2015.
Lecture 3: Rules of Evaluation CS150: Computer Science
2016 CRA Mentoring Workshop Teaching Margo Seltzer, Harvard Univ. Dan Grossman, Univ. Washington February 22, 2016.
CSCE 240 – Intro to Software Engineering Lecture 3.
A Simple Tool to Measure Computer Literacy A Simple Tool to Measure Computer Literacy George Kontos, Ed.D. Assistant Professor Business and Computer Studies.
EDU697: Capstone: A Project Approach Professor Keith Pressey.
Spring 2008 Mark Fontenot CSE 1341 – Honors Principles of Computer Science I Note Set 1 1.
1 Welcome to Introduction to Engineering. 2 Spring 2007.
Introduction to CSCI 1311 Dr. Mark C. Lewis
EECE 310 Software Engineering
CSC 222: Object-Oriented Programming
Software Quality and Testing (CSC 4133)
Why study Software Design/Engineering ?
David Evans Lecture 1: Engineering Software, Constructing Poetry and Dancing about Architecture CS201j: Engineering Software?
Computer Science 102 Data Structures CSCI-UA
Software Quality Assurance Lecture 1
Why study Software Engineering ?
Presentation transcript:

cs2220: Engineering Software Class 1: Engineering Software? Fall 2010 University of Virginia David Evans

Menu Can we engineer software? About this Course Managing Complexity

Can we engineer software?

What is engineering? flickr cc:dpblackwood

Webster’s Definitions en·gi·neer·ing ( n j -nîr ng) n. 1a. The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems. b. The profession of or the work performed by an engineer. 2. Skillful maneuvering or direction: geopolitical engineering; social engineering.

Design Under Constraint “Engineering is design under constraint… Engineering is synthetic - it strives to create what can be, but it is constrained by nature, by cost, by concerns of safety, reliability, environmental impact, manufacturability, maintainability and many other such 'ilities.'...” William Wulf and George Fisher

Computing Power Moore’s “Law”: computing power roughly doubles every 18 months!

Constraints Software Engineers Face Not like those for “real” engineers: Weight, physics, etc. Complexity of what we can understand Most important constraints: Limits of human memory Cost of human effort This class is about managing complexity to efficiently produce reliable complex software systems.

How is engineering software different from engineering bridges?

Bridges Software

Continuous Calculus Testing/analysis is “easy” if the bridge holds for 1M kg, it also probably holds 0.99M kg Discrete Logic, Discrete Mathematics Testing/analysis is difficult Bridges Software Made of physical stuff Most costs are obvious Changes after construction are hard Made of virtual stuff All costs are non-obvious Changes should be easy (but they’re not)

Requirements are (usually) obvious and easy to describe A good design is apparent to everyone immediately Requirements are mysterious and hard to describe A good design is only apparent to “experts” but has impact later on Bridges Software

Obvious when it fails Bridge makers get sued Architects need licenses Sibley & Walker (~30 years between failures) Falls down quietly (usually) Software vendors blame user, charge for upgrades Anyone can make software, no one gets sued Bridges Software

Software Failures Spanair flight 5022 (2008) Ariane 5 (1996)

Course Overview Introductions Thursday

where cs1120 ends… I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customer got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we’re responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun…. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more. Alan Perlis, preface to Abelson & Sussman, Structure and Interpretation of Computer Programs Computer Science Software Engineering: taking “customer” complaints seriously! but, it should still be fun and stretching what one can do with computers!

Small, Fun Programs (“cs1120”) vs. Big, Important Programs (simulated in “cs2220”)

Small, Fun ProgramsImportant Programs

Small, Fun Programs If it doesn’t work on some input, no big deal Happy if it works once If it doesn’t work on just one input people may die, $$$$ lost Must work on all inputs Important Programs flickr cc:foolswisdom flickr cc: scottvanderchijs

Small, Fun Programs Manage complexity mostly by memory Written by a few people over a short period of time Written by many people over many years Need to design and document well to manage complexity Important Programs

How Big are Big Programs? Largest program in cs1120: ~1000 lines of code F-22 Steath Fighter Avionics Software: 1.5M loc Linux: 10M lines of code Windows (XP): ~50M lines of code Amazon.com: ~100M lines of code Modern automobile: ~100M lines of code Typical estimate: $18 per line of code Typical estimate: 1 bug per 1000 lines of (production) code

Goal of cs2220 Develop the concepts and skills necessary to successfully build important software.

Grading A+: I would be willing to fly in a plane running software you designed and wrote A: I would be willing to shop in an ecommerce store you built B: I would trust you to manage programmers working on important software (See syllabus for grading details.)

Course Summary Main ideas: Abstraction Using and designing data abstractions Specification Understanding and writing declarative specifications Analysis Static: reasoning about behavior Dynamic: developing and executing testing strategies Main ideas: Abstraction Using and designing data abstractions Specification Understanding and writing declarative specifications Analysis Static: reasoning about behavior Dynamic: developing and executing testing strategies Learn by doing: 5 smallish software projects (problem sets 1-5) individually, in small teams, weeks each 1 larger team project: (almost) anything you want Learn by doing: 5 smallish software projects (problem sets 1-5) individually, in small teams, weeks each 1 larger team project: (almost) anything you want

Expected Background Prerequisite: cs1120/cs150 You should be able to: Write and understand short programs Write and understand recursive definitions Use procedures as parameters and results Analyze the asymptotic running-time of a procedure Understand replacement (BNF) grammars If you don’t have this background, you may still be able to take the class (talk to me).

Course History 2002: First offered (cs201j) Developed with support from National Science Foundation Spring 2006: BACS Degree launched Fall 2006: cs205 Fall 2007, 2008, 2009: cs205 (taught by Paul Reynolds) Fall 2010: cs2220

Course Pledge Not the classroom pledge! The whole point of being at a University is so you can: – Learn from your classmates – Learn better by teaching your classmates READ, sign and return the cs2220 Pledge next class (Thursday) If you disagree with anything, this is your chance to object There may be questions about the pledge on a quiz!

Help Available Me: David Evans Office hours: Mondays, 1:15-2:30pm Thursdays, 11am-noon Blog comments: Please use this for things that would be useful for everyone Assistant Teacher: Web site: Almost Everything goes on the web Don’t be afraid to ask for help!

Charge This class is about: Managing complexity: modularity, abstraction, specification Engineering dependability: analysis, redundancy, design By 5pm Tomorrow: submit registration survey Thursday: Print, read, and return cs2220 pledge Beginning of class Tuesday: Problem Set 1 Due If you do not satisfy the prereq for this course but want to stay in it, please talk to me now (or Thursday 11-noon, or arrange another time.