The Evolving Search for Effective C++

Size: px
Start display at page:

Download "The Evolving Search for Effective C++"

Transcription

1 The Evolving Search for Effective C++ Scott Meyers Image Florian Wizorek. Used with permission. Last Revised: 12/5/ Polar Bear Image: Polar Bear Cub, flickr Slide 2

2 Information Information Information Information Information Information Information Information

3 Effective Effective Books 1. Keep Items short. 2. Put Item titles in the imperative. 3. Make Item advice as specific as possible 4. Word Item titles carefully. 5. Prefer guidelines that say what to do over what not to do. 6. Tell the truth and nothing but the truth, but not necessarily the whole truth. 7. Back Items with solid technical arguments. 8. End each Item with a summary of its advice. 9. Know how to modulate the stridency of Item titles. 10. Cross reference liberally. 11. Minimize use of footnotes. 12. Be consistent when referring to yourself and your readers. 13. Seek out ruthless pre-publication reviewers. Slide 5 Case Study Item 42 Slide 6

4 Candidate Guideline Prefer emplacement to insertion. Slide 7 Emplacement vs. Insertion for Container<T> Insertion functions take parameters of type (reference to) T: push_front(t) push_back(t) insert(position, T) insert_after(position, T) Emplacement functions take constructor arguments for T: emplace_front(ctor args for T) emplace_back(ctor args for T) emplace(position, ctor args for T) emplace_hint(position, ctor args for T) emplace_after(position, ctor args for T) In std::vector<std::string>: void push_back(const std::string&); void push_back(std::string&&); template<class... Args> void emplace_back(args&&...); Slide 8

5 The Case for Emplacement Avoids temporary creation: std::vector<std::string> vs; vs.push_back("xyzzy"); vs.emplace_back("xyzzy"); // create temp // move temp into vector // destroy temp // create string inside vector Slide 9 The Case for Emplacement For copyable/movable types, emplacement can do it all! std::string queenofdisco("donna Summer"); vs.push_back(queenofdisco); // copy-construct queenofdisco // at end of vs vs.emplace_back(queenofdisco); // ditto Ergo: Prefer emplacement to insertion. Should never be slower, should sometimes be faster. Right? Slide 10

6 Reality Check Howard Hinnant s experiments adding a T object to front of 3-element std::vector<t>. Two cases: Reallocation unnecessary (capacity > size). Reallocation required (capacity == size). For each case: Add lvalue. Add xvalue (e.g., std::move(existing object)). Add prvalue (e.g., T(ctor args)). Three std::vector implementations: libc++ (LLVM) libstdc++ (Gnu) VS2013 (Microsoft) Slide 11 Reallocation Unnecessary Results (Functions Executed per insert/emplace) Lvalue Xvalue Prvalue I E I I - - I - - libc++ libstdc++ VS2013 libc++ libstdc++ VS2013 libc++ libstdc++ VS2013 Reallocation Required - - I Slide 12

7 Observations Much variation per scenario or implementation: Number of functions executed. Whether insertion or emplacement executes fewer functions. Whether emplacement equivalent to insertion. Slide 13 Insight Construction fundamentally different from assignment: Construction can take arbitrary types. Assignment generally takes same-type argument. class Widget { public: Widget(int x, double d, std::string s); // arbitrary types Widget& operator=(const Widget&); // signatures per Widget& operator=(widget&&); // convention }; Seeming exceptions may not really be exceptional: template<typename chart> // simplified version class basic_string { public: basic_string& operator=(const chart* s); // specified as... // *this = basic_string(s) }; Slide 14

8 Insight Assignment for T generally requires argument of type T. Typically negates emplacement s performance advantage! So emplace_back may beat push_back, ditto for emplace_front, but no reason to expect emplace to normally beat insert. construction construction assignment Slide 15 Conclusions So Far Emplacement into a Container<T> a potential win only when: Object added to container via construction, not assignment. For std::vector/std::deque, true only for push_back/push_front. Multiple arguments passed. Avoids need to create temporary to satisfy insertion interface. Single argument passed not of type T. No reason to expect emplacing a T to beat inserting a T. Slide 16

9 CWUK = Containers with Unique Keys std::set<k>, std::unordered_set<k> have nodes holding K objects. CWUK Containers std::map<k, V>, std::unordered_map<k, V> have nodes holding std::pair<const K, V> objects. K (K,V) K K K K K (K,V) (K,V) (K,V) (K,V) (K,V) K K K K (K,V) (K,V) (K,V) (K,V) Slide 17 CWUK Container Declarations template <class Key, class Compare = less<key>, class Allocator = allocator<key> > class set; template <class Key, class Hash = hash<key>, class Pred = std::equal_to<key>, class Alloc = std::allocator<key> > class unordered_set; template <class Key, class T, class Compare = less<key>, class Allocator = allocator<pair<const Key, T> > > class map; From C++14 Standard template <class Key, class T, class Hash = hash<key>, class Pred = std::equal_to<key>, class Alloc = std::allocator<std::pair<const Key, T> > > class unordered_map; Slide 18

10 CWUK Containers Default same value comparisons are homogeneous: std::less<k> compares two K objects. std::equal_to<k> compares two K objects. Emplacement must create a K for comparison, even if value to be added is a duplicate. If a duplicate, created K must then be destroyed. No reason to expect emplacement to run faster than insertion: A temp object likely created to satisfy comparison function interface. Slide 19 CWUK Container Lookup Behavior Insertion: 1. Compare parameter key to keys in container. 2. If parameter key isn t in container, a. Dynamically allocate new node. b. Copy or move parameter key into new node. c. Link new node into container. For duplicate keys: No node allocation/deallocation. No copying or moving parameter key. Emplacement: 1. Dynamically allocate memory for new node. 2. Construct key in new node. 3. Compare new node key to keys in container. 4. If new node key isn t in container, a. link new node into container. else b. Destroy new node. For duplicate keys: Node allocated and deallocated. Key in new node constructed + destructed. Slide 20

11 Additional Conclusion Emplacement into a Container<T> a likely lose (vis-a-vis insertion) when: Container rejects duplicate keys and duplicate keys aren t uncommon. Slide 21 Consider: std::vector<std::regex> regexes; The Conversion Consideration regexes.push_back(nullptr); regexes.emplace_back(nullptr); Huh? // error! nullptr isn't a std::regex // and there's no implicit conversion // compiles! Slide 22

12 The Constructor in Question template <class chart, class traits = regex_traits<chart> > class basic_regex {... explicit basic_regex(const chart* p, flag_type f = regex_constants::ecmascript);... }; Requires: p shall not be a null pointer. From C++14 Standard Hence: regexes.emplace_back(nullptr); // UB! (Precondition violation) But why does emplace_back compile when push_back doesn t? Slide 23 Direct vs. Copy Initialization Direct initialization may call explicit constructors. Copy initialization can t. 8.5/15-16 How know which used where? Memorize :-( std::regex r1(nullptr); std::regex r2{nullptr}; std::regex r3 = nullptr; // compiles! Direct initialization // may call explicit ctor // ditto // error! Copy initialization // can't call explicit ctor Slide 24

13 Direct vs. Copy Initialization Emplacement functions use direct initialization: regexes.emplace_back(nullptr); Insertion functions use copy initialization: regexes.push_back(nullptr); // compiles! // error! Slide 25 Emplacement less safe than insertion. May invoke explicit constructors. One More Conclusion Slide 26

14 Performance: Summary Emplacement can reduce number of constructions/destructions. In theory, emplacement never costs more than insertion. In practice, emplacement often does. Emplacement most likely a win when: Value being added is constructed into the container, not assigned. Argument(s) passed are different from T (for Container<T>). Value to be added unlikely to be rejected as a duplicate. Safety: Insertion respects explicit constructors, emplacement doesn t. Slide 27 Guideline Prefer emplacement to insertion. Many thanks to: Stephan T. Lavavej Howard Hinnant Michael Winterberg Slide 28

15 Intermission Promulgation Promulgation Promulgation Promulgation Promulgation Promulgation Promulgation Promulgation

16 Promulgating the Message 1991: Writing Presentations 2014: Writing Presentations Video Image: Loudspeakers, Pelle flickr Slide 31 Black ink on white, fixed-size pages. The Writing Landscape: 1991 Slide 32

17 Flashback to my TOC 2009 talk: The Writing Landscape: 2014 Slide 33

18 Authoring Challenges in a Multiplatform World The Vision and Why Authors Matter What's in here Printed book Computer screen Portable electronic book reader Manuscript from author Multipurpose portable device affects how easy and effective these transitions are Audio device Copyrighted material, all rights reserved. Slide 3 The Goal Platform-agnostic manuscript from author. Facilitates: Exploitation of platforms' strengths and capabilities. Accommodation of their weaknesses. Copyrighted material, all rights reserved. Slide 4 Copyrighted material, all rights reserved.

19 Authoring Challenges in a Multiplatform World Some Platform Variations Color? Display Size Diagrams, Graphs, Tables? Page- Based? Dynamic? Personalizable? Rarely Medium Yes Yes No Typically Big Yes Maybe Yes Maybe Medium Maybe Maybe Yes Maybe with POD In concept In concept Typically Small Yes, but small Maybe Yes In concept Maybe Typically small Maybe No Rarely In concept Copyrighted material, all rights reserved. Slide 5 What Works Poorly Conventional manuscript from author Authors design/write books that are: Static Monochrome Page-based Visible Other formats suffer. Copyrighted material, all rights reserved. Slide 6 Copyrighted material, all rights reserved.

20 Authoring Challenges in a Multiplatform World What may go in a Platform-Agnostic Manuscript? Anything that works in printed form. The usual suspects: Text, diagrams, tables, photographs, etc. In addition: Color Video/Animations Audio Copyrighted material, all rights reserved. Slide 7 Challenge: Adopting New Tools New expository tools: Color, video/animations, audio Authors need to learn: What works where? Why? What doesn t? Why not? As true for novelists as for technical writers. Copyrighted material, all rights reserved. Slide 8 Copyrighted material, all rights reserved.

21 Regarding Color... Legitimate uses (IMO): Code highlighting. Syntax coloring. Diagrams and tables. Visual appeal. Slide 34 Not Everybody Gets It Slide 35

22 The Line Length Problem 64 Slide 36 The Solution? Slide 37

23

24

25 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 43

26 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 44 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 45

27 The Animation Approach E.g., in Sean Parent s C++ Seasoning at GoingNative 2013: Slide 46 The Animation Approach Advantages: Good for live, remote, and asynchronous audiences. Disadvantages: Lots of up-front work. Lots. Inflexible. Slide 47

28 The Solution? Touch-based laser pointer and annotation support? Paul Wagner on using ipad/doceri in the Classroom Slide 48 Take-Aways Base guidelines on thorough analysis and solid technical arguments. Write for modern digital devices. Design live presentations to be recorded.

29 Further Information Automatic Detection of Programming Errors: Initial Thoughts on a lint++, Scott Meyers and Moises Lejter, Proceedings of the 1991 USENIX C++ Conference, April Effective Effective Books, Scott Meyers, The View From Aristeia, 23 January insert vs. emplace, Howard Hinnant, 28 July 2014, Effective Modern C++, Scott Meyers, O Reilly, Authoring Challenges in a Multiplatform World, Scott Meyers, Tools of Change, February The Line-Length Problem, Scott Meyers, The View from Aristeia, 13 March clang-format: Automatic formatting for C++, Daniel Jasper, 2013 European LLVM Conference, 29 April C++ Seasoning, Sean Parent, GoingNative 2013, 4 September Paul Wagner on using ipad/doceri in the Classroom, YouTube, 22 November Slide 50 Use discount code AUTHD at oreilly.com for 40%-50% off!

30 Licensing Information Scott Meyers licenses materials for this and other training courses for commercial or personal use. Details: Commercial use: Personal use: Courses currently available for personal use include: Slide 52 About Scott Meyers Scott Meyers is one of the world s foremost authorities on C++. His web site, provides information on: Technical training services Upcoming presentations Books, articles, online videos, etc. Professional activities blog Slide 53

Software Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009

Software Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Software Engineering Concepts: Testing Simple Class Example continued Pointers & Dynamic Allocation CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Glenn G. Chappell Department

More information

CORBA Programming with TAOX11. The C++11 CORBA Implementation

CORBA Programming with TAOX11. The C++11 CORBA Implementation CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy

More information

Variable Base Interface

Variable Base Interface Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed

More information

7.1 Our Current Model

7.1 Our Current Model Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.

More information

Object Oriented Software Design II

Object Oriented Software Design II Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

The Universal Reference/Overloading Collision Conundruim

The Universal Reference/Overloading Collision Conundruim The materials shown here differ from those I used in my presentation at the Northwest C++ Users Group. Compared to the materials I presented, these materials correct a variety of technical errors whose

More information

In this topic we discuss a number of design decisions you can make to help ensure your course is accessible to all users.

In this topic we discuss a number of design decisions you can make to help ensure your course is accessible to all users. Accessible Course Design As a course designer you hold a pivotal role in ensuring that Learning Environment is accessible to all users, regardless of their learning needs. It is your content that students

More information

Sequences in the C++ STL

Sequences in the C++ STL CS 311 Data Structures and Algorithms Lecture Slides Wednesday, November 4, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005 2009 Glenn

More information

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

More information

Linked Lists: Implementation Sequences in the C++ STL

Linked Lists: Implementation Sequences in the C++ STL Linked Lists: Implementation Sequences in the C++ STL continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, April 1, 2009 Glenn G. Chappell Department of Computer Science University

More information

How To Develop An Application

How To Develop An Application What is Application Lifecycle Management? David Chappell Sponsored by Microsoft Corporation Copyright 2014 Chappell & Associates Defining application lifecycle management (ALM) isn t easy. Different people

More information

For questions regarding use of the NSF Logo, please email nsf-logo@nsf.gov

For questions regarding use of the NSF Logo, please email nsf-logo@nsf.gov Please find enclosed the NSF guidelines for logo usage. It is imperative to adhere to these standards so that we can increase the public s awareness of who NSF is and what we can do for them. To protect

More information

N3458: Simple Database Integration in C++11

N3458: Simple Database Integration in C++11 N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München neumann@in.tum.de 2012-10-22 Many applications make use of relational database to store and query their data. However,

More information

HOW TO USE DATA VISUALIZATION TO WIN OVER YOUR AUDIENCE

HOW TO USE DATA VISUALIZATION TO WIN OVER YOUR AUDIENCE HOW TO USE DATA VISUALIZATION TO WIN OVER YOUR AUDIENCE + TABLE OF CONTENTS HOW DATA SUPPORTS YOUR MESSAGE 1 Benefits of Data Visualization WHEN TO USE DATA VISUALIZATION HOW TO FIND THE STORY IN YOUR

More information

Why you shouldn't use set (and what you should use instead) Matt Austern

Why you shouldn't use set (and what you should use instead) Matt Austern Why you shouldn't use set (and what you should use instead) Matt Austern Everything in the standard C++ library is there for a reason, but it isn't always obvious what that reason is. The standard isn't

More information

C Compiler Targeting the Java Virtual Machine

C Compiler Targeting the Java Virtual Machine C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the

More information

C++ Overloading, Constructors, Assignment operator

C++ Overloading, Constructors, Assignment operator C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions

More information

OpenCL Static C++ Kernel Language Extension

OpenCL Static C++ Kernel Language Extension OpenCL Static C++ Kernel Language Extension Document Revision: 04 Advanced Micro Devices Authors: Ofer Rosenberg, Benedict R. Gaster, Bixia Zheng, Irina Lipov December 15, 2011 Contents 1 Overview... 3

More information

Support for Embedded Programming in C++11 and C++14

Support for Embedded Programming in C++11 and C++14 Support for Embedded Programming in C++11 and C++14 Scott Meyers, Ph.D. Photo: Craig Wyzlk @ flickr Copyrighted material, all rights reserved. Last Revised: 10/24/14 Features New in C++11 (Incomplete List)

More information

Moving from CS 61A Scheme to CS 61B Java

Moving from CS 61A Scheme to CS 61B Java Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you

More information

A Short Course in Logic Example 8

A Short Course in Logic Example 8 A Short ourse in Logic xample 8 I) Recognizing Arguments III) valuating Arguments II) Analyzing Arguments valuating Arguments with More than one Line of Reasoning valuating If then Premises Independent

More information

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage

More information

C++ INTERVIEW QUESTIONS

C++ INTERVIEW QUESTIONS C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get

More information

New Generation of Software Development

New Generation of Software Development New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 tyehon@cs.ubc.ca ABSTRACT In this paper, I present a picture of what software development

More information

The Secret Formula for Webinar Presentations that Work Every Time

The Secret Formula for Webinar Presentations that Work Every Time The Secret Formula for Webinar Presentations that Work Every Time by Gihan Perera www.webinarsmarts.com Sponsored by In an online presentation, your slides aren t visual aids; they ARE the visuals. One

More information

vector vec double # in # cl in ude <s ude tdexcept> tdexcept> // std::ou std t_of ::ou _range t_of class class V Vector { ector {

vector vec double # in # cl in ude <s ude tdexcept> tdexcept> // std::ou std t_of ::ou _range t_of class class V Vector { ector { Software Design (C++) 3. Resource management and exception safety (idioms and technicalities) Juha Vihavainen University of Helsinki Preview More on error handling and exceptions checking array indices

More information

sqlpp11 - An SQL Library Worthy of Modern C++

sqlpp11 - An SQL Library Worthy of Modern C++ 2014-09-11 Code samples Prefer compile-time and link-time errors to runtime errors Scott Meyers, Effective C++ (2nd Edition) Code samples Let s look at some code String based In the talk, we looked at

More information

Java CPD (I) Frans Coenen Department of Computer Science

Java CPD (I) Frans Coenen Department of Computer Science Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials

More information

CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing

CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects

More information

Visualization Quick Guide

Visualization Quick Guide Visualization Quick Guide A best practice guide to help you find the right visualization for your data WHAT IS DOMO? Domo is a new form of business intelligence (BI) unlike anything before an executive

More information

How To Ask For A Referral Online Without Being Afraid

How To Ask For A Referral Online Without Being Afraid The Art of the Ask How to Overcome the Fear of Asking for Referrals 2013 Copyright Constant Contact, Inc. 12-3149 BEST PRACTICES GUIDE SOCIAL MEDIA MARKETING When you think about your main source of new

More information

C++ Programming Language

C++ Programming Language C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract

More information

Coding conventions and C++-style

Coding conventions and C++-style Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate

More information

CS193j, Stanford Handout #10 OOP 3

CS193j, Stanford Handout #10 OOP 3 CS193j, Stanford Handout #10 Summer, 2003 Manu Kumar OOP 3 Abstract Superclass Factor Common Code Up Several related classes with overlapping code Factor common code up into a common superclass Examples

More information

Pristine s Day Trading Journal...with Strategy Tester and Curve Generator

Pristine s Day Trading Journal...with Strategy Tester and Curve Generator Pristine s Day Trading Journal...with Strategy Tester and Curve Generator User Guide Important Note: Pristine s Day Trading Journal uses macros in an excel file. Macros are an embedded computer code within

More information

LINKED DATA STRUCTURES

LINKED DATA STRUCTURES LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

More information

A Guide to Sharing Architecture

A Guide to Sharing Architecture Salesforce, Spring 16 @salesforcedocs Last updated: January 18, 2016 Copyright 2000 2016 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc., as are other

More information

Making TIFF and EPS files from Drawing, Word Processing, PowerPoint and Graphing Programs

Making TIFF and EPS files from Drawing, Word Processing, PowerPoint and Graphing Programs Making TIFF and EPS files from Drawing, Word Processing, PowerPoint and Graphing Programs In the worlds of electronic publishing and video production programs, the need for TIFF or EPS formatted files

More information

CHAPTER 4 ESSENTIAL DATA STRUCTRURES

CHAPTER 4 ESSENTIAL DATA STRUCTRURES CHAPTER 4 ESSENTIAL DATA STRUCTURES 72 CHAPTER 4 ESSENTIAL DATA STRUCTRURES In every algorithm, there is a need to store data. Ranging from storing a single value in a single variable, to more complex

More information

Promoting Your Location Platform

Promoting Your Location Platform Promoting Your Location Platform A Change Management Kit www.esri.com/changekit Publication Date: November 23, 2015 Esri: Promoting Your Location Platform 1 What is the Change Management Kit? The launch

More information

16.1 DataFlavor. 16.1.1 DataFlavor Methods. Variables

16.1 DataFlavor. 16.1.1 DataFlavor Methods. Variables In this chapter: DataFlavor Transferable Interface ClipboardOwner Interface Clipboard StringSelection UnsupportedFlavorException Reading and Writing the Clipboard 16 Data Transfer One feature that was

More information

30- Day List Building Plan for a blogger/affiliate marketer

30- Day List Building Plan for a blogger/affiliate marketer 30- Day List Building Plan for a blogger/affiliate marketer Day What to 1 If you have been using FeedBurner, switch to an service provider. If you have been using nothing, choose an provider. If you already

More information

QuickTimePro creating movies from frames

QuickTimePro creating movies from frames Biochem 660 2008 179 QuickTimePro creating movies from frames Appleʼs QuickTime Pro is available on Macintosh and Windows platforms. The free version is downloadable from http://www.apple.com/quicktime/

More information

JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,

More information

Intermediate PowerPoint

Intermediate PowerPoint Intermediate PowerPoint Charts and Templates By: Jim Waddell Last modified: January 2002 Topics to be covered: Creating Charts 2 Creating the chart. 2 Line Charts and Scatter Plots 4 Making a Line Chart.

More information

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 1 Goals of the Lecture Present an introduction to Objective-C 2.0 Coverage of the language will be INCOMPLETE

More information

Splicing Maps and Sets

Splicing Maps and Sets Document number: N3586 Date: 2013-03-17 Project: Programming Language C++ Reference: N3485 Reply to: Alan Talbot cpp@alantalbot.com Howard Hinnant howard.hinnant@gmail.com Related Documents Splicing Maps

More information

Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.

Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved. The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret

More information

Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions

Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions COMP209 Object Oriented Programming Designing Classes 2 Mark Hall Programming by Contract (adapted from slides by Mark Utting) Preconditions Postconditions Class invariants Programming by Contract An agreement

More information

Python, C++ and SWIG

Python, C++ and SWIG Robin Dunn Software Craftsman O Reilly Open Source Convention July 21 25, 2008 Slides available at http://wxpython.org/oscon2008/ Python & C++ Comparisons Each is a general purpose programming language,

More information

CIM Level 4 Certificate in Professional Marketing

CIM Level 4 Certificate in Professional Marketing CIM Level 4 Certificate in Professional Marketing Digital Marketing (2103) December 2015 Assignment The assignment comprises SIX compulsory tasks Task 1 is worth 5 marks Task 2 is worth 15 marks Task 3

More information

Creating a Jeopardy Review Game using PowerPoint software.

Creating a Jeopardy Review Game using PowerPoint software. DKeane MSMC ED 5700 ICP - Lesson Plan Using Technology in the K-8 Science Curriculum Creating a Jeopardy Review Game using PowerPoint software. (Sample Performance objectives and questions are based on

More information

Website Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals.

Website Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals. Website Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals.com Why have a website? If you re busier than you d like to be

More information

6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang

6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang 6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation

More information

So today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02)

So today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02) Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #39 Search Engines and Web Crawler :: Part 2 So today we

More information

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111 Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo

More information

The Challenge of Helping Adults Learn: Principles for Teaching Technical Information to Adults

The Challenge of Helping Adults Learn: Principles for Teaching Technical Information to Adults The Challenge of Helping Adults Learn: Principles for Teaching Technical Information to Adults S. Joseph Levine, Ph.D. Michigan State University levine@msu.edu One of a series of workshop handouts made

More information

Unified Communications Using Microsoft Office Live Meeting 2007

Unified Communications Using Microsoft Office Live Meeting 2007 Unified Communications Using Microsoft Office Live Meeting 2007 Text version of online course. Contents Unified Communications... 1 About Microsoft Office Live Meeting 2007... 3 Copyright Information...

More information

Learning From Lectures:

Learning From Lectures: Learning From Lectures: A Guide to University Learning Learning Services University of Guelph Table of Contents Student Guide:... 3 University Lectures... 3 Preparing for Lectures... 4 Laptop Pros & Cons...

More information

Windows SharePoint Services Operations Guide. Robert Crane Computer Information Agency http://www.ciaops.com

Windows SharePoint Services Operations Guide. Robert Crane Computer Information Agency http://www.ciaops.com Windows SharePoint Services Operations Guide By Robert Crane Computer Information Agency http://www.ciaops.com Terms This Windows SharePoint Services Operations Guide (WSSOPS) from the Computer Information

More information

I ntroduction. Accessing Microsoft PowerPoint. Anatomy of a PowerPoint Window

I ntroduction. Accessing Microsoft PowerPoint. Anatomy of a PowerPoint Window Accessing Microsoft PowerPoint To access Microsoft PowerPoint from your home computer, you will probably either use the Start menu to select the program or double-click on an icon on the Desktop. To open

More information

Management Information System Prof. B. Mahanty Department of Industrial Engineering & Management Indian Institute of Technology, Kharagpur

Management Information System Prof. B. Mahanty Department of Industrial Engineering & Management Indian Institute of Technology, Kharagpur (Refer Slide Time: 00:54) Management Information System Prof. B. Mahanty Department of Industrial Engineering & Management Indian Institute of Technology, Kharagpur Lecture - 18 Data Flow Diagrams - III

More information

WHAT IS IT? WHO IS IT FOR? WHY?

WHAT IS IT? WHO IS IT FOR? WHY? WHAT IS IT? Zoho Creator is an online platform that allows you to build custom applications for any business need, all by yourself. together - just the application you need. To make it work the way you

More information

Record-Level Access: Under the Hood

Record-Level Access: Under the Hood Record-Level Access: Under the Hood Salesforce, Summer 15 @salesforcedocs Last updated: May 20, 2015 Copyright 2000 2015 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of

More information

CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012

CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012 CS-XXX: Graduate Programming Languages Lecture 25 Multiple Inheritance and Interfaces Dan Grossman 2012 Multiple Inheritance Why not allow class C extends C1,C2,...{...} (and C C1 and C C2)? What everyone

More information

Complete a Relationships Presentation

Complete a Relationships Presentation Complete a Relationships Presentation Speech Tips 1. I am so scared of giving my speech. How do I get over my nervousness? Nervousness is natural. Think of it as a friend rather than an enemy. You need

More information

SQL Server 200x Optimizing Stored Procedure Performance

SQL Server 200x Optimizing Stored Procedure Performance SQL Server 200x Optimizing Stored Procedure Performance Kimberly L. Tripp SQLskills.com Email: Kimberly@SQLskills.com Blog: http://www.sqlskills.com/blogs/kimberly http://www.sqlskills.com Speaker Kimberly

More information

CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators

CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators CS107L Handout 04 Autumn 2007 October 19, 2007 Custom STL-Like Containers and Iterators This handout is designed to provide a better understanding of how one should write template code and architect iterators

More information

Basic Computer Skills Module 4. Introduction to Microsoft PowerPoint 2010

Basic Computer Skills Module 4. Introduction to Microsoft PowerPoint 2010 Basic Computer Skills Module 4 Introduction to Microsoft PowerPoint 2010 Basic Computer Skills Module 4 Introduction to Microsoft PowerPoint 2010 Summary Goal(s): This unit includes lessons on how to use

More information

C++ future. The original English text of an interview with the Russian news organization CNEWS:

C++ future. The original English text of an interview with the Russian news organization CNEWS: The original English text of an interview with the Russian news organization CNEWS: C++ future Soon we will have a new standard for C++. What is going to change in this programming language? What new features

More information

Online Instructional Materials for Universal Web Accessibility

Online Instructional Materials for Universal Web Accessibility Online Instructional Materials for Universal Web Accessibility 2002/2003 TIGERS Grant Final Report (as published in the 2003 EdMedia Conference Proceedings) Candace Egan California State University Fresno

More information

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm

More information

A conversation with Scott Chappell, CMO, Sessions Online Schools of Art and Design

A conversation with Scott Chappell, CMO, Sessions Online Schools of Art and Design A conversation with Scott Chappell, CMO, Sessions Online Schools of Interviewed by: Steven Groves, StevenGroves.com Guy R. Powell, DemandROMI Can you talk to us a little bit about Sessions and what Sessions

More information

THE BENEFITS AND RISKS OF CLOUD PLATFORMS

THE BENEFITS AND RISKS OF CLOUD PLATFORMS THE BENEFITS AND RISKS OF CLOUD PLATFORMS A GUIDE FOR BUSINESS LEADERS DAVID CHAPPELL JANUARY 2011 SPONSORED BY MICROSOFT CORPORATION Cloud platforms are a fundamental part of the move to cloud computing.

More information

Planning for your new web site

Planning for your new web site Planning for your new web site Copyright Vince Yokom 2012 Snoop around Check out your competition Looking around the web at other sites is probably the most important part of the process. It is usually

More information

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio. Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used

More information

Top 5 best practices for creating effective dashboards. and the 7 mistakes you don t want to make

Top 5 best practices for creating effective dashboards. and the 7 mistakes you don t want to make Top 5 best practices for creating effective dashboards and the 7 mistakes you don t want to make p2 Financial services professionals are buried in data that measure and track: relationships and processes,

More information

recursion, O(n), linked lists 6/14

recursion, O(n), linked lists 6/14 recursion, O(n), linked lists 6/14 recursion reducing the amount of data to process and processing a smaller amount of data example: process one item in a list, recursively process the rest of the list

More information

Basic Object-Oriented Programming in Java

Basic Object-Oriented Programming in Java core programming Basic Object-Oriented Programming in Java 1 2001-2003 Marty Hall, Larry Brown http:// Agenda Similarities and differences between Java and C++ Object-oriented nomenclature and conventions

More information

Using Historical Probabilities to Trade the Opening Gap

Using Historical Probabilities to Trade the Opening Gap Using Historical Probabilities to Trade the Opening Gap Scott Andrews Hosted by Hamzei Analytics November 10, 2010 Disclaimer This material is intended for educational purposes only and is believed to

More information

An Economic Perspective of! Disk vs. Flash Media! in Archival Storage Preeti Gupta Avani Wildani Ethan L. Miller! Daniel Rosenthal Ian F. Adams,!

An Economic Perspective of! Disk vs. Flash Media! in Archival Storage Preeti Gupta Avani Wildani Ethan L. Miller! Daniel Rosenthal Ian F. Adams,! An Economic Perspective of Disk vs. Flash Media in Archival Storage Preeti Gupta Avani Wildani Ethan L. Miller Daniel Rosenthal Ian F. Adams, Christina Strong Andy Hospodor What s the trouble with media

More information

Academic presentations

Academic presentations ST810 March 17, 2008 Outline Types of talks Organization Preparing slides Presentation tips Taking questions Types of talks: Conference presentation Usually 15-20 minutes for contributed talks. Maybe time

More information

Teaching Online at UD Best Practices Guide

Teaching Online at UD Best Practices Guide Teaching Online at UD Best Practices Guide Version 1.0 April 14, 2009, Updated January 26, 2015 Ryan C. Harris Learning Teaching Center UDit Curriculum Innovation and E Learning Delivering Quality Online

More information

Consulting. Personal Attention, Expert Assistance

Consulting. Personal Attention, Expert Assistance Consulting Personal Attention, Expert Assistance 1 Writing Better SQL Making your scripts more: Readable, Portable, & Easily Changed 2006 Alpha-G Consulting, LLC All rights reserved. 2 Before Spending

More information

0-7803-5643-8/99/$10.00 1999 IEEE

0-7803-5643-8/99/$10.00 1999 IEEE Design of a Web-Based Education Environment Session 12a3 Thomas G. Cleaver and Robert L. Toole Department of Electrical Engineering University of Louisville Louisville, KY 40292 Abstract - Delivery of

More information

Chapter 12. The Product Coordination Team

Chapter 12. The Product Coordination Team Chapter 12. The Product Coordination Team In theory, theory and practice are the same. In practice, they are different. Attributed to many. In This Chapter This chapter describes the challenge of teams

More information

Font and color choices are all made from the Message or Format Text tab on the ribbon.

Font and color choices are all made from the Message or Format Text tab on the ribbon. Outlook 2010: Contents Outlook 2010:... 1 Email That Everyone Can Read... 1 Fonts and Colors... 1 What Format Should I Choose?... 2 How to Add Structure and Meaning to a Longer Email... 2 How to Add Images

More information

Pattern Insight Clone Detection

Pattern Insight Clone Detection Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology

More information

WINDOWS AZURE EXECUTION MODELS

WINDOWS AZURE EXECUTION MODELS WINDOWS AZURE EXECUTION MODELS Windows Azure provides three different execution models for running applications: Virtual Machines, Web Sites, and Cloud Services. Each one provides a different set of services,

More information

A Modern Sales Roadmap. 7 best practices to drive sales success. tellwise

A Modern Sales Roadmap. 7 best practices to drive sales success. tellwise A Modern Sales Roadmap 7 best practices to drive sales success tellwise Introduction Whether you re an inside sales rep or the Chief Sales Officer (CSO), you know sales is a demanding field, with countless

More information

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014 CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections

More information

Adding emphasis to a presentation in PowerPoint 2010 and 2013 for Windows

Adding emphasis to a presentation in PowerPoint 2010 and 2013 for Windows Adding emphasis to a presentation in PowerPoint 2010 and 2013 for Windows This document introduces technique to add interest to your presentation using graphics, audio and video. More detailed training

More information

Customer Referral Programs A How-To Guide to Help You Generate Better Sales Leads

Customer Referral Programs A How-To Guide to Help You Generate Better Sales Leads Customer Referral Programs A How-To Guide to Help You Generate Better Sales Leads Whatare Customer Referral Programs? Customer referral programs are a simple, low cost and effective marketing strategy,

More information

Hypercosm. Studio. www.hypercosm.com

Hypercosm. Studio. www.hypercosm.com Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks

More information

Chapter 6: Project Planning & Production

Chapter 6: Project Planning & Production AIM Your Project with Flash: Chapter 6 - Project Planning and Production 105 Chapter 6: Project Planning & Production After completing this module, you ll be able to: plan a Flash project. consider design

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

Data Visualization Best Practice. Sophie Sparkes Data Analyst

Data Visualization Best Practice. Sophie Sparkes Data Analyst Data Visualization Best Practice Sophie Sparkes Data Analyst http://graphics.wsj.com/infectious-diseases-and-vaccines/ http://blogs.sas.com/content/jmp/2015/03/05/graph-makeover-measles-heat-map/ http://graphics.wsj.com/infectious-diseases-and-vaccines/

More information