About Double Dispatch
|
|
- Horace Griffin
- 5 years ago
- Views:
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.
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 informationLearning 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 informationIterators. 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 informationAn 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 informationAbout 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 informationAn 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 informationVoyage. 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 informationSeaside: 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 informationPharo 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 informationPowerful 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 informationDesign 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 informationCS-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 informationUnit: 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 informationCS558 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 informationNeoJSON. 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 informationCS558 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 informationSCHEME 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 information2. 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 informationBack 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 informationCS558 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 informationLab - 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 informationCOP 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 informationIntro. 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 informationLecture 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 information6.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 informationCSC324 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 informationModule 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 informationChapter 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 informationECE 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 informationExpressions 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 information6.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 informationRECURSION, 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 informationAgenda 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 informationSCHEME 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 informationCSI33 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 informationQUIZ. 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 informationExpressions 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 informationProgramming 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 informationSCHEME 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 informationType 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.2/23 Type-checking functions Aspects: Overview of checks 6, 7 Declaration header Declaration
More informationLecture 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 informationLanguage-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 informationObject 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 informationO-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 informationLesson 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 informationFun 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 informationCS121/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 informationLecture 20: templates
CIS 330:! / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 20:
More information2. 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 informationWhy 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 informationWELCOME! (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 informationImplementing 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 informationRECURSION, 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 informationOutline. 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.
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 informationHaskell 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)
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 informationCS304 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 informationDerived 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 informationConcepts 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 informationObject-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 information1 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 informationLesson 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 informationCompiler 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 informationIntroduction 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 informationSYMMETRY 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 informationMULTIPLE 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)
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 informationCISC-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 informationIntroduction. 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 informationEnvironment 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 informationSpring 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 informationObjects 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 informationBASIC 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 informationList 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 informationExploring 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 + 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 informationCS1622. 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 informationAustralian 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 informationCSC207H: 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
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 informationIntroduction 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 informationSoftware 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 informationFall 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 informationTypes 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 informationIntroduction 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 informationCSI33 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 informationSlide 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 informationCS 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 informationIntroduction 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 informationCall 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 informationBinary 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 informationBasic 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 informationInequalities 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 informationThe 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 informationProfessor: 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 information4.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 informationVARIABLES 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 informationLecture 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