About Double Dispatch

Size: px
Start display at page:

Download "About Double Dispatch"

Transcription

1 Learning Object-Oriented Programming and Design with TDD About Double Dispatch Stéphane Ducasse W8S02

2 W8S02 2 / 31 Outline Some fun exercises Thinking about them Discovering double dispatch Stepping back

3 W8S02 3 / 31 Exercise 1 Given primitive addi(i,j) returns i + j primitive addf(f1,f2) returns f1 + f2 i.asfloat() returns a float

4 W8S02 4 / 31 Adding Integer and Float >>> >>> >>> >>> 3.3 Implement + But with Not a single explicit conditional No static type support

5 A First Hint W8S02 5 / 31 Two classes Integer and Float

6 Let Us See W8S02 6 / 31 Integer >> + anumber "fill me up :)" Float >> + anumber "fill me up :)"

7 Another Key Hint W8S02 7 / 31 When you execute a method you know that the receiver is from the class of the method!

8 Even More Hints W8S02 8 / 31 Remember the Boolean implementation Sending a message to an object is a choice operator

9 Let Us Get Started W8S02 9 / 31 Imagine that we add one method sumwithinteger: aninteger Integer >> + anumber Integer >> sumwithinteger: aninteger Float >> + anumber "fill me up :)"

10 Look Like An Easy Definition W8S02 10 / 31 Integer >> + anumber Integer >> sumwithinteger: aninteger ^ addi(self, aninteger) Float >> + anumber "fill me up :)"

11 How Do We Connect Them? W8S02 11 / 31 Integer >> + anumber ^ anumber sumwithinteger: self Integer >> sumwithinteger: aninteger ^ addi(self, aninteger) Float >> + anumber "fill me up :)"

12 On Float Too W8S02 12 / 31 Integer >> + anumber ^ anumber sumwithinteger: self Integer >> sumwithinteger: aninteger ^ addi(self, aninteger) Float >> + anumber Float >> sumwithinteger: aninteger "fill me up :)"

13 On Float Too W8S02 13 / 31 Integer >> + anumber ^ anumber sumwithinteger: self Integer >> sumwithinteger: aninteger ^ addi(self, aninteger) Float >> + anumber Float >> sumwithinteger: aninteger ^ addf(self, asfloat(aninteger))

14 Supporting W8S02 14 / 31 Integer >> + anumber ^ anumber sumwithinteger: self Integer >> sumwithinteger: aninteger ^ addi(self, aninteger) Float >> + anumber ^ anumber sumwithfloat: self Float >> sumwithinteger: aninteger ^ addf(self, asfloat(aninteger))

15 Supporting W8S02 15 / 31 Integer >> + anumber ^ anumber sumwithinteger: self Integer >> sumwithinteger: aninteger ^ addi(self, aninteger) > Integer >> sumwithfloat: afloat > ^ addf(afloat, asfloat(self)) Float >> + anumber ^ anumber sumwithfloat: self Float >> sumwithinteger: aninteger ^ addf(self, asfloat(aninteger)) > Float >> sumwithfloat: afloat > ^ addf(self, afloat)

16 W8S02 16 / 31 Ok now Relax! Take a pen and follow the calls to the following expressions Follow with your fingers if necessary :)

17 W8S02 17 / 31 Key Point Integer >> + anumber ^ anumber sumwithinteger: self Two choices/messages: one for + one for sumwithinteger:

18 Exercise2: How to Add Fraction? W8S02 18 / 31 f := Fraction num: 1 denum: 2. f num >>> 1 f denum >>> 2 f asfloat >>> 0.5 1/ /5 1/3 + 4/3

19 Introducing Fraction W8S02 19 / 31 Fraction >> + anumber ^ anumber sumwithfraction: self...

20 Introducing Fraction W8S02 20 / 31 Fraction >> + anumber ^ anumber sumwithfraction: self Fraction >> sumwithfraction: afrac...

21 Introducing Fraction W8S02 21 / 31 Fraction >> + anumber ^ anumber sumwithfraction: self Fraction >> sumwithfraction: afrac ^ Fraction num: (self num * afrac denum) + (afrac num * self denum) denum: afrac denum * self denum...

22 Taking Care of Integer and Float W8S02 22 / 31 Fraction >> + anumber ^ anumber sumwithfraction: self Fraction >> sumwithfraction: afrac ^ Fraction num: (self num * afrac denum) + (afrac num * self denum) denum: afrac denum * self denum Integer >> sumwithfraction: afrac... Float >> sumwithfraction: afrac...

23 Introducing Fraction W8S02 23 / 31 Fraction >> + anumber ^ anumber sumwithfraction: self Fraction >> sumwithfraction: afrac ^ Fraction num: (self num * afrac denum) + (afrac num * self denum) denum: afrac denum * self denum... Integer >> sumwithfraction: afrac ^ Fraction num: (self * afrac denum) + afrac num denum: afrac denum Float >> sumwithfraction: afrac ^ addf(self, afrac asfloat)

24 Full Code for Fraction W8S02 24 / 31 Fraction >> + anumber ^ anumber sumwithfraction: self Fraction >> sumwithfraction: afrac ^ Fraction num: (self num * afrac denum) + (afrac num * self denum) denum: afrac denum * self denum Fraction >> sumwithinteger: aninteger ^ Fraction num: (self num + aninteger * afrac denum) denum: afrac denum Fraction >> sumwithfloat: afloat ^ addf(self afloat, afloat) Integer >> sumwithfraction: afrac ^ Fraction num: (self * afrac denum) + afrac num denum: afrac denum Float >> sumwithfraction: afrac ^ addf(self, afrac asfloat)

25 W8S02 25 / 31 Ok Now Relax Take a pen and follow the calls to the following expressions Follow with your fingers if necessary :) 1/ /5 1/3 + 4/3

26 W8S02 26 / 31 Stepping Back We can add Fraction without changing any previous method Another example of "Sending a message is making a choice" We send two messages + to select Integer, Float, Fraction then the message sumwith... to reselect the correct definition in Integer, Float, Fraction Different kinds of messages Primary operations Double dispatching methods

27 W8S02 27 / 31 Double Dispatch Essence of Visitor Design Pattern (see Lecture) Double dispatch is a clear illustration of Do not ask, Tell OOP tenet Used really frequently for event, drawing,...

28 W8S02 28 / 31 When not using Double Dispatch No class to dispatch on! We need an different instance of dispatch to

29 W8S02 29 / 31 What about Overloading Double dispatch is also useful in statically typed languages Avoid overloading for double dispatch - some type systems do not work well

30 W8S02 30 / 31 Conclusion Powerful Modular Just sending an extra message to an argument and using late binding

31 A course by Stéphane Ducasse Reusing some parts of the Pharo Mooc by Damien Cassou, Stéphane Ducasse, Luc Fabresse Except where otherwise noted, this work is licensed under CC BY-NC-ND 3.0 France

Use vs. Inheritance. Learning Object-Oriented Programming and Design with TDD. Stéphane Ducasse.

Use vs. Inheritance. Learning Object-Oriented Programming and Design with TDD. Stéphane Ducasse. Learning Object-Oriented Programming and Design with TDD Use vs. Inheritance Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W6S06 W6S06 2 / 20 Outline An exercise Some criteria Solutions

More information

Learning From Real Examples

Learning From Real Examples Learning Object-Oriented Programming and Design with TDD Learning From Real Examples Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W7S05 W7S05 2 / 21 What You Will Learn Thinking

More information

Iterators. Damien Cassou, Stéphane Ducasse and Luc Fabresse. W3S09

Iterators. Damien Cassou, Stéphane Ducasse and Luc Fabresse.   W3S09 Iterators Damien Cassou, Stéphane Ducasse and Luc Fabresse W3S09 http://www.pharo.org W3S09 2 / 24 What You Will Learn Understand the power of iterators Offer an overview of iterators W3S09 3 / 24 Pharo

More information

An Overview of Essential Collections

An Overview of Essential Collections Learning Object-Oriented Programming and Design with TDD An Overview of Essential Collections Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W2S08 W2S08 2 / 32 What You Will Learn

More information

About Instance Initialization

About Instance Initialization Learning Object-Oriented Programming and Design with TDD About Instance Initialization Stéphane Ducasse http://stephane.ducasse.free.fr http://www.pharo.org W5S06 W5S06 2 / 26 How to ensure that an instance

More information

An Overview of Essential Collections

An Overview of Essential Collections An Overview of Essential Collections Damien Cassou, Stéphane Ducasse and Luc Fabresse W3S07 http://www.pharo.org W3S07 2 / 31 What You Will Learn Some basic collections Essential API to program collections

More information

Voyage. NoSQL Object Database. Damien Cassou, Stéphane Ducasse and Luc Fabresse. W4S11

Voyage. NoSQL Object Database. Damien Cassou, Stéphane Ducasse and Luc Fabresse.  W4S11 Voyage NoSQL Object Database Damien Cassou, Stéphane Ducasse and Luc Fabresse W4S11 http://www.pharo.org W4S11 2 / 27 Goal To let you build a real little application Show you a nice way to store objects

More information

Seaside: An Innovative Web Application Framework

Seaside: An Innovative Web Application Framework Seaside: An Innovative Web Application Framework Damien Cassou, Stéphane Ducasse and Luc Fabresse W4S08 http://www.pharo.org W4S08 2 / 24 Seaside A powerful, innovative and flexible framework Dedicated

More information

Pharo Syntax in a Nutshell

Pharo Syntax in a Nutshell Pharo Syntax in a Nutshell Damien Cassou, Stéphane Ducasse and Luc Fabresse W1S06, 2015 W1S06 2 / 28 Getting a Feel About Syntax In this lecture we want to give you the general feel to get started: Overview

More information

Powerful Exceptions: an Overview

Powerful Exceptions: an Overview Powerful Exceptions: an Overview Damien Cassou, Stéphane Ducasse and Luc Fabresse W5S04 http://www.pharo.org W5S04 2 / 21 Exceptions Really powerful Can be resumed, restarted, and signaled as new exception

More information

Design Patterns: State, Bridge, Visitor

Design Patterns: State, Bridge, Visitor Design Patterns: State, Bridge, Visitor State We ve been talking about bad uses of case statements in programs. What is one example? Another way in which case statements are sometimes used is to implement

More information

CS-201 Introduction to Programming with Java

CS-201 Introduction to Programming with Java CS-201 Introduction to Programming with Java California State University, Los Angeles Computer Science Department Lecture X: Methods II Passing Arguments Passing Arguments methods can accept outside information

More information

Unit: Rational Number Lesson 3.1: What is a Rational Number? Objectives: Students will compare and order rational numbers.

Unit: Rational Number Lesson 3.1: What is a Rational Number? Objectives: Students will compare and order rational numbers. Unit: Rational Number Lesson 3.: What is a Rational Number? Objectives: Students will compare and order rational numbers. (9N3) Procedure: This unit will introduce the concept of rational numbers. This

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and

More information

NeoJSON. 1.1 An Introduction to JSON

NeoJSON. 1.1 An Introduction to JSON C H A P T E R 1 Sven Van Caekenberghe with Damien Cassou and Stéphane Ducasse JSON (JavaScript Object Notation) is a popular data-interchange format. Neo- JSON is an elegant and efficient standalone Smalltalk

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Type Inference Some statically typed languages, like ML (and to a lesser extent Scala), offer alternative

More information

SCHEME AND CALCULATOR 5b

SCHEME AND CALCULATOR 5b SCHEME AND CALCULATOR 5b COMPUTER SCIENCE 6A July 25, 203 In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

2. Classes & Inheritance. Classes. Classes. Éric Tanter Objects and Design in Smalltalk. How do you create objects?

2. Classes & Inheritance. Classes. Classes. Éric Tanter Objects and Design in Smalltalk. How do you create objects? Objects and Design in Smalltalk 2. Classes & Inheritance Éric Tanter etanter@dcc.uchile.cl 1 Classes How do you create objects? Ex-nihilo in prototype-based languages With a class in class-based languages

More information

Back to ObjectLand. Contents at: Chapter 5. Questions of Interest. encapsulation. polymorphism. inheritance overriding inheritance super

Back to ObjectLand. Contents at: Chapter 5. Questions of Interest. encapsulation. polymorphism. inheritance overriding inheritance super korienekch05.qxd 11/12/01 4:06 PM Page 105 5 Back to ObjectLand Contents at: Chapter 5 #( encapsulation polymorphism inheritance overriding inheritance super learning the class hierarchy finding classes

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2018 Lecture 7b Andrew Tolmach Portland State University 1994-2018 Dynamic Type Checking Static type checking offers the great advantage of catching errors early And

More information

Lab - Create User Accounts in Windows 8

Lab - Create User Accounts in Windows 8 Introduction In this lab, you will create user accounts in Windows 8. Recommended Equipment The following equipment is required for this exercise: A computer with a new installation of Windows 8 Part 1:

More information

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

Lecture 5: RMI etc. Servant. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3

Lecture 5: RMI etc. Servant. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3 Lecture 5: RMI etc. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3 CDK Figure 5.7 The role of proxy and skeleton in remote method invocation client

More information

6.001 Notes: Section 15.1

6.001 Notes: Section 15.1 6.001 Notes: Section 15.1 Slide 15.1.1 Our goal over the next few lectures is to build an interpreter, which in a very basic sense is the ultimate in programming, since doing so will allow us to define

More information

CSC324 Principles of Programming Languages

CSC324 Principles of Programming Languages CSC324 Principles of Programming Languages http://mcs.utm.utoronto.ca/~324 November 21, 2018 Last Class Types terminology Haskell s type system Currying Defining types Value constructors Algebraic data

More information

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n) Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 10A Lecture - 20 What is a function?

More information

Chapter 7 Exercise Solutions

Chapter 7 Exercise Solutions Chapter 7 Exercise Solutions EX 7.1. Write a method called average that accepts two integer parameters and returns their average as a floating point value. public double average (int num1, int num2) return

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Lecture 10 For Loops and Arrays Outline Problem: How can I perform the same operations a fixed number of times? Considering for loops Performs same operations

More information

Expressions and Casting. Data Manipulation. Simple Program 11/5/2013

Expressions and Casting. Data Manipulation. Simple Program 11/5/2013 Expressions and Casting C# Programming Rob Miles Data Manipulation We know that programs use data storage (variables) to hold values and statements to process the data The statements are obeyed in sequence

More information

6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics

6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics 6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics Grab Bag & Perspective January 31, 2014 6.S096 Lecture 10 Course Recap, Interviews, Advanced Topics January 31, 2014 1 / 19 Outline 1 Perspective

More information

RECURSION, RECURSION, (TREE) RECURSION! 2

RECURSION, RECURSION, (TREE) RECURSION! 2 RECURSION, RECURSION, (TREE) RECURSION! 2 COMPUTER SCIENCE 61A February 5, 2015 A function is recursive if it calls itself. Below is a recursive factorial function. def factorial(n): if n == 0 or n ==

More information

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors Agenda

More information

SCHEME 7. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. October 29, 2015

SCHEME 7. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. October 29, 2015 SCHEME 7 COMPUTER SCIENCE 61A October 29, 2015 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College August 29, 2018 Outline Outline 1 Chapter 2: Data Abstraction Outline Chapter 2: Data Abstraction 1 Chapter 2: Data Abstraction

More information

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below: QUIZ 1. Explain the meaning of the angle brackets in the declaration of v below: This is a template, used for generic programming! QUIZ 2. Why is the vector class called a container? 3. Explain how the

More information

Expressions and Casting

Expressions and Casting Expressions and Casting C# Programming Rob Miles Data Manipulation We know that programs use data storage (variables) to hold values and statements to process the data The statements are obeyed in sequence

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur Lecture 14 Default Parameters and Function Overloading

More information

SCHEME 8. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. March 23, 2017

SCHEME 8. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. March 23, 2017 SCHEME 8 COMPUTER SCIENCE 61A March 2, 2017 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

Type Hierarchy. Lecture 6: OOP, autumn 2003

Type Hierarchy. Lecture 6: OOP, autumn 2003 Type Hierarchy Lecture 6: OOP, autumn 2003 The idea Many types have common behavior => type families share common behavior organized into a hierarchy Most common on the top - supertypes Most specific at

More information

. p.1/23. Today. 1. Questions and discussion from lecture. 2. Type-checking Functions Arrays Records (maybe)

. p.1/23. Today. 1. Questions and discussion from lecture. 2. Type-checking Functions Arrays Records (maybe) . p.1/23 Today 1. Questions and discussion from lecture. 2. Type-checking Functions Arrays Records (maybe) . p.2/23 Type-checking functions Aspects: Overview of checks 6, 7 Declaration header Declaration

More information

Lecture 2. COMP1406/1006 (the Java course) Fall M. Jason Hinek Carleton University

Lecture 2. COMP1406/1006 (the Java course) Fall M. Jason Hinek Carleton University Lecture 2 COMP1406/1006 (the Java course) Fall 2013 M. Jason Hinek Carleton University today s agenda a quick look back (last Thursday) assignment 0 is posted and is due this Friday at 2pm Java compiling

More information

Language-side Foreign Function Interfaces with NativeBoost

Language-side Foreign Function Interfaces with NativeBoost Language-side Foreign Function Interfaces with NativeBoost IWST 2013 Camillo Bruni, Luc Fabresse, Stéphane Ducasse, Igor Stasenko Outline 1. Context 2. Existing Solutions 3. NativeBoost 4. Speed Comparison

More information

Object Oriented Methods : Deeper Look Lecture Three

Object Oriented Methods : Deeper Look Lecture Three University of Babylon Collage of Computer Assistant Lecturer : Wadhah R. Baiee Experience has shown that the best way to develop and maintain a large program is to construct it from small, simple pieces,

More information

O-O-Overloading & D-Dispatch. Scott Kilpatrick 02 March 2011

O-O-Overloading & D-Dispatch. Scott Kilpatrick 02 March 2011 O-O-Overloading & D-Dispatch Scott Kilpatrick 02 March 2011 1 Overloading and dispatch: in natural languages Overloading: one word has many meanings court court court 2 Overloading and dispatch: in natural

More information

Lesson Plan. Subject: OBJECT ORIENTED PROGRAMMING USING C++ :15 weeks (From January, 2018 to April,2018)

Lesson Plan. Subject: OBJECT ORIENTED PROGRAMMING USING C++ :15 weeks (From January, 2018 to April,2018) Lesson Plan Name of the Faculty Discipline Semester :Mrs. Reena Rani : Computer Engineering : IV Subject: OBJECT ORIENTED PROGRAMMING USING C++ Lesson Plan Duration :15 weeks (From January, 2018 to April,2018)

More information

Fun with Floats. Chapter Never test equality on floats. Fun with Floats

Fun with Floats. Chapter Never test equality on floats. Fun with Floats Fun with Floats Chapter 1 Fun with Floats with the participation of: Nicolas Cellier (nicolas.cellier.aka.nice@gmail.com) Floats are inexact by nature and this can confuse programmers. This chapter introduces

More information

CS121/IS223. Object Reference Variables. Dr Olly Gotel

CS121/IS223. Object Reference Variables. Dr Olly Gotel CS121/IS223 Object Reference Variables Dr Olly Gotel ogotel@pace.edu http://csis.pace.edu/~ogotel Having problems? -- Come see me or call me in my office hours -- Use the CSIS programming tutors CS121/IS223

More information

Lecture 20: templates

Lecture 20: templates CIS 330:! / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 20:

More information

2. The object-oriented paradigm!

2. The object-oriented paradigm! 2. The object-oriented paradigm! Plan for this section:! n Look at things we have to be able to do with a programming language! n Look at Java and how it is done there" Note: I will make a lot of use of

More information

Why using Smalltalk for Teaching Object- Oriented Design

Why using Smalltalk for Teaching Object- Oriented Design Why using Smalltalk for Teaching Object- Oriented Design N. Bouraqadi - Ecole des Mines de Douai S. Ducasse - University of Berne S. Stinckwich - University of Caen R. Wuyts - Université Libres de Bruxelles

More information

WELCOME! (download slides and.py files and follow along!) LECTURE 1

WELCOME! (download slides and.py files and follow along!) LECTURE 1 WELCOME! (download slides and.py files and follow along!) 6.0001 LECTURE 1 6.0001 LECTURE 1 1 TODAY course info what is computation python basics mathematical operations python variables and types NOTE:

More information

Implementing Continuations

Implementing Continuations Implementing Continuations sk and dbtucker 2002-10-18 1 Changing Representations Now that we ve seen how continuations work, let s study how to implement them in an interpreter. For this lecture onward,

More information

RECURSION, RECURSION, (TREE) RECURSION! 3

RECURSION, RECURSION, (TREE) RECURSION! 3 RECURSION, RECURSION, (TREE) RECURSION! 3 COMPUTER SCIENCE 61A September 18, 2013 A function is recursive if it calls itself. Below is recursive factorial function. def factorial(n): if n == 0 or n ==

More information

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring

Outline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring Java Outline Java Models for variables Types and type checking, type safety Interpretation vs. compilation Reasoning about code CSCI 2600 Spring 2017 2 Java Java is a successor to a number of languages,

More information

} Evaluate the following expressions: 1. int x = 5 / 2 + 2; 2. int x = / 2; 3. int x = 5 / ; 4. double x = 5 / 2.

} Evaluate the following expressions: 1. int x = 5 / 2 + 2; 2. int x = / 2; 3. int x = 5 / ; 4. double x = 5 / 2. Class #10: Understanding Primitives and Assignments Software Design I (CS 120): M. Allen, 19 Sep. 18 Java Arithmetic } Evaluate the following expressions: 1. int x = 5 / 2 + 2; 2. int x = 2 + 5 / 2; 3.

More information

Haskell Scripts. Yan Huang

Haskell Scripts. Yan Huang Haskell Scripts Yan Huang yh33@indiana.edu Last Quiz Objectives Writing Haskell programs in.hs files Note some differences between programs typed into GHCi and programs written in script files Operator

More information

(Refer Slide Time: 1:27)

(Refer Slide Time: 1:27) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 1 Introduction to Data Structures and Algorithms Welcome to data

More information

CS304 Object Oriented Programming Final Term

CS304 Object Oriented Programming Final Term 1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes? Generalization (pg 29) Sub-typing

More information

Derived and abstract data types. TDT4205 Lecture 15

Derived and abstract data types. TDT4205 Lecture 15 1 Derived and abstract data types TDT4205 Lecture 15 2 Where we were We ve looked at static semantics for primitive types and how it relates to type checking We ve hinted at derived types using a multidimensional

More information

Concepts Review. 2. A program is the implementation of an algorithm in a particular computer language, like C and C++.

Concepts Review. 2. A program is the implementation of an algorithm in a particular computer language, like C and C++. Concepts Review 1. An algorithm is a sequence of steps to solve a problem. 2. A program is the implementation of an algorithm in a particular computer language, like C and C++. 3. A flowchart is the graphical

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 5: Use Case Modeling Part 2 1 Activities of requirements workflow Capture Functional Requirements 1. Find actors and use cases 2. Prioritize use cases

More information

1 Delimited continuations in Haskell

1 Delimited continuations in Haskell 1 Delimited continuations in Haskell This section describes programming with delimited control in Haskell. Delimited control, like its instance, exceptions, is an effect. Therefore, we have to use monads.

More information

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014 Lesson 10A OOP Fundamentals By John B. Owen All rights reserved 2011, revised 2014 Table of Contents Objectives Definition Pointers vs containers Object vs primitives Constructors Methods Object class

More information

Compiler Construction Lent Term 2015 Lectures 10, 11 (of 16)

Compiler Construction Lent Term 2015 Lectures 10, 11 (of 16) Compiler Construction Lent Term 15 Lectures 10, 11 (of 16) 1. Slang.2 (Lecture 10) 1. In lecture code walk of slang2_derive 2. Assorted topics (Lecture 11) 1. Exceptions 2. Objects 3. Stacks vs. Register

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #34. Function with pointer Argument

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #34. Function with pointer Argument Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #34 Function with pointer Argument (Refer Slide Time: 00:05) So, here is the stuff that we have seen about pointers.

More information

SYMMETRY v.1 (square)

SYMMETRY v.1 (square) Symmetry with Code - v1 George Gadanidis 2017 researchideas.ca/sym 1 SYMMETRY v.1 (square) What is symmetry? I can t remember. Help! SQUARE PUZZLE My teacher loves puzzles I do too! Here is the latest

More information

MULTIPLE OPERAND ADDITION. Multioperand Addition

MULTIPLE OPERAND ADDITION. Multioperand Addition MULTIPLE OPERAND ADDITION Chapter 3 Multioperand Addition Add up a bunch of numbers Used in several algorithms Multiplication, recurrences, transforms, and filters Signed (two s comp) and unsigned Don

More information

(Refer Slide Time: 01.26)

(Refer Slide Time: 01.26) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture # 22 Why Sorting? Today we are going to be looking at sorting.

More information

CISC-124. This week we continued to look at some aspects of Java and how they relate to building reliable software.

CISC-124. This week we continued to look at some aspects of Java and how they relate to building reliable software. CISC-124 20180129 20180130 20180201 This week we continued to look at some aspects of Java and how they relate to building reliable software. Multi-Dimensional Arrays Like most languages, Java permits

More information

Introduction. Three button technique. "Dynamic Data Grouping" using MS Reporting Services Asif Sayed

Introduction. Three button technique. Dynamic Data Grouping using MS Reporting Services Asif Sayed Image: 1.0 Introduction We hear this all the time, Two birds with one stone. What if I say, Four birds with one stone? I am sure four sound much better then two. So, what are my four birds and one stone?

More information

Environment Diagrams. Administrivia. Agenda Step by Step Environment Diagram Stuff. The Rules. Practice it s on! What are The Rules?

Environment Diagrams. Administrivia. Agenda Step by Step Environment Diagram Stuff. The Rules. Practice it s on! What are The Rules? Administrivia Project 3 Part A due 3/29 (Monday after SB) Part B due 4/5 (a week after) Everyone with a partner that wants a partner? Extra Office Hours on Sunday 3/28 in C50 from 1pm Midterm 3 on 4/14

More information

Spring 2018 Discussion 7: March 21, Introduction. 2 Primitives

Spring 2018 Discussion 7: March 21, Introduction. 2 Primitives CS 61A Scheme Spring 2018 Discussion 7: March 21, 2018 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme

More information

Objects as Session-Typed Processes

Objects as Session-Typed Processes Objects as Session-Typed Processes Stephanie Balzer and Frank Pfenning Computer Science Department, Carnegie Mellon University AGERE! 2015 The essence of object-orientation 2 The essence of object-orientation

More information

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I BASIC COMPUTATION x public static void main(string [] args) Fundamentals of Computer Science I Outline Using Eclipse Data Types Variables Primitive and Class Data Types Expressions Declaration Assignment

More information

List Functions, and Higher-Order Functions

List Functions, and Higher-Order Functions List Functions, and Higher-Order Functions Björn Lisper Dept. of Computer Science and Engineering Mälardalen University bjorn.lisper@mdh.se http://www.idt.mdh.se/ blr/ List Functions, and Higher-Order

More information

Exploring Little Numbers

Exploring Little Numbers Exploring Little Numbers Chapter 1 Exploring Little Numbers We manipulate numbers all the time and in this chapter we propose you a little journey into the way integers are mapped to their binary representations.

More information

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created.

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created. + Inheritance + Inheritance Classes that we design in Java can be used to model some concept in our program. For example: Pokemon a = new Pokemon(); Pokemon b = new Pokemon() Sometimes we need to create

More information

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS

More information

Australian researchers develop typeface they say can boost memory, that could help students cramming for exams.

Australian researchers develop typeface they say can boost memory, that could help students cramming for exams. Font of all knowledge? Australian researchers develop typeface they say can boost memory, that could help students cramming for exams. About 400 university students took part in a study that found a small

More information

CSC207H: Software Design. Java + OOP. CSC207 Winter 2018

CSC207H: Software Design. Java + OOP. CSC207 Winter 2018 Java + OOP CSC207 Winter 2018 1 Why OOP? Modularity: code can be written and maintained separately, and easily passed around the system Information-hiding: internal representation hidden from the outside

More information

: Intro Programming for Scientists and Engineers Assignment 1: Turtle Graphics

: Intro Programming for Scientists and Engineers Assignment 1: Turtle Graphics Assignment 1: Turtle Graphics Page 1 600.112: Intro Programming for Scientists and Engineers Assignment 1: Turtle Graphics Peter H. Fröhlich phf@cs.jhu.edu Joanne Selinski joanne@cs.jhu.edu Due Date: Wednesdays

More information

Introduction to Java Programming

Introduction to Java Programming Boaz Kantor Introduction to Computer Science, Fall semester 2009-2010 IDC Herzliya Welcome, geeks! Introduction to Java Programming Plan for today: 1. Before we begin.. 2. What is Java? 3. How to program?

More information

Software Design and Analysis for Engineers

Software Design and Analysis for Engineers Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 2 Date:

More information

Fall 2017 Discussion 7: October 25, 2017 Solutions. 1 Introduction. 2 Primitives

Fall 2017 Discussion 7: October 25, 2017 Solutions. 1 Introduction. 2 Primitives CS 6A Scheme Fall 207 Discussion 7: October 25, 207 Solutions Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write

More information

Types and Classes. I II From predefined (simple) and user-defined (composite) types via Abstract data types

Types and Classes. I II From predefined (simple) and user-defined (composite) types via Abstract data types Types and Classes I II From predefined (simple) and user-defined (composite) types via Abstract data types to Classes Type compatibility Subtyping subclassing Polymorphism revisited Subtype polymorphism

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #06 Loops: Operators

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #06 Loops: Operators Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #06 Loops: Operators We have seen comparison operators, like less then, equal to, less than or equal. to and

More information

CSI33 Data Structures

CSI33 Data Structures Outline Department of Mathematics and Computer Science Bronx Community College September 6, 2017 Outline Outline 1 Chapter 2: Data Abstraction Outline Chapter 2: Data Abstraction 1 Chapter 2: Data Abstraction

More information

Slide 1 CS 170 Java Programming 1 Multidimensional Arrays Duration: 00:00:39 Advance mode: Auto

Slide 1 CS 170 Java Programming 1 Multidimensional Arrays Duration: 00:00:39 Advance mode: Auto CS 170 Java Programming 1 Working with Rows and Columns Slide 1 CS 170 Java Programming 1 Duration: 00:00:39 Create a multidimensional array with multiple brackets int[ ] d1 = new int[5]; int[ ][ ] d2;

More information

CS 1803 Pair Homework 3 Calculator Pair Fun Due: Wednesday, September 15th, before 6 PM Out of 100 points

CS 1803 Pair Homework 3 Calculator Pair Fun Due: Wednesday, September 15th, before 6 PM Out of 100 points CS 1803 Pair Homework 3 Calculator Pair Fun Due: Wednesday, September 15th, before 6 PM Out of 100 points Files to submit: 1. HW3.py This is a PAIR PROGRAMMING Assignment: Work with your partner! For pair

More information

Introduction to Object- Oriented Programming

Introduction to Object- Oriented Programming Introduction to Object- Oriented Programming Reusing this material This work is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_us

More information

Call Stack Management

Call Stack Management Call Stack Management Clément Béra with Stéphane Ducasse Square Bracket tutorials January 23, 2018 master @ 9343841* Copyright 2017 by Clément Béra with Stéphane Ducasse. The contents of this book are

More information

Binary Search. Roland Backhouse February 5th, 2001

Binary Search. Roland Backhouse February 5th, 2001 1 Binary Search Roland Backhouse February 5th, 2001 Outline 2 An implementation in Java of the card-searching algorithm is presented. Issues concerning the correctness of the implementation are raised

More information

Basic Scheme February 8, Compound expressions Rules of evaluation Creating procedures by capturing common patterns

Basic Scheme February 8, Compound expressions Rules of evaluation Creating procedures by capturing common patterns Basic Scheme February 8, 2007 Compound expressions Rules of evaluation Creating procedures by capturing common patterns Previous lecture Basics of Scheme Expressions and associated values (or syntax and

More information

Inequalities and you 3

Inequalities and you 3 Inequalities and you 3 NAME: This worksheet will provide practice for solving absolute value, polynomial, and rational inequalities. We will also work on understanding why the procedures work. We will

More information

The high-level language has a series of primitive (builtin) types that we use to signify what s in the memory

The high-level language has a series of primitive (builtin) types that we use to signify what s in the memory Types and Variables We write code like: int x = 512; int y = 200; int z = x+y; The high-level language has a series of primitive (builtin) types that we use to signify what s in the memory The compiler

More information

Professor: Sana Odeh Lecture 3 Python 3.1 Variables, Primitive Data Types & arithmetic operators

Professor: Sana Odeh Lecture 3 Python 3.1 Variables, Primitive Data Types & arithmetic operators 1 Professor: Sana Odeh odeh@courant.nyu.edu Lecture 3 Python 3.1 Variables, Primitive Data Types & arithmetic operators Review What s wrong with this line of code? print( He said Hello ) What s wrong with

More information

4.3, Math 1410 Name: And now for something completely different... Well, not really.

4.3, Math 1410 Name: And now for something completely different... Well, not really. 4.3, Math 1410 Name: And now for something completely different... Well, not really. How derivatives affect the shape of a graph. Please allow me to offer some explanation as to why the first couple parts

More information

VARIABLES AND TYPES CITS1001

VARIABLES AND TYPES CITS1001 VARIABLES AND TYPES CITS1001 Scope of this lecture Types in Java the eight primitive types the unlimited number of object types Values and References The Golden Rule Primitive types Every piece of data

More information

Lecture 25: Other Number Systems

Lecture 25: Other Number Systems Lecture 25: Other Number Systems Today s Goals Learn about Gray Codes Use scaled binary numbers Learn the IEEE floating point number format Gray Codes Rotational Position Encoded with Standard Binary Gray

More information