SAS Talk: LAG Lead. The SESUG Informant Volume 9, Issue 2
|
|
- Horace Fields
- 6 years ago
- Views:
Transcription
1 SAS Talk: Dr. Ian Whitlock has been programming largely in SAS since His main interest is in computer languages, particularly SAS, and how the language affects the programming process. He has participated since 1986 in many international, regional, and local SAS User Group meetings. He is also active on SAS-L with some insightful answers to perplexed SAS programmers. Let's talk about the LAG function - its traps (leading to bad code) and pitfalls (preventing good code). When first discovered by the neophyte SAS programmer, they are ecstatic; it is seen as the most useful function because it remembers a variable from the previous observation and conquers. That is the first pitfall - the LAG function has nothing to do with the previous observation. So what is the LAG function? You should picture it as a box, whenever you call the function, a value is removed from the box and returned while the argument is then put into the box. The following example shows that LAG does not mean previous observation. /* Pitfall #1 */ The log then shows: seq=1 l_seq=. seq=2 l_seq=1 seq=3 l_seq=2 The first time in the loop L_SEQ is assigned the value in the box. What is it? Missing, there is no value. What value goes into the box? The value is 1 because that is the value of SEQ. The next time in the loop L_SEQ is assigned 1 because that is the value that was put into the box on the previous iteration of the loop. When we get to the third iteration then L_SEQ is assigned 2 from the last time we put something in the box. Note that there are no observations read and no observations written, so LAG has nothing to do with the previous observation. Now suppose we have a data set W with the variable having the values 1, then 2, then 3. Now consider: set w ( keep = seq ) ; We see the same log as above. Why? The observations of W are read in the standard implicit DO-loop of the SAS DATA step. Now we see where the misconception comes from. The neophyte SAS programmer has missed the fact that it is an artifact of how the data is read in the implicit loop. (Continued on page 2)
2 Page 2 (Continued from page 1) So what? Well it's bad because... By misleading you, it prevents you from doing other useful things with this function By misleading you, it leaves you open to getting caught in various traps By its enchantment, it prevents you from using other tools when they are needed. For the first trap let's return to the first loop but unroll it. /* trap #1 */ seq = 1 ; seq = 2 ; seq = 3 ; Now the log shows: seq=1 l_seq=. seq=2 l_seq=. seq=3 l_seq=. OOPS, why is L_SEQ always missing? If you are in the mode of thinking previous observation, then you have no handle for debugging this problem. If you think, box and last value in the box, then the question to ask is, "How many boxes are there in the code?" Three calls to LAG then three boxes, three first missing values. Each physical statement involving LAG means a new box. But now you are set up for another trap. Consider: The log shows: /* trap #2 */ array a (3) v1 - v3 (1 2 3) ; do i = 1 to dim(a) ; l_a = lag(a[i]) ; put a[i]= l_a= ; v1=1 l_a=. v2=2 l_a=. v3=3 l_a=. What happened? There is only one physical call to LAG, but we still have a problem. On the other hand, we feed three different variables into the one LAG. SAS sets up a box for each physical LAG and each different variable name. And from that you should conclude that you will never see useful SAS code where LAG is called with a literal (Continued on page 3)
3 Page 3 (Continued from page 2) argument. We have explored various traps that become hard to debug unless one is willing to let go of the idea that the LAG is driven by the previous observation. Suppose we have the following code. /* trap or feature */ data w ; do group = 10 to 30 by 10 ; group_seq = group + seq ; output ; if first.group then l_group_seq = lag(group_seq) ; put group= seq= group_seq= l_group_seq= ; Now the log shows: group=10 seq=1 group_seq=11 l_group_seq=. group=10 seq=2 group_seq=12 l_group_seq=. group=10 seq=3 group_seq=13 l_group_seq=. group=20 seq=1 group_seq=21 l_group_seq=11 group=20 seq=2 group_seq=22 l_group_seq=. group=20 seq=3 group_seq=23 l_group_seq=. group=30 seq=1 group_seq=31 l_group_seq=21 group=30 seq=2 group_seq=32 l_group_seq=. group=30 seq=3 group_seq=33 l_group_seq=. It's a trap if you think previous observation, but a feature if you think box (queue) or remember last value loaded. Note that we only pushed something into the box at FIRST.GROUP, hence the lag is returning the value of GROUP_SEQ at the beginning of the previous group. In the first group there was no previous group, so L_GROUP_SEQ is missing. Now what about groups 10 and 20, why did L_GROUP_SEQ become missing? Ah, yes, we forgot to RETAIN L_GROUP. Note that the LAG function remembers, but this does not mean that the variable remembers. One often sees the advice, "Never make LAG conditional." This advice is based on the surprised or trapped feeling one gets by hanging onto the previous observation concept. However, as the above shows, you might have legitimate times when you really do want the effect shown. It is much better to realize you need to understand and control rather than make arbitrary rules to avoid surprises. On the other hand, consider: retain hold_group_seq ; if first.group then l_group_seq = hold_group_seq ; (Continued on page 4)
4 Page 4 (Continued from page 3) Here s the log: if first.group then hold_group_seq = group_seq ; put group= seq= group_seq= hold_group_seq= l_group_seq= ; group=10 seq=1 group_seq=11 hold_group_seq=11 l_group_seq=. group=10 seq=2 group_seq=12 hold_group_seq=11 l_group_seq=. group=10 seq=3 group_seq=13 hold_group_seq=11 l_group_seq=. group=20 seq=1 group_seq=21 hold_group_seq=21 l_group_seq=11 group=20 seq=2 group_seq=22 hold_group_seq=21 l_group_seq=. group=20 seq=3 group_seq=23 hold_group_seq=21 l_group_seq=. group=30 seq=1 group_seq=31 hold_group_seq=31 l_group_seq=21 group=30 seq=2 group_seq=32 hold_group_seq=31 l_group_seq=. group=30 seq=3 group_seq=33 hold_group_seq=31 l_group_seq=. So we have achieved the same thing as we did using the conditional LAG. It is largely a matter of taste and style as to whether you prefer LAG method or the extra retained variable method of achieving this result. On the other hand, it is best to have both patterns available. LAG has its uses, but often the introduction of a second variable declared in a RETAIN statement will be easier to work with. This is the second pitfall to LAG. Now, you should be wiser about LAG than when you began reading this article. If not, you probably lived through these examples in some other form at some point in your career. There are times when you need information from the next observation to be read instead of the previous one. There is no LEAD function. However, there are code patterns that allow you to get information from the next observation. To investigate the possibilities, let's look at the data set W created by the following code. data w ( drop = seq ) ; do group = 1 to 3 ; info + 1 ; output ; Suppose we want the next observation's value of INFO and do not care about crossing GROUP boundaries. The simplest solution is: merge w w ( firstobs = 2 keep = info rename = (info = next_info) ) ; /* no by statement, i.e. a 1-1 merge */ put (_all_) (=) ; (Continued on page 5)
5 Page 5 (Continued from page 4) The log shows: group=1 info=1 next_info=2 group=1 info=2 next_info=3 group=1 info=3 next_info=4 group=2 info=4 next_info=5 group=2 info=5 next_info=6 group=2 info=6 next_info=7 group=3 info=7 next_info=8 group=3 info=8 next_info=9 group=3 info=9 next_info=. Extending this solution to handling BY groups is messy. However, SQL makes it easy to do self joins with different variable names. First, we need a variable like SEQ. If it is not there, it is easy to create. data w ; if first.group then seq = 0 ; seq + 1 ; Now here is the SQL code. proc sql ; select w.*, wnext.info as next_info from w left join w as wnext on w.group = wnext.group and w.seq + 1 = wnext.seq ; quit ; The resulting listing is: group info seq next_info The idea is simple, but the first time I saw it used was by Howard Schreier in one of his fabulous messages on SAS-L at many years ago. To see other points of view, search for LAG or LEAD at In addition to considering LAG, I have had another objective. I have tried to demonstrate how one can get a better understanding of SAS (or any computer language) by looking at very simple easily manufactured test data and asking the question, "What happens with this code?" If you also absorbed that lesson, then you have learned something even more significant than the usage of LAG.
SAS Styles ODS, Right? No Programming! Discover a Professional SAS Programming Style That Will Last a Career
SAS Styles ODS, Right? No Programming! Discover a Professional SAS Programming Style That Will Last a Career Joe Perry, Perry & Associates Consulting, Oceanside, CA The typical, new SAS programmer has
More information(Refer Slide Time 6:48)
Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 8 Karnaugh Map Minimization using Maxterms We have been taking about
More informationModularity and Reusability I. Functions and code reuse
Modularity and Reusability I Functions and code reuse Copyright 2006 2009 Stewart Weiss On being efficient When you realize that a piece of Perl code that you wrote may be useful in future programs, you
More informationDatabase management system Prof. D. Janakiram Department of Computer Science and Engineering Indian Institute of Technology, Madras
Database management system Prof. D. Janakiram Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 25 Basic 2-phase & 3-phase Commit protocol In the last lecture,
More informationDesign and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Week 02 Module 06 Lecture - 14 Merge Sort: Analysis
Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute Week 02 Module 06 Lecture - 14 Merge Sort: Analysis So, we have seen how to use a divide and conquer strategy, we
More informationKuratowski Notes , Fall 2005, Prof. Peter Shor Revised Fall 2007
Kuratowski Notes 8.30, Fall 005, Prof. Peter Shor Revised Fall 007 Unfortunately, the OCW notes on Kuratowski s theorem seem to have several things substantially wrong with the proof, and the notes from
More informationCharacteristics of a "Successful" Application.
Characteristics of a "Successful" Application. Caroline Bahler, Meridian Software, Inc. Abstract An application can be judged "successful" by two different sets of criteria. The first set of criteria belongs
More informationA student was asked to point out interface elements in this code: Answer: cout. What is wrong?
A student was asked to point out interface elements in this code: Answer: cout. What is wrong? Clarification of the concept of INTERFACE The interface we ve been talking about in OOP is not the man-machine
More informationInstruction-Level Parallelism Dynamic Branch Prediction. Reducing Branch Penalties
Instruction-Level Parallelism Dynamic Branch Prediction CS448 1 Reducing Branch Penalties Last chapter static schemes Move branch calculation earlier in pipeline Static branch prediction Always taken,
More informationSoftware Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore
Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example
More informationAlgebra of Sets (Mathematics & Logic A)
Algebra of Sets (Mathematics & Logic A) RWK/MRQ October 28, 2002 Note. These notes are adapted (with thanks) from notes given last year by my colleague Dr Martyn Quick. Please feel free to ask me (not
More informationSEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7
SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7 Hi everyone once again welcome to this lecture we are actually the course is Linux programming and scripting we have been talking about the Perl, Perl
More informationInterleaving a Dataset with Itself: How and Why
cc002 Interleaving a Dataset with Itself: How and Why Howard Schreier, U.S. Dept. of Commerce, Washington DC ABSTRACT When two or more SAS datasets are combined by means of a SET statement and an accompanying
More informationHigh Performance Computer Architecture Prof. Ajit Pal Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
High Performance Computer Architecture Prof. Ajit Pal Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 18 Dynamic Instruction Scheduling with Branch Prediction
More informationAn Introduction to How PGP Works
An Introduction to How PGP Works Revision: 0.01 Author: Kenneth Robert Ballou Date 2005-07-21 Document Change History Change Description/Reason Changed By Date Revision Initial Creation of Document Kenneth
More informationWriting Functions in C
Writing Functions in C 1 Test 2, Problem 5 b. Write a function to allocate space for a new instance of your structure, as defined in part a. Write the C code for a function to get space from the heap using
More informationFRONT USER GUIDE Getting Started with Front
USER GUIDE USER GUIDE Getting Started with Front ESSENTIALS Teams That Use Front How To Roll Out Front Quick Start Productivity Tips Downloading Front Adding Your Team Inbox Add Your Own Work Email Update
More informationPlease Don't Lag Behind LAG!
Please Don't Lag Behind LAG! Anjan Matlapudi and J. Daniel Knapp Pharmacy Informatics and Finance PerformRx, The Next Generation PBM 200 Stevens Drive, Philadelphia, PA 19113 ABSTRACT A programmer may
More informationIntroduction to Programming in C Department of Computer Science and Engineering. Lecture No. #43. Multidimensional Arrays
Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #43 Multidimensional Arrays In this video will look at multi-dimensional arrays. (Refer Slide Time: 00:03) In
More informationIntroduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement
Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #17 Loops: Break Statement (Refer Slide Time: 00:07) In this session we will see one more feature that is present
More informationWeek - 04 Lecture - 01 Merge Sort. (Refer Slide Time: 00:02)
Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 04 Lecture - 01 Merge Sort (Refer
More informationBruce Silver Associates Independent Expertise in BPM
Bruce Silver Associates Independent Expertise in BPM BPMN and the Business Process Expert, Part 4: Mastering BPMN Events Summary: The ability to describe event-triggered behavior directly in the diagram
More informationInstructor: Padraic Bartlett. Lecture 2: Schreier Diagrams
Algebraic GT Instructor: Padraic Bartlett Lecture 2: Schreier Diagrams Week 5 Mathcamp 2014 This class s lecture continues last s class s discussion of the interplay between groups and graphs. In specific,
More informationCompiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore
Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No. # 10 Lecture No. # 16 Machine-Independent Optimizations Welcome to the
More informationFigure 4.1: The evolution of a rooted tree.
106 CHAPTER 4. INDUCTION, RECURSION AND RECURRENCES 4.6 Rooted Trees 4.6.1 The idea of a rooted tree We talked about how a tree diagram helps us visualize merge sort or other divide and conquer algorithms.
More informationUsing WintelnetX to Combine Skimmer and Cluster Spots (Rev. 1.0, 10/28/08)
Using WintelnetX to Combine Skimmer and Cluster Spots (Rev. 1.0, 10/28/08) Recently, Dave (K1TTT) released version 4.17 of his WintelnetX software, now making it possible to merge Skimmer and one or more
More informationThe inner workings of the datastep. By Mathieu Gaouette Videotron
The inner workings of the datastep By Mathieu Gaouette Videotron Plan Introduction The base The base behind the scene Control in the datastep A side by side compare with Proc SQL Introduction Most of you
More information(Refer Slide Time 3:31)
Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 5 Logic Simplification In the last lecture we talked about logic functions
More information3 Nonlocal Exit. Quiz Program Revisited
3 Nonlocal Exit This chapter is about the commands catch and throw. These commands work together as a kind of super-stop command, which you can use to stop several levels of procedure invocation at once.
More informationHash Tables (Cont'd) Carlos Moreno uwaterloo.ca EIT https://ece.uwaterloo.ca/~cmoreno/ece250
(Cont'd) Carlos Moreno cmoreno @ uwaterloo.ca EIT-4103 https://ece.uwaterloo.ca/~cmoreno/ece250 Last time we introduced the idea behind Hash Tables, and discussed hash functions and the issue of collisions.
More information1 Counting triangles and cliques
ITCSC-INC Winter School 2015 26 January 2014 notes by Andrej Bogdanov Today we will talk about randomness and some of the surprising roles it plays in the theory of computing and in coding theory. Let
More informationPHP6 AND MYSQL BIBLE BY STEVE SUEHRING, TIM CONVERSE, JOYCE PARK
PHP6 AND MYSQL BIBLE BY STEVE SUEHRING, TIM CONVERSE, JOYCE PARK DOWNLOAD EBOOK : PHP6 AND MYSQL BIBLE BY STEVE SUEHRING, TIM Click link bellow and free register to download ebook: PHP6 AND MYSQL BIBLE
More informationlearn programming the right way
Coding 101 learn programming the right way 1 INTRODUCTION Before you begin learning how to code, it s first useful to discuss why you would want to learn web development. There are lots of good reasons
More information(Refer Slide Time: 02.06)
Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 27 Depth First Search (DFS) Today we are going to be talking
More informationChapter 12. UML and Patterns. Copyright 2008 Pearson Addison-Wesley. All rights reserved
Chapter 12 UML and Patterns Copyright 2008 Pearson Addison-Wesley. All rights reserved Introduction to UML and Patterns UML and patterns are two software design tools that can be used within the context
More informationYammer Product Manager Homework: LinkedІn Endorsements
BACKGROUND: Location: Mountain View, CA Industry: Social Networking Users: 300 Million PART 1 In September 2012, LinkedIn introduced the endorsements feature, which gives its users the ability to give
More informationCache Coherence Tutorial
Cache Coherence Tutorial The cache coherence protocol described in the book is not really all that difficult and yet a lot of people seem to have troubles when it comes to using it or answering an assignment
More informationMolecular Statistics Exercise 1. As was shown to you this morning, the interactive python shell can add, subtract, multiply and divide numbers.
Molecular Statistics Exercise 1 Introduction This is the first exercise in the course Molecular Statistics. The exercises in this course are split in two parts. The first part of each exercise is a general
More informationIteration Preview of Coming Attractions The Need to Get Your Act Together A Process for Developing While Statements
Iteration Preview of Coming Attractions In this unit be sure to look for a five-step process for developing while statements tracing while statements The Need to Get Your Act Together As you probably know
More informationLecture Notes on Contracts
Lecture Notes on Contracts 15-122: Principles of Imperative Computation Frank Pfenning Lecture 2 August 30, 2012 1 Introduction For an overview the course goals and the mechanics and schedule of the course,
More informationAdvanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras
Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture 28 Chinese Postman Problem In this lecture we study the Chinese postman
More informationThese are notes for the third lecture; if statements and loops.
These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern
More informationDesigning Web Applications: Lessons from SAS User Interface Analysts Todd Barlow, SAS Institute Inc., Cary, NC
Designing Web Applications: Lessons from SAS User Interface Analysts Todd Barlow, SAS Institute Inc., Cary, NC ABSTRACT Web application user interfaces combine aspects of non-web GUI design and Web site
More informationDr. Scheme evaluates expressions so we will start by using the interactions window and asking Dr. Scheme to evaluate some expressions.
1.0 Expressions Dr. Scheme evaluates expressions so we will start by using the interactions window and asking Dr. Scheme to evaluate some expressions. Numbers are examples of primitive expressions, meaning
More informationCS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal)
CS61A Discussion Notes: Week 11: The Metacircular Evaluator By Greg Krimer, with slight modifications by Phoebus Chen (using notes from Todd Segal) What is the Metacircular Evaluator? It is the best part
More informationSimple Graph. General Graph
Graph Theory A graph is a collection of points (also called vertices) and lines (also called edges), with each edge ending at a vertex In general, it is allowed for more than one edge to have the same
More information(Refer Slide Time: 00:02:24 min)
CAD / CAM Prof. Dr. P. V. Madhusudhan Rao Department of Mechanical Engineering Indian Institute of Technology, Delhi Lecture No. # 9 Parametric Surfaces II So these days, we are discussing the subject
More information3.5 Indeterminate Forms. Consider the function given by the rule f(x) = Whenever direct substitution into lim x c f(x) yields a 0 0
3.5 Indeterminate Forms Introduction; Consider the function given by the rule f() = ; its graph is shown below. 0 0 situations Clearly, = 3. Note, however, that if one merely tried to plug in 0 for when
More informationSAS Macro Design Issues Ian Whitlock, Westat
Paper 67-27 SAS Macro Design Issues Ian Whitlock, Westat Abstract Two questions motivated this paper. The first came more than twenty years ago at the end of my first programming course when the professor
More informationOne-Step Change from Baseline Calculations
Paper CC08 One-Step Change from Baseline Calculations Nancy Brucken, i3 Statprobe, Ann Arbor, MI ABSTRACT Change from baseline is a common measure of safety and/or efficacy in clinical trials. The traditional
More informationLife, the Universe, and CSS Tests XML Prague 2018
It turns out that the answer to the ultimate question of life, the Universe, and CSS Tests isn t a number. It is, in fact, multiple numbers. It is the answers to: How many test results are correct? How
More informationClasswork 7: Craps. N. Duong & R. Rodriguez, Java Crash Course January 6, 2015
Classwork 7: Craps N. Duong & R. Rodriguez, Java Crash Course January 6, 2015 For this classwork, you will be writing code for the game Craps. For those of you who do not know, Craps is a dice-rolling
More informationModule - 17 Lecture - 23 SQL and NoSQL systems. (Refer Slide Time: 00:04)
Introduction to Morden Application Development Dr. Gaurav Raina Prof. Tanmai Gopal Department of Computer Science and Engineering Indian Institute of Technology, Madras Module - 17 Lecture - 23 SQL and
More informationNotebook Assignments
Notebook Assignments These six assignments are a notebook using techniques from class in the single concrete context of graph theory. This is supplemental to your usual assignments, and is designed for
More informationWeek - 01 Lecture - 03 Euclid's Algorithm for gcd. Let us continue with our running example of gcd to explore more issues involved with program.
Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 03 Euclid's Algorithm
More informationProgramming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module
More informationIntroduction. A Brief Description of Our Journey
Introduction If you still write RPG code as you did 20 years ago, or if you have ILE RPG on your resume but don t actually use or understand it, this book is for you. It will help you transition from the
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 informationLecture 10 Notes Linked Lists
Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Spring 2016) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to
More informationMITOCW watch?v=4dj1oguwtem
MITOCW watch?v=4dj1oguwtem PROFESSOR: So it's time to examine uncountable sets. And that's what we're going to do in this segment. So Cantor's question was, are all sets the same size? And he gives a definitive
More informationWeek 5, continued. This is CS50. Harvard University. Fall Cheng Gong
This is CS50. Harvard University. Fall 2014. Cheng Gong Table of Contents News... 1 Buffer Overflow... 1 Malloc... 6 Linked Lists... 7 Searching... 13 Inserting... 16 Removing... 19 News Good news everyone!
More informationPost Experiment Interview Questions
Post Experiment Interview Questions Questions about the Maximum Problem 1. What is this problem statement asking? 2. What is meant by positive integers? 3. What does it mean by the user entering valid
More information(Refer Slide Time: 1:40)
Computer Architecture Prof. Anshul Kumar Department of Computer Science and Engineering, Indian Institute of Technology, Delhi Lecture - 3 Instruction Set Architecture - 1 Today I will start discussion
More information4.2 Variations on a Scheme -- Lazy Evaluation
[Go to first, previous, next page; contents; index] 4.2 Variations on a Scheme -- Lazy Evaluation Now that we have an evaluator expressed as a Lisp program, we can experiment with alternative choices in
More informationChapter 1 Introduction
Chapter 1 Introduction Why I Am Writing This: Why I am I writing a set of tutorials on compilers and how to build them? Well, the idea goes back several years ago when Rapid-Q, one of the best free BASIC
More informationHASH Beyond Lookups Your Code Will Never Be the Same!
ABSTRACT SESUG Paper 68-2017 HASH Beyond Lookups Your Code Will Never Be the Same! Elizabeth Axelrod, Abt Associates Inc. If you ve ever used the hash object for table lookups, you re probably already
More information1 of 5 3/28/2010 8:01 AM Unit Testing Notes Home Class Info Links Lectures Newsgroup Assignmen [Jump to Writing Clear Tests, What about Private Functions?] Testing The typical approach to testing code
More informationAnnouncements. Project 5 is on the street. Second part is essay questions for CoS teaming requirements.
Announcements Project 5 is on the street. Second part is essay questions for CoS teaming requirements. The first part you do as a team The CoS essay gets individually answered and has separate submission
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 informationLecture 3: Recursion; Structural Induction
15-150 Lecture 3: Recursion; Structural Induction Lecture by Dan Licata January 24, 2012 Today, we are going to talk about one of the most important ideas in functional programming, structural recursion
More informationPrinting Envelopes in Microsoft Word
Printing Envelopes in Microsoft Word P 730 / 1 Stop Addressing Envelopes by Hand Let Word Print Them for You! One of the most common uses of Microsoft Word is for writing letters. With very little effort
More information6.001 Notes: Section 7.1
6.001 Notes: Section 7.1 Slide 7.1.1 In the past few lectures, we have seen a series of tools for helping us create procedures to compute a variety of computational processes. Before we move on to more
More informationCS 206 Introduction to Computer Science II
CS 206 Introduction to Computer Science II 03 / 25 / 2013 Instructor: Michael Eckmann Today s Topics Comments/Questions? More on Recursion Including Dynamic Programming technique Divide and Conquer techniques
More informationi I N S I G H T O i CHAPTER 2
i I N S I G H T O i CHAPTER 2 1 EXPLODING DOTS CHAPTER 2 WHAT ARE THESE MACHINES REALLY DOING? All right. It s time to explain what the machines from the previous chapter are really doing. (Did you already
More informationHow to Think Through the SAS DATA Step
How to Think Through the SAS DATA Step Ian Whitlock, Kennett Square, PA Abstract You are relatively new to SAS and interested in writing SAS code. You have probably written DATA step code; some works,
More informationHeap sort. Carlos Moreno uwaterloo.ca EIT
Carlos Moreno cmoreno @ uwaterloo.ca EIT-4103 http://xkcd.com/835/ https://ece.uwaterloo.ca/~cmoreno/ece250 Standard reminder to set phones to silent/vibrate mode, please! Last time, on ECE-250... Talked
More information1 Getting used to Python
1 Getting used to Python We assume you know how to program in some language, but are new to Python. We'll use Java as an informal running comparative example. Here are what we think are the most important
More informationMITOCW ocw f99-lec07_300k
MITOCW ocw-18.06-f99-lec07_300k OK, here's linear algebra lecture seven. I've been talking about vector spaces and specially the null space of a matrix and the column space of a matrix. What's in those
More informationUsing an Array as an If-Switch Nazik Elgaddal and Ed Heaton, Westat, Rockville, MD
Using an Array as an If-Switch Nazik Elgaddal and Ed Heaton, Westat, Rockville, MD Abstract Do you sometimes find yourself using nested IF statements or nested SELECT blocks? Does the code become more
More informationER Modeling Data Modeling and the Entity-Relationship (ER) Diagram Pg 1
ER Modeling Data Modeling and the Entity-Relationship (ER) Diagram Pg 1 Data Modeling and the Entity-Relationship (ER) Diagram Ray Lockwood Points: The Entity-Relationship (ER) Diagram is seen by various
More informationIt s Not Complex Just Its Solutions Are Complex!
It s Not Comple Just Its Solutions Are Comple! Solving Quadratics with Comple Solutions 15.5 Learning Goals In this lesson, ou will: Calculate comple roots of quadratic equations and comple zeros of quadratic
More informationTest driven development Example
Test driven development Example Developing a moving average filter that can be tested using the EUNIT plug in REVIEW Using the E UNIT testing Framework Activate CCES and select your workspace (H:/ENCM511
More informationflex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input.
flex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input. More often than not, though, you ll want to use flex to generate a scanner that divides
More informationPart I: Programming Access Applications. Chapter 1: Overview of Programming for Access. Chapter 2: Extending Applications Using the Windows API
74029c01.qxd:WroxPro 9/27/07 1:43 PM Page 1 Part I: Programming Access Applications Chapter 1: Overview of Programming for Access Chapter 2: Extending Applications Using the Windows API Chapter 3: Programming
More informationClient Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module
Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as
More information6.001 Notes: Section 6.1
6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of
More informationHash Objects for Everyone
SESUG 2015 Paper BB-83 Hash Objects for Everyone Jack Hall, OptumInsight ABSTRACT The introduction of Hash Objects into the SAS toolbag gives programmers a powerful way to improve performance, especially
More informationAssignment 1. Stefano Guerra. October 11, The following observation follows directly from the definition of in order and pre order traversal:
Assignment 1 Stefano Guerra October 11, 2016 1 Problem 1 Describe a recursive algorithm to reconstruct an arbitrary binary tree, given its preorder and inorder node sequences as input. First, recall that
More informationLab 1 Implementing a Simon Says Game
ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.
More informationContents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides
Slide Set 1 for ENCM 369 Winter 2014 Lecture Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Winter Term, 2014 ENCM 369 W14 Section
More information(Refer Slide Time: 00:51)
Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute Technology, Madras Module 10 E Lecture 24 Content Example: factorial
More informationUsability Testing Methods An Overview
Usability Testing Methods An Overview Usability Examples of user interfaces that you like or dislike Are you the only one? What about other audiences? Have your preferences changed over time? Are there
More informationChapter 1 Operations With Numbers
Chapter 1 Operations With Numbers Part I Negative Numbers You may already know what negative numbers are, but even if you don t, then you have probably seen them several times over the past few days. If
More informationCS103 Handout 29 Winter 2018 February 9, 2018 Inductive Proofwriting Checklist
CS103 Handout 29 Winter 2018 February 9, 2018 Inductive Proofwriting Checklist In Handout 28, the Guide to Inductive Proofs, we outlined a number of specifc issues and concepts to be mindful about when
More informationClickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1
Presents A case study by Devin Zander A look into how absolutely easy internet marketing is. Money Mindset Page 1 Hey guys! Quick into I m Devin Zander and today I ve got something everybody loves! Me
More informationIt s possible to get your inbox to zero and keep it there, even if you get hundreds of s a day.
It s possible to get your email inbox to zero and keep it there, even if you get hundreds of emails a day. It s not super complicated, though it does take effort and discipline. Many people simply need
More informationMicrosoft Excel 2007
Learning computers is Show ezy Microsoft Excel 2007 301 Excel screen, toolbars, views, sheets, and uses for Excel 2005-8 Steve Slisar 2005-8 COPYRIGHT: The copyright for this publication is owned by Steve
More informationWe will show that the height of a RB tree on n vertices is approximately 2*log n. In class I presented a simple structural proof of this claim:
We have seen that the insert operation on a RB takes an amount of time proportional to the number of the levels of the tree (since the additional operations required to do any rebalancing require constant
More information6.830 Lecture 2 9/11/2017 Relational Data Model (PS1 Out)
6.830 Lecture 2 9/11/2017 Relational Data Model (PS1 Out) "Those who cannot remember the past are condemned to repeat it" Today we will have a history lesson in data models, and talk about why the relational
More informationCSE143 Notes for Monday, 4/25/11
CSE143 Notes for Monday, 4/25/11 I began a new topic: recursion. We have seen how to write code using loops, which a technique called iteration. Recursion an alternative to iteration that equally powerful.
More information