1 Introduction. 2 Administrative ~80% Exam, ~20% Homeworks Must pass exam 4-5 Homeworks Homework grades: 80 is easy, 100 is hard 1-2 Class exercises Lecture.

Slides:



Advertisements
Similar presentations
Python Objects and Classes
Advertisements

IEOR 4004: Introduction to Operations Research Deterministic Models January 22, 2014.
John Hurley Cal State LA
1 9. S EQUENCING C ONSTRUCTION T ASKS Objective: To understand the problem of sequencing tasks in a manufacturing system, and the methods of finding optimal.
Lecture Roger Sutton 21: Revision 1.
Using MyMathLab Features You must already be registered or enrolled in a current class.
1 Introduction. 2 Administrative 70% Exam, 30% Homeworks Must pass exam 4-5 Homeworks Homework grades: 80 is easy, 100 is hard 1-2 Class exercises Lecture.
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
Interpolation Prof. Noah Snavely CS1114
1 Homework Turn in HW2 at start of next class. Starting Chapter 2 K&R. Read ahead. HW3 is on line. –Due: class 9, but a lot to do! –You may want to get.
Analysis of Algorithms. Time and space To analyze an algorithm means: –developing a formula for predicting how fast an algorithm is, based on the size.
CS 201: Introduction To Programming With Java
1 Introduction. 2 Why? We need to deliver good programs Bugs: results may be catastrophic Long time to get something working Expensive to change: software.
CSC 171 – FALL 2004 COMPUTER PROGRAMMING LECTURE 0 ADMINISTRATION.
MATH 330: Ordinary Differential Equations Fall 2014.
Using MyMathLab Features You must already be registered or enrolled in a current MyMathLab class in order to use MyMathLab. If you are not registered or.
Ch. 9 Fundamental of Hypothesis Testing
Interpolation, extrapolation, etc. Prof. Ramin Zabih
1 Object Oriented Programming Computer Systems Engineering (D2) and Programming (P)
Computer Science and Programming 1 Idaho State University.
Demand Management and Forecasting
Welcome to COE212: Engineering Programming Instructor: Wissam F. Fawaz Office 103, Bassil bldg. All week long: What is computer.
COMP 111 Programming Languages 1 First Day. Course COMP111 Dr. Abdul-Hameed Assawadi Office: Room AS15 – No. 2 Tel: Ext. ??
EECE 310 Software Engineering Lecture 0: Course Orientation.
1 Student Orientation. Hello and Welcome! This brief walkthrough is designed to help you become familiar with the ALEKS program and how it will be used.
Introduction to Programming Lecture 1 – Overview
Lecture 10 Inheritance “Absolute C++” Chapter 14.
Welcome to IIT and cs115!.
School of Computer Science & Information Technology G6DICP - Lecture 9 Software Development Techniques.
1 Student Orientation. Hello and Welcome! This brief walkthrough is designed to help you become familiar with the ALEKS program and how it will be used.
Summary of what we learned yesterday Basics of C++ Format of a program Syntax of literals, keywords, symbols, variables Simple data types and arithmetic.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
1 CSE1301 Computer Programming: Revision. 2 Topics Type of questions What do you need to know? About the exam Exam technique Staff consultation Revision.
Disarming Tests. Copyright © Houghton Mifflin Company. All rights reserved.Disarming Tests - 2 Disarm Tests Grades are what we use to give power to tests.
10-Nov-15 Java Object Oriented Programming What is it?
Using MyMathLab Features of MyMathLab You must already be registered or enrolled in a current MyMathLab class in order to use MyMathLab. If you are not.
1 CS161 Introduction to Computer Science Topic #9.
Philosophy of ICT and Islam Lecture 3 Data, Information, Knowledge and Wisdom.
Scientific Debugging. Errors in Software Errors are unexpected behaviors or outputs in programs As long as software is developed by humans, it will contain.
CSCE 1030 Computer Science 1 First Day. Course Dr. Ryan Garlick Office: Research Park F201 B –Inside the Computer Science department.
+ Summer Institute for Online Course Development Institute – Assessment Techniques Presentation by Nancy Harris Dept of Computer Science.
CSPC 464 Fall 2014 Son Nguyen. 1. The Process of Software Architecting, Peter Eeles, Peter Cripss 2. Software Architecture for Developers, Simon Brown.
M1G Introduction to Programming 2 3. Creating Classes: Room and Item.
Revision & House Keeping. Instructions NOTE:  Attempt all questions  Marks total 100  Write your answers in the spaces provided  Write as clearly.
ANALYSING COSTS COMP 103. RECAP  ArrayList: add(), ensuring capacity, iterator for ArrayList TODAY  Analysing Costs 2 RECAP-TODAY.
1 Student Orientation. Hello and Welcome! This brief walkthrough is designed to help you become familiar with the ALEKS program and how it will be used.
CS223: Software Engineering Lecture 4: Software Development Models.
27-Jan-16 Analysis of Algorithms. 2 Time and space To analyze an algorithm means: developing a formula for predicting how fast an algorithm is, based.
CSC 401 Data and Computer Communication Networks Fall 2011, Section 001 Rudra Dutta.
James Tam Introduction To CPSC 233 James Tam Java Object-Orientation Graphical-user interfaces.
LECTURE 02: EVALUATING MODELS January 27, 2016 SDS 293 Machine Learning.
Array Size Arrays use static allocation of space. That is, when the array is created, we must specify the size of the array, e.g., int[] grades = new int[100];
COP4020 INTRODUCTION FALL COURSE DESCRIPTION Programming Languages introduces the fundamentals of the design and implementation of programming languages.
Course Information CSE 2031 Fall Instructor U. T. Nguyen /new-yen/ Office: CSEB Office hours:  Tuesday,
PROBLEM SOLVING AND PROGRAMMING ISMAIL ABUMUHFOUZ | CS 170.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
CSC 108H: Introduction to Computer Programming Summer 2012 Marek Janicki.
Phil Tayco Slide version 1.0 Created Sep 18, 2017
CSc 020: Programming Concepts and Methodology II
Using MyMathLab Features
Welcome to COE212: Engineering Programming
CSE373: Data Structures & Algorithms Lecture 25: Software-Design Interlude – Preserving Abstractions Catie Baker Spring 2015.
EECE 310 Software Engineering
Lecture 03: Software Lifecycle Models
Computer Programming 1 introduction to JAVA Lecture 1 Instructor: Ruba A. Salamah Islamic University of Gaza.
Fall 2018 CISC124 2/24/2019 CISC124 Quiz 1 marking is complete. Quiz average was about 40/60 or 67%. TAs are still grading assn 1. Assn 2 due this Friday,
Course Information EECS 2031 Fall 2016.
Dr. Sampath Jayarathna Cal Poly Pomona
2.3 Graph Equations of Lines
Presentation transcript:

1 Introduction

2 Administrative ~80% Exam, ~20% Homeworks Must pass exam 4-5 Homeworks Homework grades: 80 is easy, 100 is hard 1-2 Class exercises Lecture in tutorial slot Office hours: by appointment

3 How to Approach this Course Hard to emulate the “real world” Requirements/scope No clear finish line Months & years You need to treat the material differently Extrapolation Wide but not deep Every decisions has pros and cons Result You will write slower!

4 Context OOP Mostly static typing Performance is not issue

5 “Design” => “Better” software Define: Design Define: Quality in software

6

7 What Jeremy Lin Teaches Us About Talent? Lin was eventually signed by the Warriors, but he was soon placed on the inactive list … Lin was waived by the Warriors, picked up and then waived by the Rockets, before finally being claimed by the Knicks as a backup point guard. “Frontal Cortex” (Jonah Lehrer)

8 Statistical Correlation Once: Pick properties that are easy to measure Measure “success” indicators Correlate properties and indicators Repeatedly: Predict future success by measuring properties Didn’t work in the case of Jeremy Lin “Success” indicators in s/w are harder to measure (than in sports)

9

10 “A fly with no legs cannot hear”

11

12 Analysis Fixes in earlier stages are cheaper => Better to detect mistakes earlier => “Measure twice, cut once” How about Cost of fix rises with amount of knowledge needed to be processed by the fixer => Less decisions, cheaper fixes => Feedback about what’s not working makes fixes cheaper

13 (Jeremy Lin, Repair Cost Chart) Pre-estimation of success will not work Intensive pre-planning will not work Actually, we already know that (Computability 101) Try it! Get real feedback Similar to physical checks, planning a city

14 A One-Line Summary Write test!

15 A Two-Line Summary Rule #1:Write test! Rule #2:Programming is a process of trial-and-error process

16 Axioms Entropy Discontinuity Long tail Super-linearity

17 Burn Charts Time is important. let’s describe our progress vs. time Vertical axis: tasks completed Horizontal axis: time line

18 Burn Up

19 Burn Up Example

20 Quality in Software High-quality: A software whose burn curve is linear We don’t care about the slope. As long as it’s constant Similar to Big-O notation of algorithms Flattening is the #1 risk Can be experienced even in student assignments Result oriented Unlike code metrics whose correlation with the net result is indirect (at best) Requires constant feedback, short iterations Past is measurable Provides some confidence for the future

21 Quality in Software (cont.) High-quality: A software whose burn curve is linear A s/w dev. technique must optimize delivery time “Plan for X months and code for X weeks” does not work A s/w dev. technique that requires, at iteration N+1, work that is O(N), does not work

22 What is Design (I) Sufficient information for a craftsman of typical skill to be able the build the artifact without excessive creativity. (Guy Steele)

23 public class Calculator { int x; public A(int n) { x = n; } public int add(int y) { return x + y; } public int sub(int y) { return x – y; } }

24 Using a Calculator Object Compute 5 + 9, put result in x int x = 5 + 9; int x = new Calculator(5).add(9); Protocols induce a new programming language

25 Class IndentingPrinter public class IndentingPrinter { private String indentation = ""; private final StringBuilder sb = new StringBuilder(); public void inside() { indentation += " "; } public void outside() { indentation = indentation.substring(2); } public void print(String s) { sb.append(indentation).append(s).append('\n'); public String toString() { return sb.toString(); } }

26 Using IndentingPrinter’s Language public class Book { private String name; public Book(String name) { this.name = name; } public void print(IndentingPrinter p) { p.print("Book: " + name); } } public class Library { private String name; private List books = new ArrayList (); public Library(String name) { this.name = name; } public void add(Book b) { books.add(b); } public void print(IndentingPrinter p) { p.print("Library: " + name); for (Book b : books) b.print(p); }

27 Class IndentingPrinter (II) public static class IndentingPrinter { private final String indentation; private StringBuilder sb = new StringBuilder(); public IndentingPrinter() { this("", new StringBuilder()); } private IndentingPrinter(String indentation, StringBuilder sb) { this.indentation = indentation; this.sb = sb; } public IndentingPrinter inside() { return new IndentingPrinter(indentation + " ", sb); } public void print(String s) { sb.append(indentation).append(s).append('\n'); public String toString() { return sb.toString(); } }

28 New Protocol => New Language // Book remains the same... public static class Library { private String name; private List books = new ArrayList (); public Library(String name) { this.name = name; } public void add(Book b) { books.add(b); } public void print(IndentingPrinter p) { p.print("Library: " + name); for (Book b : books) b.print(p.inside()); }

29 Which Version do you like better?

30 What is Design (II) Design is the language induced by the protocols of the objects that are available at a certain context

31 “Design, by nature, is a series of trade-offs. Every choice has a good and bad side, and you make your choice in the context of overall criteria defined by necessity. Good and bad are not absolutes, however. A good decision in one context might be bad in another. If you don't understand both sides of an issue, you cannot make an intelligent choice; in fact, if you don't understand all the ramifications of your actions, you're not designing at all. You're stumbling in the dark” Allen Holub, “Why getter and setter methods are evil”,