# Foundations, Reasoning About Algorithms, and Design By Contract CMPSC 122

Save this PDF as:

Size: px
Start display at page:

## Transcription

2 So, let s make the language a little more generic and precise all at the same time. We re usually talking about algorithms, but when we do, we tend to break them up into little chunks -- functions or methods. (Important tangent: What s the difference between a method and a function?) We then specify each method by a few things: Its header, i.e. its name and the names of inputs and outputs (what we call the parameters) Its precondition, i.e. a predicate that the method assumes is true in doing whatever it does Its body, i.e. the algorithm and logic inside the method Its postcondition, i.e. a predicate that is guaranteed to be true after the method has completed Two discussion points: 1. I said the precondition and postcondition were predicates, so that implies they re written in terms of some variables. Where do these variables come from? 2. Where is the contract in this? Writing preconditions and postconditions requires using very precise language, really rooted in the language of mathematics. Clarity should always be a major goal. But, mathematicians are lazy, so we have some shorthand you ll see used commonly: PRE is the precondition POST is the postcondition FCTVAL means function value, i.e. whatever a function computes and returns. Example: Let s formally write down the physics example defined earlier. Page 2 of 7! Prepared by D. Hogan for PSU CMPSC 122

4 Answer: Methods. Why? Another fundamental (and certainly related but not the same) principle is that of information hiding: So The user of a method (or client) should only know what is necessary to use the method and nothing more. The implementor of a method should only know what is necessary to implement the method and nothing more. What does the client not need to know to use a method? What does the implementer not need to know to implement a method? (Why is this so important?) What do both need to know? Ah, so design by contract is not only about reasoning about programs, but also about communication. V. Loops Let s take a moment to review some things about loops. But, let s initially not concern ourselves with syntax, but instead speak of loops in general. First, all loops include a guard or loop test, which is a logical statement that is true for the loop to continue iterating. This might be something simple like x < 10 or something like x < 5 and not(temp > 100 or numvalid > MIN). Next, loops can be broken down into two categories: determinate loops - those for which the is known indeterminate loops - those for which the number of iterations is not known until Examples: Determinate loop applications: Indeterminate loop applications: The guard can be in the form of a pretest, i.e. a test that is checked before an iteration of a loop to see if that iteration should be executed, or in the form of a posttest, i.e. a test that is checked after an iteration of a loop to see if another iteration should be executed. Page 4 of 7! Prepared by D. Hogan for PSU CMPSC 122

5 Question: How does C++ implement each of these kinds of loops? Each construct a programming language provides has a reason for existing, and, while you can twist some tools to fit other scenarios (really, though, that s abuse of the tools), your code is cleanest and most natural when you use the right tools for the right job. Let s summarize the ideal application of loops here: In this course, you ll be expected to make the ideal choices. (People will appreciate your code later on if you keep this up!) VI. Pseudocode vs. Real Code You may notice in the loop test example I gave above, I didn t quite use code from a language you know. Sometimes, in reasoning about algorithms, we will prefer to leave out syntax details that are specific to any one language and write the algorithms down using pseudocode. Pseudocode is nice, because it allows us to get to the real meat of the issue at hand, omitting details that have more to do with the language. Thus, it is also language independent. There isn t a prescribed syntax for pseudocode; it s mixture of English, math, and things you see in most programming languages. It leaves out variable types and declarations and leaves out a lot of the punctuation you see in many languages. In many lessons where it s appropriate, I ll start with pseudocode to emphasize the essential computer science ideas before getting into language-specific syntax. Since you have some programming experience under your belt, most everything in pseudocode will be obvious to you, but don t hesitate to ask questions when you have them. VII. Loop Invariants Now back to assertions Question: What does vary mean? What, then, would something that is invariant do? A loop invariant is a predicate that is true at some point in the body of a loop, every time that point is reached, regardless of which iteration is being executed. Now, while an invariant could technically be written anywhere in a loop, it s silly (and problematic later) to write them about somewhere in the middle of the loop. Writing an invariant about the end makes some sense, but the ideal and standard practice is to write loop invariants about the state and the start of an iteration of a loop. Thus, pretty much every invariant you ever write should start Before the start of the ith iteration, Page 5 of 7! Prepared by D. Hogan for PSU CMPSC 122

6 Example: Trace the first few iterations of and write an invariant for the following loop: sum = 0 for i = 1 to 10 sum = sum + i Example: Write an invariant for the following loop, assuming code that precedes it has initialized key and vals[0..last]: i = 0 found = FALSE while i LAST and not found if vals[i] = key found = TRUE i = i + 1 Problem: Write an invariant for the following loop, assuming code that precedes it has initialized key, TOL, and vals[0..last]: i = 0 found = FALSE while i LAST and not found if vals[i] - TOL key vals[i] + TOL found = TRUE i = i + 1 Page 6 of 7! Prepared by D. Hogan for PSU CMPSC 122

7 Problem: Consider this loop, which assumes input is initialized and array f has been allocated with size 100: i = 0 for j = 1 to input/2 if input mod j = 0 f [i] = j i = i + 1 a. First trace the execution of this loop for input = 20 b. Write an invariant for this loop. VIII. A Preview of Correctness Proofs Question: If you test your program on one input, are you sure your program is correct? 2 inputs? 3? 1000? We can prove a algorithm is correct using some tools from mathematics. Really, it s all logic, but you ll need some formal training in that (and especially in a technique called mathematical induction) to be able to write a full correctness proof for most interesting algorithms. You ll get that in 360, but I want you to be aware of the big picture now. Suppose we have an algorithm (packaged in a method) that contains one loop. Then the correctness proof of that algorithm involves three parts: Initialization: Assume that the precondition is true and use that and the code before the loop to establish why the loop invariant is true before the loop begins. Maintenance: Assume that the loop invariant is true at the start of any arbitrary iteration and use the loop body to prove that the invariant is still true at the end of that iteration. (Whoa! Okay, don t panic ) Termination: Assume that the loop invariant is true at the end of the last iteration and that the guard is false (since the loop is done) and use whatever code is after the loop to prove that the postcondition is true. I urge you to think about the initialization and termination steps while you re programming this semester. IX. Closing Opening Thoughts There are some exercises I have for you to do on a separate worksheet. They draw upon both what I ve taught you here and some concepts often taught in a first-semester computer science course (CS1). I have a link on the course site to my own CS1 notes you can use if you need to look anything up. All of the language in the review worksheets is language I will use in this course and expect you to know, both to understand the lectures, but also to read or respond to exam and quiz questions. Page 7 of 7! Prepared by D. Hogan for PSU CMPSC 122

### We'll dive right in with an example linked list. Our list will hold the values 1, 2, and 3.!

Linked Lists Spring 2016 CS 107 Version I. Motivating Example We'll dive right in with an example linked list. Our list will hold the values 1, 2, and 3. Linked lists can easily grow and shrink. In that

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

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

### CS 4349 Lecture August 21st, 2017

CS 4349 Lecture August 21st, 2017 Main topics for #lecture include #administrivia, #algorithms, #asymptotic_notation. Welcome and Administrivia Hi, I m Kyle! Welcome to CS 4349. This a class about algorithms.

### CS 161 Computer Security

Wagner Spring 2014 CS 161 Computer Security 1/27 Reasoning About Code Often functions make certain assumptions about their arguments, and it is the caller s responsibility to make sure those assumptions

### Introduction to Asymptotic Running Time Analysis CMPSC 122

Introduction to Asymptotic Running Time Analysis CMPSC 122 I. Comparing Two Searching Algorithms Let's begin by considering two searching algorithms you know, both of which will have input parameters of

### Lecture 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

### Lecture Transcript While and Do While Statements in C++

Lecture Transcript While and Do While Statements in C++ Hello and welcome back. In this lecture we are going to look at the while and do...while iteration statements in C++. Here is a quick recap of some

### Lecture 10 Notes Linked Lists

Lecture 10 Notes Linked Lists 15-122: Principles of Imperative Computation (Summer 1 2015) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to

### (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

### III. Check if the divisors add up to the number. Now we may consider each of these tasks separately, assuming the others will be taken care of

Top-Down Design 1 Top-Down Design: A solution method where the problem is broken down into smaller sub-problems, which in turn are broken down into smaller subproblems, continuing until each sub-problem

### 1 Achieving IND-CPA security

ISA 562: Information Security, Theory and Practice Lecture 2 1 Achieving IND-CPA security 1.1 Pseudorandom numbers, and stateful encryption As we saw last time, the OTP is perfectly secure, but it forces

### These 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

### CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

### (Refer Slide Time: 06:01)

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 28 Applications of DFS Today we are going to be talking about

### 6. Hoare Logic and Weakest Preconditions

6. Hoare Logic and Weakest Preconditions Program Verification ETH Zurich, Spring Semester 07 Alexander J. Summers 30 Program Correctness There are many notions of correctness properties for a given program

### Part II Composition of Functions

Part II Composition of Functions The big idea in this part of the book is deceptively simple. It s that we can take the value returned by one function and use it as an argument to another function. By

### Lecture 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

### Skill 1: Multiplying Polynomials

CS103 Spring 2018 Mathematical Prerequisites Although CS103 is primarily a math class, this course does not require any higher math as a prerequisite. The most advanced level of mathematics you'll need

### Shorthand for values: variables

Chapter 2 Shorthand for values: variables 2.1 Defining a variable You ve typed a lot of expressions into the computer involving pictures, but every time you need a different picture, you ve needed to find

### Lecture 3 Notes Arrays

Lecture 3 Notes Arrays 15-122: Principles of Imperative Computation (Summer 1 2015) Frank Pfenning, André Platzer 1 Introduction So far we have seen how to process primitive data like integers in imperative

### CS 3512, Spring Instructor: Doug Dunham. Textbook: James L. Hein, Discrete Structures, Logic, and Computability, 3rd Ed. Jones and Barlett, 2010

CS 3512, Spring 2011 Instructor: Doug Dunham Textbook: James L. Hein, Discrete Structures, Logic, and Computability, 3rd Ed. Jones and Barlett, 2010 Prerequisites: Calc I, CS2511 Rough course outline:

### CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too)

CSCI-1200 Data Structures Spring 2018 Lecture 14 Associative Containers (Maps), Part 1 (and Problem Solving Too) HW6 NOTE: Do not use the STL map or STL pair for HW6. (It s okay to use them for the contest.)

### Chapter 3. Set Theory. 3.1 What is a Set?

Chapter 3 Set Theory 3.1 What is a Set? A set is a well-defined collection of objects called elements or members of the set. Here, well-defined means accurately and unambiguously stated or described. Any

### Introduction to Algorithms / Algorithms I Lecturer: Michael Dinitz Topic: Shortest Paths Date: 10/13/15

600.363 Introduction to Algorithms / 600.463 Algorithms I Lecturer: Michael Dinitz Topic: Shortest Paths Date: 10/13/15 14.1 Introduction Today we re going to talk about algorithms for computing shortest

### Propositional Logic Formal Syntax and Semantics. Computability and Logic

Propositional Logic Formal Syntax and Semantics Computability and Logic Syntax and Semantics Syntax: The study of how expressions are structured (think: grammar) Semantics: The study of the relationship

### Starting Boolean Algebra

Boolean Algebra March 2, 27 Diagram for FunChip2 Here is a picture of FunChip2 that we created more or less randomly in class on /25 (used in various Activities): Starting Boolean Algebra Boolean algebra

### Trombone players produce different pitches partly by varying the length of a tube.

Trombone players produce different pitches partly by varying the length of a tube. 7 Variables A variable is a connection between a name and a value.* That sounds simple enough, but some complexities arise

### Lecture Notes on Arrays

Lecture Notes on Arrays 15-122: Principles of Imperative Computation July 2, 2013 1 Introduction So far we have seen how to process primitive data like integers in imperative programs. That is useful,

### LAB: INTRODUCTION TO FUNCTIONS IN C++

LAB: INTRODUCTION TO FUNCTIONS IN C++ MODULE 2 JEFFREY A. STONE and TRICIA K. CLARK COPYRIGHT 2014 VERSION 4.0 PALMS MODULE 2 LAB: FUNCTIONS IN C++ 2 Introduction This lab will provide students with an

### Statistics Case Study 2000 M. J. Clancy and M. C. Linn

Statistics Case Study 2000 M. J. Clancy and M. C. Linn Problem Write and test functions to compute the following statistics for a nonempty list of numeric values: The mean, or average value, is computed

### 6.001 Notes: Section 31.1

6.001 Notes: Section 31.1 Slide 31.1.1 In previous lectures we have seen a number of important themes, which relate to designing code for complex systems. One was the idea of proof by induction, meaning

### Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 18 Tries Today we are going to be talking about another data

### Computer Science Lab Exercise 1

1 of 10 Computer Science 127 - Lab Exercise 1 Introduction to Excel User-Defined Functions (pdf) During this lab you will experiment with creating Excel user-defined functions (UDFs). Background We use

### Chapter 1 Getting Started

Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

### CSCI 1100L: Topics in Computing Lab Lab 1: Introduction to the Lab! Part I

CSCI 1100L: Topics in Computing Lab Lab 1: Introduction to the Lab! Part I Welcome to your CSCI-1100 Lab! In the fine tradition of the CSCI-1100 course, we ll start off the lab with the classic bad joke

Lecture 10 Linked Lists 15-122: Principles of Imperative Computation (Spring 2017) Frank Pfenning, Rob Simmons, André Platzer 1 Introduction In this lecture we discuss the use of linked lists to implement

### Shared Variables and Interference

Illinois Institute of Technology Lecture 24 Shared Variables and Interference CS 536: Science of Programming, Spring 2018 A. Why Parallel programs can coordinate their work using shared variables, but

### Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller

Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Table of Contents Introduction!... 1 Part 1: Entering Data!... 2 1.a: Typing!... 2 1.b: Editing

### Control, Quick Overview. Selection. Selection 7/6/2017. Chapter 2. Control

Chapter 2 Control, Quick Overview Control Selection Selection Selection is how programs make choices, and it is the process of making choices that provides a lot of the power of computing 1 Python if statement

### To prove something about all Boolean expressions, we will need the following induction principle: Axiom 7.1 (Induction over Boolean expressions):

CS 70 Discrete Mathematics for CS Fall 2003 Wagner Lecture 7 This lecture returns to the topic of propositional logic. Whereas in Lecture 1 we studied this topic as a way of understanding proper reasoning

### Animations involving numbers

136 Chapter 8 Animations involving numbers 8.1 Model and view The examples of Chapter 6 all compute the next picture in the animation from the previous picture. This turns out to be a rather restrictive

### The design recipe. Readings: HtDP, sections 1-5. (ordering of topics is different in lectures, different examples will be used)

The design recipe Readings: HtDP, sections 1-5 (ordering of topics is different in lectures, different examples will be used) Survival and Style Guides CS 135 Winter 2018 02: The design recipe 1 Programs

### How invariants help writing loops Author: Sander Kooijmans Document version: 1.0

How invariants help writing loops Author: Sander Kooijmans Document version: 1.0 Why this document? Did you ever feel frustrated because of a nasty bug in your code? Did you spend hours looking at the

### Homework 1 CS 1050 A Due:

9-4-08 Homework 1 CS 1050 A Due: 9-11-08 Every assignment will be due at the beginning of class. Recall that you can collaborate in groups and/or use external references, but you must acknowledge the group/references

### GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program

### The Stack, Free Store, and Global Namespace

Pointers This tutorial is my attempt at clarifying pointers for anyone still confused about them. Pointers are notoriously hard to grasp, so I thought I'd take a shot at explaining them. The more information

### COP 3330 Final Exam Review

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

### Specifications. Prof. Clarkson Fall Today s music: Nice to know you by Incubus

Specifications Prof. Clarkson Fall 2015 Today s music: Nice to know you by Incubus Question Would you like a tiny bonus to your final grade for being here on time today? A. Yes B. Sí C. Hai D. Haan E.

### Lecture 3 - Template and Vectors

Lecture - Template and Vectors Homework Format and Template: We ll each develop a simple template to use to start any new homework. The idea of a template is to layout the basic structure of what goes

### Lecture Notes on Queues

Lecture Notes on Queues 15-122: Principles of Imperative Computation Frank Pfenning and Jamie Morgenstern Lecture 9 February 14, 2012 1 Introduction In this lecture we introduce queues as a data structure

### Coding Workshop. Learning to Program with an Arduino. Lecture Notes. Programming Introduction Values Assignment Arithmetic.

Coding Workshop Learning to Program with an Arduino Lecture Notes Table of Contents Programming ntroduction Values Assignment Arithmetic Control Tests f Blocks For Blocks Functions Arduino Main Functions

### Chapter 4. Number Theory. 4.1 Factors and multiples

Chapter 4 Number Theory We ve now covered most of the basic techniques for writing proofs. So we re going to start applying them to specific topics in mathematics, starting with number theory. Number theory

### Iteration. # a and b are now equal # a and b are no longer equal Multiple assignment

Iteration 6.1. Multiple assignment As you may have discovered, it is legal to make more than one assignment to the same variable. A new assignment makes an existing variable refer to a new value (and stop

### Lecture 3: Constructing the Natural Numbers

Math/CS 120: Intro. to Math Professor: Padraic Bartlett Lecture 3: Constructing the Natural Numbers Weeks 3-4 UCSB 2014 When we defined what a proof was in our first set of lectures, we mentioned that

### Using Microsoft Excel

Using Microsoft Excel Introduction This handout briefly outlines most of the basic uses and functions of Excel that we will be using in this course. Although Excel may be used for performing statistical

### Let s use a more formal definition. An angle is the union of two rays with a common end point.

hapter 2 ngles What s the secret for doing well in geometry? Knowing all the angles. s we did in the last chapter, we will introduce new terms and new notations, the building blocks for our success. gain,

### Q1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question

Page 1 of 6 Template no.: A Course Name: Computer Programming1 Course ID: Exam Duration: 2 Hours Exam Time: Exam Date: Final Exam 1'st Semester Student no. in the list: Exam pages: Student's Name: Student

### Word Tips and Tricks - by Rick Black

Most of these tips and tricks will work with all versions of Microsoft Word from 2003 to 2010 on both Windows and Macintosh computers. Show and Hide Special Characters Word had a special switch that will

### 1 Introduction. 2 InsertionSort. 2.1 Correctness of InsertionSort

CS 161, Lecture 2 MergeSort, Recurrences 101, and Asymptotic Analysis Scribes: Michael Kim (2015), Ofir Geri (2016), M. Wootters (2017) Date: September 27, 2017 Adapted From Virginia Williams lecture notes

### CIS4/681 { Articial Intelligence 2 > (insert-sort '( )) ( ) 2 More Complicated Recursion So far everything we have dened requires

1 A couple of Functions 1 Let's take another example of a simple lisp function { one that does insertion sort. Let us assume that this sort function takes as input a list of numbers and sorts them in ascending

### Meeting 1 Introduction to Functions. Part 1 Graphing Points on a Plane (REVIEW) Part 2 What is a function?

Meeting 1 Introduction to Functions Part 1 Graphing Points on a Plane (REVIEW) A plane is a flat, two-dimensional surface. We describe particular locations, or points, on a plane relative to two number

### (Refer Slide Time 5:19)

Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 7 Logic Minimization using Karnaugh Maps In the last lecture we introduced

### Module 2 Congruence Arithmetic pages 39 54

Module 2 Congruence Arithmetic pages 9 5 Here are some excellent websites that can help you on this topic: http://mathcentral.uregina.ca/qq/database/qq.09.98/kupper1.html http://nrich.maths.org/public.viewer.php?obj_id=50

### QUIZ. How could we disable the automatic creation of copyconstructors

QUIZ How could we disable the automatic creation of copyconstructors pre-c++11? What syntax feature did C++11 introduce to make the disabling clearer and more permanent? Give a code example. Ch. 14: Inheritance

### Chapter 3 (part 3) Describing Syntax and Semantics

Chapter 3 (part 3) Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings

### Binary, Hexadecimal and Octal number system

Binary, Hexadecimal and Octal number system Binary, hexadecimal, and octal refer to different number systems. The one that we typically use is called decimal. These number systems refer to the number of

### MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015

CS161, Lecture 2 MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015 1 Introduction Today, we will introduce a fundamental algorithm design paradigm, Divide-And-Conquer,

### Lecture Notes on Queues

Lecture Notes on Queues 15-122: Principles of Imperative Computation Frank Pfenning Lecture 9 September 25, 2012 1 Introduction In this lecture we introduce queues as a data structure and linked lists

» How do I Integrate Excel information and objects in Word documents? How Do I... Page 2 of 10 How do I Integrate Excel information and objects in Word documents? Date: July 16th, 2007 Blogger: Scott Lowe

### If Statements, For Loops, Functions

Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

### Computer Architecture

Boaz Kantor Introduction to Computer Science, Fall semester 2010-2011 IDC Herzliya Computer Architecture I know what you're thinking, 'cause right now I'm thinking the same thing. Actually, I've been thinking

### Lines of Symmetry. Grade 3. Amy Hahn. Education 334: MW 8 9:20 a.m.

Lines of Symmetry Grade 3 Amy Hahn Education 334: MW 8 9:20 a.m. GRADE 3 V. SPATIAL SENSE, GEOMETRY AND MEASUREMENT A. Spatial Sense Understand the concept of reflection symmetry as applied to geometric

### Lecture 6: Sequential Sorting

15-150 Lecture 6: Sequential Sorting Lecture by Dan Licata February 2, 2012 Today s lecture is about sorting. Along the way, we ll learn about divide and conquer algorithms, the tree method, and complete

### LeakDAS Version 4 The Complete Guide

LeakDAS Version 4 The Complete Guide SECTION 4 LEAKDAS MOBILE Second Edition - 2014 Copyright InspectionLogic 2 Table of Contents CONNECTING LEAKDAS MOBILE TO AN ANALYZER VIA BLUETOOTH... 3 Bluetooth Devices...

### Semantic Analysis. CSE 307 Principles of Programming Languages Stony Brook University

Semantic Analysis CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Role of Semantic Analysis Syntax vs. Semantics: syntax concerns the form of a

### Instructor (Mehran Sahami)

Programming Methodology-Lecture07 Instructor (Mehran Sahami):Alrighty. Welcome back to yet another fun-filled exciting day of CS106a. So a couple quick announcements before we start first announcement,

### Chamberlin and Boyce - SEQUEL: A Structured English Query Language

Programming Languages (CS302 2007S) Chamberlin and Boyce - SEQUEL: A Structured English Query Language Comments on: Chamberlin, D. D. and Boyce, R. F. (1974). SEQUEL: A Structured English Query Language.

### Reasoning About Programs Panagiotis Manolios

Reasoning About Programs Panagiotis Manolios Northeastern University April 2, 2016 Version: 95 Copyright c 2016 by Panagiotis Manolios All rights reserved. We hereby grant permission for this publication

### Topological Sort. Here a topological sort would label A with 1, B and C with 2 and 3, and D with 4.

Topological Sort The goal of a topological sort is given a list of items with dependencies, (ie. item 5 must be completed before item 3, etc.) to produce an ordering of the items that satisfies the given

### Lecture Notes on Linear Search

Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 28, 2014 1 Introduction One of the fundamental and recurring problems in computer science is

### Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 20 Intermediate code generation Part-4 Run-time environments

### CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley

CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley In Brief: What You Need to Know to Comment Methods in CSE 143 Audience o A random person you don t know who wants

### CS 125 Section #4 RAMs and TMs 9/27/16

CS 125 Section #4 RAMs and TMs 9/27/16 1 RAM A word-ram consists of: A fixed set of instructions P 1,..., P q. Allowed instructions are: Modular arithmetic and integer division on registers; the standard

### Welcome to CS 115 (Winter 2018)

Welcome to CS 115 (Winter 2018) Web page (the main information source): http://www.student.cs.uwaterloo.ca/ cs115/ Course Personnel: Contact information and office hours for all staff: instructors, ISAs

### Animations that make decisions

Chapter 17 Animations that make decisions 17.1 String decisions Worked Exercise 17.1.1 Develop an animation of a simple traffic light. It should initially show a green disk; after 5 seconds, it should

### (Refer Slide Time: 05:25)

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering IIT Delhi Lecture 30 Applications of DFS in Directed Graphs Today we are going to look at more applications

### CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable

CISC-124 20180122 Today we looked at casting, conditionals and loops. Casting Casting is a simple method for converting one type of number to another, when the original type cannot be simply assigned to

### Appendix G C/C++ Notes. C/C++ Coding Style Guidelines Ray Mitchell 475

C/C++ Notes C/C++ Coding Style Guidelines -0 Ray Mitchell C/C++ Notes 0 0 0 0 NOTE G. C/C++ Coding Style Guidelines. Introduction The C and C++ languages are free form, placing no significance on the column

### CS61A Notes 02b Fake Plastic Trees. 2. (cons ((1 a) (2 o)) (3 g)) 3. (list ((1 a) (2 o)) (3 g)) 4. (append ((1 a) (2 o)) (3 g))

CS61A Notes 02b Fake Plastic Trees Box and Pointer Diagrams QUESTIONS: Evaluate the following, and draw a box-and-pointer diagram for each. (Hint: It may be easier to draw the box-and-pointer diagram first.)

### Variables. Data Types.

Variables. Data Types. The usefulness of the "Hello World" programs shown in the previous section is quite questionable. We had to write several lines of code, compile them, and then execute the resulting

### Section 2.4: Arguments with Quantified Statements

Section 2.4: Arguments with Quantified Statements In this section, we shall generalize the ideas we developed in Section 1.3 to arguments which involve quantified statements. Most of the concepts we shall

### Program development plan

Appendix A Program development plan If you are spending a lot of time debugging, it is probably because you do not have an effective program development plan. A typical, bad program development plan goes

### What is Iteration? CMPT-101. Recursion. Understanding Recursion. The Function Header and Documentation. Recursively Adding Numbers

What is Iteration? CMPT-101 Week 6 Iteration, Iteration, Iteration, Iteration, Iteration, Iteration,... To iterate means to do the same thing again and again and again and again... There are two primary

### Second Examination Solution

University of Illinois at Urbana-Champaign Department of Computer Science Second Examination Solution CS 225 Data Structures and Software Principles Fall 2007 7p-9p, Thursday, November 8 Name: NetID: Lab

### Lab 1: Setup 12:00 PM, Sep 10, 2017

CS17 Integrated Introduction to Computer Science Hughes Lab 1: Setup 12:00 PM, Sep 10, 2017 Contents 1 Your friendly lab TAs 1 2 Pair programming 1 3 Welcome to lab 2 4 The file system 2 5 Intro to terminal

### Compositional Cutpoint Verification

Compositional Cutpoint Verification Eric Smith (Stanford University) Collaborators: David Dill (Stanford University) David Hardin (Rockwell Collins) Contact ewsmith@stanford.edu Background Based on A Symbolic

### CS1102: Macros and Recursion

CS1102: Macros and Recursion Kathi Fisler, WPI October 5, 2009 This lecture looks at several more macro examples. It aims to show you when you can use recursion safely with macros and when you can t. 1

### Chapter 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

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

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

### CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209

CSC209 Software Tools and Systems Programming https://mcs.utm.utoronto.ca/~209 What is this Course About? Software Tools Using them Building them Systems Programming Quirks of C The file system System