1 Algorithms, Inputs, Outputs
|
|
- Neil Jenkins
- 5 years ago
- Views:
Transcription
1 1 Algorithms, Inputs, Outputs In the last class we discussed Universal Turing machines and the evolution in thought from circuitry being the important thing to the table of state transitions, or computer program, being the important thing. Recall that a Universal Turing machine is one Turing machine that has wiring that can SIMULATE any other Turing machine. So we now think of a universal Turing machine, which takes as input (so what is already on the tape when it is turned on) an encoding of a state transition table describing a particular Turing machine that the universal Turing machine will simulate, and the initial state of the tape for the Turing machine to be simulated. So now instead of building special-purpose Turing machines we just build a universal one and get it to simulate any other Turing machine. It is worth mentioning that there are still situations where it is useful to build a special purpose computer. If you need to build a lot of them it is often much cheaper to build special-purpose computers (that do one task) instead of the more general-purpose computers like Universal Turing machines. For example the brains of a stoplight, are often just the wiring of a special purpose computer. It is common in the area of industrial control systems to build these special purpose computers (for cost reasons). The design of these machines involves the study of state transitions just like we have been talking about, and it is common to visualize these transitions using tools from graph theory, with vertices machine states and arcs representing transitions between states. See Wikipedia page on State Diagrams for example. It may be hard to see the connection between modern computers and (Universal) Turing machines we have been talking about. Turing machines seem so simple, all you can do is detect and manipulate patterns on the tape, and move the head around! Modern computers don t have a tape and you can do graphics and sound and stuff! It is not too far from the truth to think of a modern computer as a sophisticated Universal Turing machine in the following ways. Firstly, and importantly, modern computer memory is designed so that the head of the machine can move over the memory very quickly. In fact it can access any element on the tape in one step. You can think of the memory as a large array M and the head of the tape can access any element of the array (any cell on the tape) in one step. This is quite different than moving the head around one cell at a time and makes things much faster. This way of designing memory is called Random Access Memory, or the RAM in your computer. We saw that we could design state tables for moving binary strings around, comparing strings, telling if a string is a palindrome, adding strings representing binary numbers, and so on. Another way to conceptualize how modern computers differ from what we ve been talking about is that people have already written the state transisition tables for many of the things that people who write computer programs want to do, like work with binary strings
2 that represent letters (ASCII), compare strings, treat strings as numbers and add, multiply, etc them, represent sounds images and movies as (long!) strings of numbers,... So all this grunt work has been done and already built into modern computers. The result is modern computer languages (like python, java, C,... ) that make life much easier for the programmer. So we won t talk so much about state transitions anymore. We will instead think of the more abstract programs or ALGORITHMS, which could (in theory) be represented by a list of states and state transitions ENCODED as a STRING on the tape of a universal Turing machine, but more likely is described by some modern computer language (but again, encoded as a string!). It will also be important to think about the INPUTS to the algorithithm (just like the input to a Turing machine what is on the tape when it starts) and also the outputs of the algorithm. So to say it again, we think of programs as STRINGS that can be read by a universal Turing machine type computer and executed. Turing machines remain important as a SIMPLE but powerful MODEL of a computer. Clearly they are simple. However they are powerful because there are a number of theoretical results that suggest (roughly!) that ANYTHING that it is POSSIBLE to compute CAN be computed by a Turing machine. This belief (it is not proven in the mathematical sense) is called the Church-Turing thesis. Modern computers are obviously much more sophisticated than Turing machines, even though anything they compute can be computed by a Turing machine (though perhaps much more slowly). One big difference is in how modern computer memory is handled. The Turing machine has a memory tape which the head has to pass over one element at a time. Modern computer memory is randomly accessible (that s why it s called RAM randomly accessible memory), meaning that you can think of the entire computer memory as being numbered boxes, and you can request the contents of or change the contents of a memory element directly. IMPORTANTLY, Getting the contents of memory location 5 takes the same time as getting the contents of memory location 5000 there is no tape that needs to be passed over. Modern computer languages have some kind of array type that will allow you to store numbers at various addresses in this fashion. In addition, modern computer lanagues allow the programmer to more easily write the more sophisticated instructions and constructs we are used to from our earlier computing courses, like looping, conditionals, variable nameing, reading, and assignment. You could do these things using state tables also but it would be cumbersome. If you are used to C/C++, there are two big differences in python to be aware of. First, scoping in C/C++ is done using..., but in python it s done with indentiation. Secondly, variables in C/C++ must be declared as having a type. You don t need to do this in python. You can put anything in to a python variable. Finally the octothorpe (hash marks) mean the rest of the line is a comment.
3 2 Estimating computation times and common loop structures Consider the following python program: i = 0 s = 0 n=100 while i < n: s=s+i i=i+1 print(s) Imagine a scenario where it takes 1 unit (say 1 second) for the computer to perform ( execute ) each line. How many seconds will it take for this program to run from beginning to end? Well, let s pretend to be (simulate) the computer using pencil and paper to keep track of which instruction we are performing and the values of all the computer variables after we do each instruction. The first three lines, where we create the variables and put a number value into each takes 1 unit of time each. The way the computer does the while loop is that it just checks the condition (is i < n?) and IF SO it does each line in the loop body once, after which the computer jumps back to the start of the loop where it is again checed if the value of i is less than n or not. IF NOT then the computer jumps over the lines of the loop body and continues executing the instructions that immediately follow the loop body (so in our case the print statement.) So the line with the while condition is performed 101 values in total (once each for i = 0, 1, 2,..., 100 ), and the s = s + 1 line is performed 100 times, once each for the i values {0, 1, 2,..., 99}. The i = i + 1 line is performed 100 times also. The remaining lines are perfomed once. The following table shows how many times the work associated with each line is performed: So the total amount of time is instruction times performed i = 0 1 s = 0 1 n = while i < n: 101 s=s+i 100 i=i print( s ) = 305
4 units of time. Generalizing to any value for n, we find the total time to be (n + 1) + (n) + (n) + 1 = 3n + 5 units. Note that the time required is very close to 3n for large values of n, and the vast majority of the time is taken up by the three lines associated with the loop. In the following program, which is a different way to write a simple loop program in python, the computer will do a similar kind of thing to perform the for loop, starting i at 0, performing some kind of check that the value of variable i is less than the value of n, and if so performing the steps of the loop body and if not continuing by performing the instructions after the loop body. i = 0 s = 0 n=100 for i in range(n): s=s+i print( s ) So, if we assume that performing each line of the following program takes 1 unit (again say 1 second), and we assume that the lines of the loop body are each performed once for each value of i in {0, 1, 2, 3,..., 99} then the following table shows how many times the work associated with each line is performed: instruction times performed i = 0 1 s = 0 1 n=100 1 for i in range(n): 100 s=s+i 100 print( s ) 1 Thus, if we total the number of times any line is performed we get line executions in total, which makes for 204 line executions alltogether, and thus 204 units of time. Generalizing, we can say the above program would take n + n + 1 = 2n + 4 units of time to execute. So for large values of n the total time would be close to 2n, since the +4 would be insignificant for large n. Again, we see the nn term comes from the instructions associated with the loop, which contribute more to the total time because they are performed multiple times. Now, if you look at the above two examples, you will see that both loops do basically the same thing. Some people might look blindly at the above computations and decide that 203 is less than 305, (and more generally 2n+4 is less than 3n+5) so I ll use the second algorithm. THIS WOULD BE WRONG. The reason is because our assumptions are not correct the reality is that each line does NOT take the same amount of time (1 unit) of time to perform.
5 In reality the computational work required to perform each each line is a little bit different, depending on what the line is! However it is still extremely useful to consider how many times each line of a program is performed, because if we do assume that each line takes more or less the same amount of effort, our estimates of total time won t be far off. Furthermore we can still get useful and accurate information about how long it will take a program to run using this technique, which we will see later. Finally if we want better estimates we can incorporate more exact costs of the cost of each line into the above table and multiply that by the number of times that line gets performed for a more exact estimate of the total time required. So for now let us just continue assuming each line takes the same amount of work, and focus our attention on the number of times each line is performed. Another example, this time with a double loop. n=1000 s = 0 for i in range(n): for j in range(n): t = math.sqrt(i*j+1) s=s+t print(s) The outside loop makes i take on each of the values 0, 1, 2,..., 999, which is n different values in total. For EACH of these values of i, the inner loop using j is performed, which makes j take on each of the values {0, 1, 2,..., 999}, which is n different values. Hence the lines associated with the innermost loop, of which there are 3, are performed for each of the values (i, j) in the set {(i, j) 0 i 1000, 0 j 1000}, which is a set of size n n = n 2. So the following table shows how many times the work associated with each line is performed: instruction times performed n= s = 0 1 for i in range(n): n for j in range(n): n*n t = math.sqrt(i*j+1) n*n s=s+t n*n print(s) 1 We thus see that, again with the moderately correct assumption that each line takes 1 unit of time to perform, that the above loop takes 3n 2 + n + 3 steps to perform. Again note that as n grows larger, some lines get executed a LOT more times than others, and so will be responsible for most of the required computation time. It is VERY important that you clearly understand that when you have a program with a loop, the instructions/lines in the loop usually get executed more times than others and so
6 will contribute more to the total required time. It is therefore important for us to be aware of how many times each line gets executed (at least approximately) if we are to understand how long it takes for programs to run.
14.1 Encoding for different models of computation
Lecture 14 Decidable languages In the previous lecture we discussed some examples of encoding schemes, through which various objects can be represented by strings over a given alphabet. We will begin this
More informationCSCI 270: Introduction to Algorithms and Theory of Computing Fall 2017 Prof: Leonard Adleman Scribe: Joseph Bebel
CSCI 270: Introduction to Algorithms and Theory of Computing Fall 2017 Prof: Leonard Adleman Scribe: Joseph Bebel We will now discuss computer programs, a concrete manifestation of what we ve been calling
More information2SKILL. Variables Lesson 6. Remembering numbers (and other stuff)...
Remembering numbers (and other stuff)... Let s talk about one of the most important things in any programming language. It s called a variable. Don t let the name scare you. What it does is really simple.
More informationLearning to Provide Modern Solutions
1 Learning to Provide Modern Solutions Over the course of this book, you will learn to enhance your existing applications to modernize the output of the system. To do this, we ll take advantage of the
More informationLecture 1: Overview
15-150 Lecture 1: Overview Lecture by Stefan Muller May 21, 2018 Welcome to 15-150! Today s lecture was an overview that showed the highlights of everything you re learning this semester, which also meant
More informationp x i 1 i n x, y, z = 2 x 3 y 5 z
3 Pairing and encoding functions Our aim in this part of the course is to show that register machines can compute everything that can be computed, and to show that there are things that can t be computed.
More informationLecture 2: Analyzing Algorithms: The 2-d Maxima Problem
Lecture 2: Analyzing Algorithms: The 2-d Maxima Problem (Thursday, Jan 29, 1998) Read: Chapter 1 in CLR. Analyzing Algorithms: In order to design good algorithms, we must first agree the criteria for measuring
More informationAlgorithm Analysis. College of Computing & Information Technology King Abdulaziz University. CPCS-204 Data Structures I
Algorithm Analysis College of Computing & Information Technology King Abdulaziz University CPCS-204 Data Structures I Order Analysis Judging the Efficiency/Speed of an Algorithm Thus far, we ve looked
More informationExcel Basics: Working with Spreadsheets
Excel Basics: Working with Spreadsheets E 890 / 1 Unravel the Mysteries of Cells, Rows, Ranges, Formulas and More Spreadsheets are all about numbers: they help us keep track of figures and make calculations.
More informationT H E I N T E R A C T I V E S H E L L
3 T H E I N T E R A C T I V E S H E L L The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform. Ada Lovelace, October 1842 Before
More information1 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
More informationCOSC 311: ALGORITHMS HW1: SORTING
COSC 311: ALGORITHMS HW1: SORTIG Solutions 1) Theoretical predictions. Solution: On randomly ordered data, we expect the following ordering: Heapsort = Mergesort = Quicksort (deterministic or randomized)
More informationPointers in C/C++ 1 Memory Addresses 2
Pointers in C/C++ Contents 1 Memory Addresses 2 2 Pointers and Indirection 3 2.1 The & and * Operators.............................................. 4 2.2 A Comment on Types - Muy Importante!...................................
More informationOrder from Chaos. Nebraska Wesleyan University Mathematics Circle
Order from Chaos Nebraska Wesleyan University Mathematics Circle Austin Mohr Department of Mathematics Nebraska Wesleyan University February 2, 20 The (, )-Puzzle Start by drawing six dots at the corners
More informationRandom Oracles - OAEP
Random Oracles - OAEP Anatoliy Gliberman, Dmitry Zontov, Patrick Nordahl September 23, 2004 Reading Overview There are two papers presented this week. The first paper, Random Oracles are Practical: A Paradigm
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More informationStarting 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
More informationModule 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)
Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 10A Lecture - 20 What is a function?
More informationCentrality Book. cohesion.
Cohesion The graph-theoretic terms discussed in the previous chapter have very specific and concrete meanings which are highly shared across the field of graph theory and other fields like social network
More informationAdmin. How's the project coming? After these slides, read chapter 13 in your book. Quizzes will return
Recursion CS 1 Admin How's the project coming? After these slides, read chapter 13 in your book Yes that is out of order, but we can read it stand alone Quizzes will return Tuesday Nov 29 th see calendar
More informationVariables and Data Representation
You will recall that a computer program is a set of instructions that tell a computer how to transform a given set of input into a specific output. Any program, procedural, event driven or object oriented
More informationMath 4242 Polynomial Time algorithms, IndependentSet problem
Math 4242 Polynomial Time algorithms, IndependentSet problem Many of the algorithms we have looked at so far have a reasonable running time. Not all algorithms do. We make this idea more precise. Definition:
More informationChapter 1: Introduction to Computer Science and Media Computation
Chapter 1: Introduction to Computer Science and Media Computation Story What is computer science about? What computers really understand, and where Programming Languages fit in Media Computation: Why digitize
More informationToday, we will dispel the notion that Java is a magical language that allows us to solve any problem we want if we re smart enough.
CSE 311: Foundations of Computing Lecture 25: Limits of Computation Showing a Language L is not regular 1. Suppose for contradiction that some DFA M accepts L. 2. Consider an INFINITE set of half strings
More informationCS 275 Automata and Formal Language Theory. First Problem of URMs. (a) Definition of the Turing Machine. III.3 (a) Definition of the Turing Machine
CS 275 Automata and Formal Language Theory Course Notes Part III: Limits of Computation Chapt. III.3: Turing Machines Anton Setzer http://www.cs.swan.ac.uk/ csetzer/lectures/ automataformallanguage/13/index.html
More informationCS 1124 Media Computation. Steve Harrison Lecture 1.2 (August 27, 2008)
CS 1124 Media Computation Steve Harrison Lecture 1.2 (August 27, 2008) Today Computer science Look at Jython Look at some cool image things Pixels Why study CS? What is computer science about? What do
More informationProperties and Definitions
Section 0.1 Contents: Operations Defined Multiplication as an Abbreviation Visualizing Multiplication Commutative Properties Parentheses Associative Properties Identities Zero Product Answers to Exercises
More informationMaterial from Recitation 1
Material from Recitation 1 Darcey Riley Frank Ferraro January 18, 2011 1 Introduction In CSC 280 we will be formalizing computation, i.e. we will be creating precise mathematical models for describing
More informationFunctional Programming in Haskell Prof. Madhavan Mukund and S. P. Suresh Chennai Mathematical Institute
Functional Programming in Haskell Prof. Madhavan Mukund and S. P. Suresh Chennai Mathematical Institute Module # 02 Lecture - 03 Characters and Strings So, let us turn our attention to a data type we have
More informationIntroduction to Analysis of Algorithms
Introduction to Analysis of Algorithms Analysis of Algorithms To determine how efficient an algorithm is we compute the amount of time that the algorithm needs to solve a problem. Given two algorithms
More informationPaul's Online Math Notes Calculus III (Notes) / Applications of Partial Derivatives / Lagrange Multipliers Problems][Assignment Problems]
1 of 9 25/04/2016 13:15 Paul's Online Math Notes Calculus III (Notes) / Applications of Partial Derivatives / Lagrange Multipliers Problems][Assignment Problems] [Notes] [Practice Calculus III - Notes
More informationOrder from Chaos. University of Nebraska-Lincoln Discrete Mathematics Seminar
Order from Chaos University of Nebraska-Lincoln Discrete Mathematics Seminar Austin Mohr Department of Mathematics Nebraska Wesleyan University February 8, 20 The (, )-Puzzle Start by drawing six dots
More informationLecture 10: Introduction to Correctness
Lecture 10: Introduction to Correctness Aims: To look at the different types of errors that programs can contain; To look at how we might detect each of these errors; To look at the difficulty of detecting
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 15 Testing
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 15 Testing Where we are Some very basic software engineering topics in the midst of tools Today: testing (how, why, some terms) Later:
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 informationBACKUP, CLONE OR IMAGE? WHY YOU SHOULD BE INTERESTED
BACKUP, CLONE OR IMAGE? WHY YOU SHOULD BE INTERESTED BACKUP For most people, this means making copies of important files. If the originals are lost, damaged or inaccessible, the copies can be used. Usually,
More informationCS 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
More informationLimitations of Algorithmic Solvability In this Chapter we investigate the power of algorithms to solve problems Some can be solved algorithmically and
Computer Language Theory Chapter 4: Decidability 1 Limitations of Algorithmic Solvability In this Chapter we investigate the power of algorithms to solve problems Some can be solved algorithmically and
More informationPhysics 306 Computing Lab 5: A Little Bit of This, A Little Bit of That
Physics 306 Computing Lab 5: A Little Bit of This, A Little Bit of That 1. Introduction You have seen situations in which the way numbers are stored in a computer affects a program. For example, in the
More informationfalse, import, new 1 class Lecture2 { 2 3 "Data types, Variables, and Operators" 4
1 class Lecture2 { 2 3 "Data types, Variables, and Operators" 4 5 } 6 7 // Keywords: 8 byte, short, int, long, char, float, double, boolean, true, false, import, new Zheng-Liang Lu Java Programming 44
More information6.001 Notes: Section 4.1
6.001 Notes: Section 4.1 Slide 4.1.1 In this lecture, we are going to take a careful look at the kinds of procedures we can build. We will first go back to look very carefully at the substitution model,
More informationC++ Data Types. 1 Simple C++ Data Types 2. 3 Numeric Types Integers (whole numbers) Decimal Numbers... 5
C++ Data Types Contents 1 Simple C++ Data Types 2 2 Quick Note About Representations 3 3 Numeric Types 4 3.1 Integers (whole numbers)............................................ 4 3.2 Decimal Numbers.................................................
More informationCPS122 Lecture: From Python to Java last revised January 4, Objectives:
Objectives: CPS122 Lecture: From Python to Java last revised January 4, 2017 1. To introduce the notion of a compiled language 2. To introduce the notions of data type and a statically typed language 3.
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 informationCMPSCI 187: Programming With Data Structures. Lecture 5: Analysis of Algorithms Overview 16 September 2011
CMPSCI 187: Programming With Data Structures Lecture 5: Analysis of Algorithms Overview 16 September 2011 Analysis of Algorithms Overview What is Analysis of Algorithms? L&C s Dishwashing Example Being
More informationLearning the Binary System
Learning the Binary System www.brainlubeonline.com/counting_on_binary/ Formated to L A TEX: /25/22 Abstract This is a document on the base-2 abstract numerical system, or Binary system. This is a VERY
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 informationCOPYRIGHTED MATERIAL. An Introduction to Computers That Will Actually Help You in Life. Chapter 1. Memory: Not Exactly 0s and 1s. Memory Organization
Chapter 1 An Introduction to Computers That Will Actually Help You in Life Memory: Not Exactly 0s and 1s Memory Organization A Very Simple Computer COPYRIGHTED MATERIAL 2 Chapter 1 An Introduction to Computers
More informationWorksheet - Storing Data
Unit 1 Lesson 12 Name(s) Period Date Worksheet - Storing Data At the smallest scale in the computer, information is stored as bits and bytes. In this section, we'll look at how that works. Bit Bit, like
More informationTOPIC 2 INTRODUCTION TO JAVA AND DR JAVA
1 TOPIC 2 INTRODUCTION TO JAVA AND DR JAVA Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson, and instructor materials prepared
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 informationLinked Lists
Linked Lists 2-17-2005 Opening Discussion What did we talk about last class? Do you have any code to show? Do you have any questions about the assignment? Can you tell me what a linked list is and what
More informationCOSC 2P95. Introduction. Week 1. Brock University. Brock University (Week 1) Introduction 1 / 18
COSC 2P95 Introduction Week 1 Brock University Brock University (Week 1) Introduction 1 / 18 Lectures and Labs Lectures are Thursdays, from 3pm 5pm (AS/STH 217) There are two lab sections Lab 1 is Mondays,
More informationIntro to Python Programming
Intro to Python Programming If you re using chromebooks at your school, you can use an online editor called Trinket to code in Python, and you ll have an online portfolio of your projects which you can
More informationWe show that the composite function h, h(x) = g(f(x)) is a reduction h: A m C.
219 Lemma J For all languages A, B, C the following hold i. A m A, (reflexive) ii. if A m B and B m C, then A m C, (transitive) iii. if A m B and B is Turing-recognizable, then so is A, and iv. if A m
More informationA computer program is a set of instructions that causes a computer to perform some kind of action. It isn t the physical parts of a computer like the
1 Not All Snakes Slither A computer program is a set of instructions that causes a computer to perform some kind of action. It isn t the physical parts of a computer like the wires, microchips, cards,
More informationMatlab for FMRI Module 1: the basics Instructor: Luis Hernandez-Garcia
Matlab for FMRI Module 1: the basics Instructor: Luis Hernandez-Garcia The goal for this tutorial is to make sure that you understand a few key concepts related to programming, and that you know the basics
More informationSlide Set 1. for ENEL 339 Fall 2014 Lecture Section 02. Steve Norman, PhD, PEng
Slide Set 1 for ENEL 339 Fall 2014 Lecture Section 02 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Fall Term, 2014 ENEL 353 F14 Section
More informationComputer Science 210 Data Structures Siena College Fall Topic Notes: Complexity and Asymptotic Analysis
Computer Science 210 Data Structures Siena College Fall 2017 Topic Notes: Complexity and Asymptotic Analysis Consider the abstract data type, the Vector or ArrayList. This structure affords us the opportunity
More informationBits, Words, and Integers
Computer Science 52 Bits, Words, and Integers Spring Semester, 2017 In this document, we look at how bits are organized into meaningful data. In particular, we will see the details of how integers are
More information1.1 Information representation
Fundamentals of Data Representation: Before we jump into the world of number systems, we'll need a point of reference; I recommend that you copy the following table that you can refer to throughout this
More informationProject 1 Balanced binary
CMSC262 DS/Alg Applied Blaheta Project 1 Balanced binary Due: 7 September 2017 You saw basic binary search trees in 162, and may remember that their weakness is that in the worst case they behave like
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 information6. Advanced Topics in Computability
227 6. Advanced Topics in Computability The Church-Turing thesis gives a universally acceptable definition of algorithm Another fundamental concept in computer science is information No equally comprehensive
More informationSystem.Collections.Generic.SortedSet: who needs another collection anyway?
System.Collections.Generic.SortedSet: who needs another collection anyway? By Bill Wagner The.NET 4.0 library includes an additional collection class: The SortedSet. At first glance, it doesn t seem
More informationC Pointers 2013 Author Riko H i
http:/cdorm.net/understanding C Pointers 2013 Author Riko H i Copyright 2013 CDorm.net All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form
More informationWhat computers just cannot do. COS 116: 2/28/2008 Sanjeev Arora
What computers just cannot do. COS 116: 2/28/2008 Sanjeev Arora Administrivia In class midterm in midterms week; Thurs Mar 13 (closed book;? No lab in midterms week; review session instead. What computers
More informationIntro to Algorithms. Professor Kevin Gold
Intro to Algorithms Professor Kevin Gold What is an Algorithm? An algorithm is a procedure for producing outputs from inputs. A chocolate chip cookie recipe technically qualifies. An algorithm taught in
More informationUsing 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
More informationReactive Programming with RxJS 5
Extracted from: Reactive Programming with RxJS 5 Untangle Your Asynchronous JavaScript Code This PDF file contains pages extracted from Reactive Programming with RxJS 5, published by the Pragmatic Bookshelf.
More informationWin-Back Campaign- Re-Engagement Series
Win-Back Campaign- Re-Engagement Series At this point the re-engagement campaign has ended, so if the prospect still hasn t responded it s time to turn up the heat. NOTE: In the emails below, everywhere
More informationfalse, import, new 1 class Lecture2 { 2 3 "Data types, Variables, and Operators" 4
1 class Lecture2 { 2 3 "Data types, Variables, and Operators" 4 5 } 6 7 // Keywords: 8 byte, short, int, long, char, float, double, boolean, true, false, import, new Zheng-Liang Lu Java Programming 44
More informationIntro. Speed V Growth
Intro Good code is two things. It's elegant, and it's fast. In other words, we got a need for speed. We want to find out what's fast, what's slow, and what we can optimize. First, we'll take a tour of
More informationAlgorithms and Data Structures
Algorithms and Data Structures Spring 2019 Alexis Maciel Department of Computer Science Clarkson University Copyright c 2019 Alexis Maciel ii Contents 1 Analysis of Algorithms 1 1.1 Introduction.................................
More informationMany people find group theory pretty difficult because the logic behind it seems
VISUAL GOUP THEOY Many people find group theory pretty difficult because the logic behind it seems algebraic to the extreme and geometric not at all. However, there are a few ways to visualize groups that
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 informationRecursively Enumerable Languages, Turing Machines, and Decidability
Recursively Enumerable Languages, Turing Machines, and Decidability 1 Problem Reduction: Basic Concepts and Analogies The concept of problem reduction is simple at a high level. You simply take an algorithm
More informationCPS122 Lecture: From Python to Java
Objectives: CPS122 Lecture: From Python to Java last revised January 7, 2013 1. To introduce the notion of a compiled language 2. To introduce the notions of data type and a statically typed language 3.
More informationChapter 11 :: Functional Languages
Chapter 11 :: Functional Languages Programming Language Pragmatics Michael L. Scott Copyright 2016 Elsevier 1 Chapter11_Functional_Languages_4e - Tue November 21, 2017 Historical Origins The imperative
More informationLecture 2 Notes. Outline. Neural Networks. The Big Idea. Architecture. Instructors: Parth Shah, Riju Pahwa
Instructors: Parth Shah, Riju Pahwa Lecture 2 Notes Outline 1. Neural Networks The Big Idea Architecture SGD and Backpropagation 2. Convolutional Neural Networks Intuition Architecture 3. Recurrent Neural
More informationlecture notes September 2, How to sort?
.30 lecture notes September 2, 203 How to sort? Lecturer: Michel Goemans The task of sorting. Setup Suppose we have n objects that we need to sort according to some ordering. These could be integers or
More informationAlgorithms in Systems Engineering IE172. Midterm Review. Dr. Ted Ralphs
Algorithms in Systems Engineering IE172 Midterm Review Dr. Ted Ralphs IE172 Midterm Review 1 Textbook Sections Covered on Midterm Chapters 1-5 IE172 Review: Algorithms and Programming 2 Introduction to
More informationInsertion Sort: an algorithm for sorting an array
Insertion Sort: an algorithm for sorting an array Let s use arrays to solve a problem that comes up often in programming, namely sorting. Suppose we have an array of objects that is in no particular order
More informationLESSON 2 VARIABLES, OPERATORS, EXPRESSIONS, AND USER INPUT
LESSON VARIABLES, OPERATORS, EXPRESSIONS, AND USER INPUT PROF. JOHN P. BAUGH PROFJPBAUGH@GMAIL.COM PROFJPBAUGH.COM CONTENTS INTRODUCTION... Assumptions.... Variables and Data Types..... Numeric Data Types:
More informationMergeSort, 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,
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 informationAlgorithm Design and Recursion. Search and Sort Algorithms
Algorithm Design and Recursion Search and Sort Algorithms Objectives To understand the basic techniques for analyzing the efficiency of algorithms. To know what searching is and understand the algorithms
More informationn = 1 What problems are interesting when n is just 1?
What if n=1??? n = 1 What problems are interesting when n is just 1? Sorting? No Median finding? No Addition? How long does it take to add one pair of numbers? Multiplication? How long does it take to
More informationProgramming Project. Remember the Titans
Programming Project Remember the Titans Due: Data and reports due 12/10 & 12/11 (code due 12/7) In the paper Measured Capacity of an Ethernet: Myths and Reality, David Boggs, Jeff Mogul and Chris Kent
More information4.1 Review - the DPLL procedure
Applied Logic Lecture 4: Efficient SAT solving CS 4860 Spring 2009 Thursday, January 29, 2009 The main purpose of these notes is to help me organize the material that I used to teach today s lecture. They
More informationCS 101, Mock Computer Architecture
CS 101, Mock Computer Architecture Computer organization and architecture refers to the actual hardware used to construct the computer, and the way that the hardware operates both physically and logically
More informationCOMP 102: Computers and Computing
COMP 102: Computers and Computing Lecture 5: What is Programming? Instructor: Kaleem Siddiqi (siddiqi@cim.mcgill.ca) Class web page: www.cim.mcgill.ca/~siddiqi/102.html Motivation The advantage of a computer
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 informationThe name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.
Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that
More informationBinary. Hexadecimal BINARY CODED DECIMAL
Logical operators Common arithmetic operators, like plus, minus, multiply and divide, works in any number base but the binary number system provides some further operators, called logical operators. Meaning
More informationSlide Set 5. for ENCM 369 Winter 2014 Lecture Section 01. Steve Norman, PhD, PEng
Slide Set 5 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 informationHash Tables (Cont'd) Carlos Moreno uwaterloo.ca EIT
(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 informationMemory Addressing, Binary, and Hexadecimal Review
C++ By A EXAMPLE Memory Addressing, Binary, and Hexadecimal Review You do not have to understand the concepts in this appendix to become well-versed in C++. You can master C++, however, only if you spend
More informationTheory of Computation Prof. Raghunath Tewari Department of Computer Science and Engineering Indian Institute of Technology, Kanpur
Theory of Computation Prof. Raghunath Tewari Department of Computer Science and Engineering Indian Institute of Technology, Kanpur Lecture 01 Introduction to Finite Automata Welcome everybody. This is
More informationLecture 5: The Halting Problem. Michael Beeson
Lecture 5: The Halting Problem Michael Beeson Historical situation in 1930 The diagonal method appears to offer a way to extend just about any definition of computable. It appeared in the 1920s that it
More information