i 206 Lecture 5 Algorithms and Pseudocode Marti
- Slides: 34
i 206: Lecture 5: Algorithms and Pseudocode Marti Hearst Spring 2012 1
Let’s Go Through Another Machine/Assembly Language program Goal: Count from 0 to 5, incrementing by 1 each time Images from http: //courses. cs. vt. edu/~csonline/Machine. Architecture/Lessons/ 2
Let’s Go Through Another Machine/Assembly Language program http: //courses. cs. vt. edu/~csonline/Machine. Architecture/Lessons/CPU/index. html 3
How does it all start? Bootstrapping! • How do you get the code loaded into memory in the first place? • Here is one trick: – Hardcode one instruction into the first word of RAM. – The Program Counter always starts at the first memory address. – The program is stored on an external memory device. • Floppy disk, flash memory drive, etc. 4
How does it all start? Bootstrapping! • Loop: – Is the input blank? • Then Halt – Else • Read an addressing instruction from the input into memory address 1. • Read an instruction from the input into the location that is currently pointed to in memory address 1. • Jump to the top of the loop. 5
Instruction in Input (one line) Address in RAM Contents of RAM Meaning 00* 001* Read input into memory address 01 002 800 01 010 017 011 02 03 018 04 012 … 117 10 013 11 218 12 … 13 … After a line of input is processed, the next line is read in. *First instruction is hard-coded into RAM
Instruction in Input (one line) Address in RAM Contents of RAM Meaning 00* 001* Read input into memory address 01 01 002 Read input into memory address 02 800 017 011 02 03 018 04 012 … 117 10 013 11 218 12 … 13 … 7
Instruction in Input (one line) 010 Address in RAM Contents of RAM Meaning 00* 001* Read input into memory address 01 01 002 Read input into memory address 02 02 800 Jump to instruction in address 00 017 011 03 018 04 012 … 117 10 013 11 218 12 … 13 … 8
Instruction in Input (one line) 010 017 011 018 012 117 013 218 … Address in RAM Contents of RAM Meaning 00* 001* Read input into memory address 01 01 010 Read input into memory address 10 02 800 Jump to instruction in address 00 017 (program code) 03 04 … 10 11 12 13 … 9
Instruction in Input (one line) Address in RAM Contents of RAM Meaning 00* 001* Read input into memory address 01 01 011 Read input into memory address 11 02 800 Jump to instruction in address 00 011 03 018 04 012 … 117 10 017 (program code) 11 018 (program code) 013 218 … 12 13 … 10
Instruction in Input (one line) Address in RAM Contents of RAM Meaning 00* 001* Read input into memory address 01 01 012 Read input into memory address 12 02 800 Jump to instruction in address 00 03 04 012 … 117 10 017 (program code) 11 018 (program code) 12 117 (program code) 013 218 … 13 … 11
Summary of This Unit Programming Languages Assembly Language CPU Address Space Circuits Code vs. Data Gates Machine Instructions Orders of Magnitude Boolean Logic Number Systems Bits & Bytes Binary Numbers 12
Summary of This Unit • Boolean logic is used to make logic gates, which build up into circuits. • Binary is used to represent both code and data in memory, in instruction registers, and in the arithmetic logic unit. • Binary instructions move through the circuits, controlling the computer’s operation and also doing the operations themselves. – Adding, subtracting, moving locations. • This is pretty much what it takes to do computation! 13
Distributed Systems Boolean Logic CPU Operation Security Cryptography Network Standards & Protocols Inter-process Communication I/O Operating System Methodologies/ Tools Process Application Memory Compiler/ Interpreter Analysis Data Structures Op-code, operands Instruction set arch Data storage Circuits Lossless v. lossy Info entropy & Huffman code Numbers, text, audio, video, image, … Assembly Instructions Algorithms Machine Instructions CPU Data compression Formal models Finite automata regex Program Memory hierarchy Design Principles Decimal, Hexadecimal, Binary Data Representation Gates Adders, decoders, Memory latches, ALUs, etc. Boolean Logic AND, OR, NOT, XOR, NAND, NOR, etc. Number Systems Binary Numbers Bits & Bytes Truth table Venn Diagram De. Morgan’s Law 14
Distributed Systems Analysis of Algorithms Security Cryptography Network Standards & Protocols Inter-process Communication I/O Operating System Methodologies/ Tools Process Application Program Memory hierarchy Memory ALUs, Registers, Program Counter, Instruction Register Compiler/ Interpreter Analysis Big-O Data Structures Op-code, operands Instruction set arch Data storage Circuits Lossless v. lossy Info entropy & Huffman code Numbers, text, audio, video, image, … Algorithms Formal models Machine Instructions CPU Data compression Assembly Instructions Design Principles Decimal, Hexadecimal, Binary Data Representation Gates Adders, decoders, Memory latches, ALUs, etc. Boolean Logic AND, OR, NOT, XOR, NAND, NOR, etc. Number Systems Binary Numbers Bits & Bytes Truth table Venn Diagram De. Morgan’s Law 15
The central role of algorithms in computer science From Brookshear; Copyright 2003 Pearson Education 16
What is an algorithm? • The idea behind the computer program. • Stays the same independent of: – Which kind of hardware it is running on – Which programming language it is written in • Solves a well-specified problem in a general way • Is specified by: – Describing the set of instances (input) it must work on – Describing the desired properties of the output Adapted from http: //www. cs. sunysb. edu/~algorith/lectures-good/node 1. html 17
Brookshear’s Definition • An algorithm is – – an ordered set of unambiguous executable steps that defines a terminating process. 18
Algorithms: Levels of Abstraction • Problem: motivation for algorithm • Algorithm: procedure to solve the problem – Often one of many possibilities • Representation: description of algorithm sufficient to communicate it to the desired audience – Always one of many possibilities – Programs are representations of algoirthms 19
Folding a Bird from a Square Piece of Paper Origami Primitives Source: Brookshear 20
Origami primitives Syntax vs. Semantics From Brookshear; Copyright 2003 Pearson Education 21
Important Properties of Algorithms • Correct – always returns the desired output for all legal instances of the problem. • Unambiguous • Precise • Efficient – Can be measured in terms of • Time • Space – Time tends to be more important Adapted from http: //www. cs. sunysb. edu/~algorith/lectures-good/node 1. html 22
Algorithm for a Machine Cycle in a CPU • Until the instruction = HALT, execute the following steps: a. Fetch an instruction. b. Decode the instruction. c. Execute the instruction. 23
Algorithms • Hand-waving not allowed! 24
Algorithms • Hand-waving not allowed! • Specifying an algorithm requires you to say what is really involved in making it work. • Example: – How does a computer work? – Hand-wave: zeros & ones – Real answer: see first two weeks of class. • You learn to know when you don’t know – “I know nothing except the fact of my ignorance. ” – Socrates, from Diogenes Laertius, Lives of Eminent Philosophers 25
Expressing Algorithms • English description More easily expressed • Pseudo-code More precise • High-level programming language Adapted from http: //www. cs. sunysb. edu/~algorith/lectures-good/node 1. html 26
Pseudo-code • A shorthand for specifying algorithms • Leaves out the implementation details • Leaves in the essence of the algorithm -1 Code corrected from Brookshear; Copyright 2003 Pearson Education 27
Sequential search algorithm in pseudo-code From Brookshear; Copyright 2003 Pearson Education 28
Primitive Operations • • Assign a value to a variable Call a method Arithmetic operation Comparing two numbers Indexing into an array Following an object reference Returning from a method 29
The RAM Model • Random Access Machine (not Memory) • An idealized notion of how the computer works – Each "simple" operation (+, -, =, if) takes exactly 1 step. – Each memory access takes exactly 1 step – Loops and method calls are not simple operations, but depend upon the size of the data and the contents of the method. • Measure the run time of an algorithm by counting the number of steps. Adapted from http: //www. cs. sunysb. edu/~algorith/lectures-good/node 1. html 30
Counting Primitive Operations Algorithm Array. Max(A, n) Input: An array A storing N integers Output: The maximum element in A. current. Max A[0] for i 1 to n-1 do if current. Max < A[i] then current. Max A[i] return current. Max Adapted from Goodrich & Tamassia 31
Counting Primitive Operations Algorithm Array. Max(A, n) Input: An array A storing N integers Output: The maximum element in A. n-1 times current. Max A[0] 2 steps + 1 to initialize i for i 1 to n-1 do 2 step each time (compare i to n, inc i) if current. Max < A[i] then 2 steps current. Max A[i] 2 steps How often done? ? return current. Max 1 step Between 4(n-1) and 6(n-1) in the loop It depends on the sort order the numbers appear in A[] Adapted from Goodrich & Tamassia 32
Algorithm Complexity • Worst Case Complexity: – the function defined by the maximum number of steps taken on any instance of size n • Best Case Complexity: – the function defined by the minimum number of steps taken on any instance of size n • Average Case Complexity: – the function defined by the average number of steps taken on any instance of size n Adapted from http: //www. cs. sunysb. edu/~algorith/lectures-good/node 1. html 33
Practice Pseudo-code • Recipe for Strawberry Rhubarb Pie ( or chose your favorite dish). • Define Pseudo-code at different levels of description 34
- Mardipäeva kombed
- Expressing algorithms
- Analysis of algorithms lecture notes
- Introduction to algorithms lecture notes
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Prop 206 pto
- The verb jugar (p. 208) answers
- Ee 206
- Comp 206
- Qin dynasty (221-206 b.c.e.)
- Csce 206
- Round 787 206 to the nearest ten
- 206 tl
- Fct beton
- 206 ossa
- 206 to binary
- Hueso corto
- Econ 206
- Comp 206
- Common case fast
- En 206-1
- En 206
- 206 ptt
- Psir 206
- Psir 206
- Plan bus 206
- Ee 206
- Seattle city light utility discount program application
- Stat 206
- Comp 206
- Jose marti ubc
- Marti pagrindine mintis
- Luni marti miercuri joi vineri sambata duminica versuri
- Kurt marti kurzgeschichten
- Gary marti