CS 101 – Jan. 9 • What is this class about? – Using the computer to solve problems – How to make computers useful for people – Understanding what goes on inside (and outside) the machine • Commitment – Find 5 software companies. What are they best known for? Why is their product useful or popular? What is a computer? Memory CPU +* – / % √ Σ file • Machine that stores and processes information • With memory, machine can be programmed. Memory stores software and other files. file • Information inside memory is all in binary! file • CPU’s job is to obey instructions from a program. What is CS? • The study of how we… – – – – Solve problems Classify problems; insight from solutions Represent information, languages How to design better computing system – What is knowledge/information? Comes in various types Software functions What does software need to do? • Input or capture information • Store information for future use • Process: manipulate information and present it in a meaningful form • Output, i.e. allow retrieval of info • Communicate / transmit info to another location • Observe that information can be input to and output from a computer program. What we need • Computer: an electronic device that can process and store information • Communication network • Know-how: the skills needed to make best use of the computer system • In problem solving, we’d like: – Solutions / results useful for people – Find systematic ways of solving problem, so that the method or solution can be adapted to new problems – Speed – Consistency and reliability – Precision Human history • Agricultural age (up to ~ 1800) • Industrial age (1800 – 1950) • Information age (1950 --) – We live in an information-based society. In other words, many tasks are defined in terms of doing something with information. – People and businesses depend on IT to get things done. – Not all countries follow this timeline. Computer History • Analog machines – – – – Abacus Mechanical calculators, adding machines, cash registers Babbage suggested a programmable machine Hollerith adapted Jacquard’s punch cards • Digital machines – ENIAC, ABC, Mark I, Colossus – Became commercially successful in 1950s – Became increasingly affordable by 1980s • Innovations often respond to needs CS 101 – Jan. 11 • Continue overview – Computer origins – Algorithms – Abstraction Before 1940s • Only analog machines, moving parts • Specific purpose – Office machines: typewriter, cash register, adding machine – Herman Hollerith’s tabulator – Sunrise/sunset, celestial navigation • General computing only theoretical interest – Alan Turing 1940s • Code-breaking machines in WW 2 • First general purpose electronic computers – ENIAC, U. of Pennsylvania – ABC, Iowa State – Z3, Konrad Zuse in Germany • Transistor (1947) to have impact later • von Neumann concept forms basis of computer organization US Army photo 1950s & 1960s • Commercially produced computers – UNIVAC – IBM • Programming languages developed to facilitate commands to the machine • Colleges begin to teach computing • Large and expensive, gradually adopted in industry • Moore’s Law 1970s & 1980s • Integrated circuit (1971) allows computers to become much smaller – Intel chips 4004, 8008, 8086, 80286, etc. • Personal (home) computing – Applications for non-specialists: word processing, personal finance, games • Intense competition in HW and SW • Internet initially only used in large companies, universities: low bandwidth 1990s & 2000s • Computer for communication and mass medium • Internet as a virtual library & soapbox • Tech companies (Apple, Microsoft, Intel, Nokia,…) mature and gain clout • Growing need to manage information HW & SW • Hardware – physical computer components – CPU, memory, I/O devices, network • Software – programs that run on machine – Allows computer to do useful work (or play) – Tell the computer exactly what to do – Behind any program is its algorithm • The secret to how it really works • Clearly defined list of steps to solve a problem • Needs to be precise, and spell out details • Analogy: – a restaurant building, versus the actual restaurant Algorithm example • Euclidean algorithm: Given two numbers, find their greatest common divisor…. 1. Let m = larger, and n = smaller number 2. Let r = remainder after dividing m/n 3. If r = 0, then our answer is n, and we’re done. But if r ≠ 0, let m = n, and let n = r, and go to step 2. • Try it out…Do you understand the steps? Does the procedure work? • BTW, an algorithm should also clearly specify its input and output. √ CS 101 – Jan. 13 • Most essential skill: problem solving using the computer – Telling the machine exactly what we want it to do. – Also: making sure result of software is packaged in a way that ordinary people will understand. • Problem solving procedure • What does a solution look like? • Learn by example, and generalize. Review: Algorithm example • Euclidean algorithm: Given two numbers, find their greatest common divisor…. 1. Let m = larger, and n = smaller number 2. Let r = remainder after dividing m/n 3. If r = 0, then our answer is n, and we’re done. But if r ≠ 0, let m = n, and let n = r, and go to step 2. • Try it out…Do you understand the steps? Does the procedure work? • BTW, an algorithm should also clearly specify its input and output. √ Abstraction • Our way to manage complex problems • Big picture first, then the details – Details omitted until they become important – “top-down” design – Ex. Road map • We can study a machine without knowing how to build one Why software? • Want computational power – To have direct control of machine – Sometimes, existing software is not sufficient, doesn’t give what you want – Programs can be useful or fun for people to use (e.g. game, converting data to image, …) • Need to use a computer language – E.g. Javascript, PHP, Python, C++, etc. – Machine independent – Many common calculations are pre-defined, such as sorting, opening files, surfing the Web, creating a form button, etc. Program • One specimen of software is called a computer program • Small or large, purpose is to solve 1 problem. • Works like a recipe – List of necessary ingredients – List of instructions for CPU to obey. • A simple program normally has 3 phases. – Input – Calculations – Output Recipes • Cooking may be a good analogy, because it solves the problem “I’m hungry” • What do we see in recipes? Here’s one: – – – – – – – Brown the beef 15 min. Drain grease. Dice carrot, celery, onion (aka mirepoix) Cut up and boil 6 potatoes until soft. Mash potatoes Add flour, spices, sauce, mirepoix to beef. Put meat mixture into casserole; top with potatoes. Bake in oven at 400 for 30 minutes. Recipes (2) • A computer program has some of the same elements as a recipe. • In recipes, we see: – Ingredients (the “nouns” of the problem) – Steps to perform (the “verbs”) – In some steps, we continue/wait for something – Sometimes we check things • Are potatoes fully mashed? • Should I add more _____ to the mixture? Recipes inside recipes • But we don’t eat the same stuff every day. Once we know a few recipes, we can put together a menu for choices. if if if if (have all ingredients), make Shepherd’s pie. (no potatoes), just make soup instead. (no veggies), make hamburger. (no beef), make pasta. • When you view a whole menu as a program, then “making soup” becomes a sub-program. – A large program is composed of several parts. – In industry, sometimes each part is implemented by different people, like a kitchen having many chefs. Problem-solving 1. Understand problem; inputs and outputs 2. Write solution in English “pseudo-code” 3. Write code in a programming language 4. Compile 5. Run and test • When program works, can refine or generalize. CS 101 – Jan. 18 • • • • What is a program? √ Problem solving procedure √ Step #2 is most important: write solution (algorithm) in English Structure of solution: – Sequence of steps (1, 2, 3, …) – Sometimes make a choice – Sometimes need to repeat • Examples • Commitment: – Look over practice problems Problems • The earliest problems given to a computer were mathematical. • Sometimes there is no clean formula – Many equations can’t be solved analytically. For example: try cos(x) = x. Need to solve numerically. – Ex. Heat equation is a partial differential equation (PDE). Most PDEs have to be solved numerically. – Ex. Calculating a square root. • Even if there is a clean formula, a computer can help automate the calculations. Problems (2) • What kinds of problems do we solve? – Finding directions – Predicting trends (weather, finance) – Games – Record keeping in a business – Networking and communication – Multimedia (e.g. image processing, animation and graphics) – Compressing and encrypting data – Searching for something (spell check) –… Algorithm • A clear sequence of steps to arrive at a solution to a problem. Must specify: – – – – Ingredients Input, output, variables and operations used The order in which steps are taken Means that anybody should be able to follow your directions. There is no ambiguity. • Ideally, each step should perform 1 calculation: – – – – Input or output of 1 value 1 calculation, or 1 decision to make Calculations usually limited to basic math In your algorithm, tedious details can be put off until later. Explain big picture first. Examples • Discuss in general how you would solve these problems: – – – – Print the numbers from 1 to 100. In this list (3, 2, 7, 5, 4) where is the number 5? Which room contains my umbrella? Have 2 people play Tic-Tac-Toe. • Let’s practice fully with these problems: – Ask the user to enter 2 numbers, and output their sum. – Determine a person’s weekly wage, given the number of hours worked and hourly rate. Don’t forget to figure in overtime. – Add the numbers from 1 to 5. Solutions • Algorithm to add 2 numbers – – – – Ask the user to enter 2 values. Obtain the input, and call the values a and b. Set a new variable sum and set it to: sum = a + b. Output sum. • Weekly wage – Get hours and rate from the user. – Set the wage as follows: • If (hours > 40), use overtime formula • Otherwise, use regular formula – Output wage CS 101 – Jan. 20 • Example problems requiring a loop – “How many iterations?” • Practice problems – See handout – Work in pairs to devise solution to 1 problem – We’ll discuss results • Commitment: – Prepare more solutions to practice problems Solutions (2) • Add up the numbers from 1 to 5 – No input! – Need 2 variables: sum and count • The count variable will go from 1 to 5, one at a time. • The sum will start at 0, and we continually add to the sum. – Sum = 0 – Count = 1 – For each value of count from 1 to 5: • Sum = sum + count – Output sum • If we can add 1-5, we can just as easily add 1-1000! Mystery • What does this algorithm do? – No input. – Create two variables: sum and count. – Sum = 0 – Count = 1 – For each value of count from 1 to 20: • Introduce new variable called temp • Temp = count * count • Sum = sum + temp – Output sum CS 101 – Jan. 23 • Continue working practice problems • Commitment: Consider these problems – How would you find the largest/smallest number in a list? – How would you count the number of values that are positive? – Counting vowels in a word. CS 101 – Jan. 25 • Consider these problems – Review searching – Finding largest/smallest – Counting things in a list – More practice problems Search error • What is wrong with this technique for searching for the value 3 in a list? list = [ 8, 5, 2, 8, 3, 6, 1, 9, 4 for each number in the list if that number is 3 found = true else found = false • How should we fix the mistake? ] Largest / smallest • How would you find the largest number in a list? – Assume first number is the largest. – For each of the other values, ask if it is larger than what we think the largest value is. If so, update the largest value. – Also keep track of the location of the largest value, in case that is also desired. • Finding the smallest number is analogous – What should we change? Pseudocode list = { 5, 7, 4, 2, 3, 8, 1 } largest = list[0] location = 0 for count = 1 to 6 inclusive: if list[count] > largest: largest = list[count] location = count Output the largest and location in a sentence, e.g. “I found the value 8 at position 5.” Counting • To determine how many values in a list are positive… • First, need a separate variable, numPositive, initialized to zero. • Ask each number if it’s positive. If so, add 1 to numPositive. No “else” clause is needed. list = [ -6, 0, 8, 4, 1, -2 ] numPositive = 0 for count = 0 to 5 if list[count] > 0 add 1 to numPositive Output the value numPositive in a sentence. Vowels • A word can be thought of as a list/array of characters. • Need a numVowels variables, initialized to zero. • For each character in the word, see if it’s a vowel (a, e, i, o or u). If so, add 1 to numVowels. word = "serendipity" length = the length of word numVowels = 0 for each letter c in the word if c is a,e,i,o or u add 1 to numVowels Output numVowels in a sentence. Programming note • In Python and other languages, if you need to ask several questions inside in if-condition, you need to separate each one with and/or as appropriate. • Each individual condition must be a complete question. • Illegal: if (c == ‘a’ or ‘e’ or ‘i’ or ‘o’ or ‘u’): if (x > 10 and < 20): • Legal: if (c == ‘a’ or c == ‘e’ or c == ‘i’ or c == ‘o’ or c == ‘u’): if (x > 10 and x < 20): Practice problems • Given a list of numbers, how many are multiples of 5? • Given a year, is it a leap year or not? • Given a number, is it a prime number? • Remaining practice problems from handout. CS 101 – Jan. 27 • Finish practice problems: designing solutions in English • Various ways of sorting • Handout: – Getting to know Python Examples • Given a year, is it a leap year or not? – Julian definition – Gregorian definition • Given a number, is it a prime number? • Remaining practice problems from handout. – Double letter (repeated value in a list) – Recognizing a 4 digit number • We know how to find the largest number in a list – What about finding the 2nd largest or 3rd largest…? Sorting • Much studied problem in computing – many ways to do it. • Given a list, need to arrange it “in order”. Either ascending or descending. • Some methods do better based on type of data or how the values are distributed. • Enjoy this Web site demo of sorting methods: http://cg.scs.carleton.ca/~morin/misc/sortalg Some Methods • Selection sort: Find the largest value and swap it into first, find 2nd largest value and put it 2nd, etc. • Bubble sort: Scan the list and see which consecutive values are out of order and swap them. • Insertion sort: Place the next element in the correct place by shifting other ones over to make room. • Merge sort: Split list in half until just 1-2 elements. Merge adjacent lists by collating them. Homework • Due Monday, at the start of the lab period • Write a short report. Identify 5 software companies. For each one: – What is the company best known for? – Why is their software popular? In other words, why do people find their programs useful? – Quantify how well the company is doing financially. For example, what is the company’s revenue averaged per employee? – Describe employment opportunities at the company (e.g. according to their Web site). • Use highly reputable sources of information, and include all citations/references. Don’t plagiarize. • Turn in a typed document; aim for about 1000 words total. CS 101 – Jan. 30 • Sorting – Selection and Bubble √ – insertion: place next element in correct place by shifting over other ones to make space – Merge: Repeatedly split list in half until 1-2 elements each. Then merge adjacent lists by collating them. • Computer languages • 3 kinds of software errors Language evolution • Machine language • Assembly language – Like machine language, also unique to each manufacturer • High-level language – – – – – FORTRAN, COBOL Pascal, Algol, Ada C, C++, C# Java, Javascript, Python many more Example • How would we calculate: 12 + 22 + 32 + … + 202 ? • Let’s create our own solution, and see what the “code” looks like in different types of languages: – Machine language – Assembly language – High-level language Machine language 00003000: 00004000: 00004004: 00004008: 0000400c: 00004010: 00004014: 00004018: 0000401c: 00004020: 00004024: 00000014 200c0001 20080000 3c0a0000 354a3000 8d4a0000 018a4822 1d200005 018c0018 00005812 010b4020 00004028: 0000402c: 00004030: 00004034: 218c0001 08001005 2008000a 0000000c help me! Assembly language numValue: .word 20 __start: addi $12, $0, 1 addi $8, $0, 0 lui $10, 0 ori $10, $10, 0x3000 lw $10, 0($10) while: sub $9, $12, $10 bgtz $3, end mult $12, $12 mflo $11 add $8, $8, $11 addi $12, $12, 1 j while end: addi $8, $0, 10 syscall HLL (Pascal) var sum : integer; count : integer; begin sum := 0; for count := 1 to 20 do sum := sum + count * count; writeln(sum); end. Bugs • Any mistake made in a computer program • Term ‘bug’ coined by Grace Hopper, ca. 1950 • 3 kinds of bugs – Syntax errors – Run-time errors – Logical errors • Beyond bugs, program can be just slow! – Ex. Ineffective ways of finding the divisors of some number. CS 101 – Feb. 1 • Practice the problem-solving procedure Let’s write these programs: – Example: time zone program – Example: a guessing game • Handouts: – Source code for the examples – Review for test 1 CS 101 – Feb. 6 • Secret communication – Steganography – Cryptography • Goal – Sender has message intended only for recipient. How to protect from detection or eavesdropping? • Definitions • Examples • No lab but please read: – Chapter 1 in The Code Book Steganography • Secret message is hidden inside larger document • How? • Microdotting – requires special equipment – Having this equipment makes you target of suspicion • Sprinkle the message into much larger area – Ex. Add a letter to every 7th page of a book – Slightly modify pixels of an image Cryptography • Modify the message so that if it’s discovered, only the recipient can understand it. • A “cipher system” consists of the following: • Plaintext = the message you want to send/conceal • Ciphertext = what actually gets sent • Encryption and decryption functions – Each function requires a key – To encrypt a message, sender uses the encryption function: inputs are the encryption key and plaintext message. – Receiver decrypts the message: uses the decryption function: inputs are the decryption key & ciphertext. Cryptography (2) • Cryptography is the science of developing good cipher systems – What encryption and decryption functions should we use? – What are good key values? – Should the keys be the same or different? • Cryptanalysis = trying to figure out plaintext from the ciphertext, when you don’t have the key – Who would want to do that? ASCII code • To manipulate text, we need to treat each letter in a message like a number. • “American Standard Code for Information Interchange” • The letters A – Z are assigned the consecutive values 65 thru 90. Examples: – ‘A’ + 10 = ‘K’ – ‘K’ – 10 = ‘A’ • ASCII codes are also assigned for lowercase letters and all other symbols you can type Caesar cipher • The key is a secret number from 1-25. This number gets added to each letter. • Julius Caesar liked the number 3 • How do you decrypt the message? • What happens if we add 3 to X, Y or Z? • Cryptanalysis: How does one try to “break” the code? OAAW FTQ DAMEF UZ HUZQSMD CS 101 – Feb. 8 • • • • Simple methods of encryption Transposition Substitution Better substitution methods • Important fact: the method you use might not be a secret, but the key must be! • Please read chapter 2 in Code Book Transposition • Change the order of the letters in our plaintext message • Easy approach: collect the odd # letters (1st, 3rd, 5th, 7th, …), then the even # letters (2nd, 4th, 6th, 8th, …). – In this case, we say that the period or key is 2. • Can try a larger key, which means a longer period. – Ex. Key = 4 means collect the 1st, 5th, 9th, 13th, … followed by the 2nd, 6th, 10th, 14th, etc. – In other words: Write your message in rows 4 letters long. Add Z’s to end to make last row complete. The ciphertext is obtained by reading columns down! Substitution • Most cipher systems use substitution: instead of moving letters around, change each letter into a different symbol. We can get very creative! • Caesar cipher – Easy to use, but only 26 possible keys (including a bad one) • The general substitution cipher – Not restricted in merely shifting the alphabet – We have 26! keys instead of 26 continued • Instead of adding a constant to each letter, scramble the assignment more randomly • One problem is how to “remember” the key. The key is not a number, but the sequence of 26 letters. – Ex. Identify a key by the letters of some word or phrase. Cryptography, page 26: “we hope you enjoy this book” gives the key: wehopyunjtisbkacdfglmqrvxz • Cryptanalysis? – Newspapers have “cryptogram” puzzles – Uncover a weakness of substitution method – Even worse if the message is long Improvements 1. Nulls: cipher includes symbols/numbers that mean nothing 2. Misspell words: use unusual letters more often 3. Homophonic cipher: common letters can be represented by 1 of several possible values 4. Code words – Pure encoding means we encipher by words, not letters – Nomenclator: just encode certain words 5. Polyalphabetic cipher: use multiple ciphers and alternate. Useful to hide double letters CS 101 – Feb. 10 • Chapter 2 – – – – Pinprick method Great Cipher of Louis XIV Vigenère cipher Book (Beale) cipher • Some implementation details – Caesar cipher – List of lists for homophonic ciphers • Homework due Monday • Please read chapter 3 of Code Book Early examples • Pinprick method – Long history from Ancient Greece… Victorian England – Is this steganography or cryptography? • Great Cipher of Louis XIV – Encode syllables – To thwart the cryptanalyst , also add cipher values for individual letters (even silent ones) Backspace symbol to tell decrypter to delete previous symbol • Homophonic cipher – E.g. Table on page 53 Vigenère cipher • Example of polyalphabetic cipher • Has the effect of using many Caesar ciphers simultaneously. • The key is a word or phrase • Cycle through the letters of the key, to tell you what should be added to the next plaintext letter – Repeat the key as often as needed. – Singh says subtract 1 from your answers. Piper does not. It doesn’t matter as long as you are consistent. • Considered unbreakable until mid 19th century. Breaking Vigenère • Charles Babbage performed the cryptanalysis, to show this cipher is not perfectly secure • Look for repetitions of short letter sequences • How far apart are they? • Determine length of the key • Since Vigenère is several Caesar ciphers, do each pattern separately (1,6,11,16…) ; (2,7,12,17…); etc. • Compare statistical distribution of letters. Shift it over until it matches A-Z: shift amount is the key. Book cipher • Reminiscent of homophonic cipher: each letter can be represented by 1 of several possible numbers • The key is a long document, e.g. hundreds of words • Number the words 1,2,3… • Take note of first letter of each word – E.g. (1)take (2)note (3)of (4)first (5)letter (6)of (7)each (8)word. In this case, ‘o’ may be enciphered by 3 or 6. Python coding • See handout for Caesar cipher example • In Python, we need to be able to: – Open files for reading and writing – Read entire file into a string variable – For each letter in the file, we need to perform arithmetic on it, before writing it to the output file – Obstacle: Need to convert string’s letter to a number so we can add/subtract; convert back to letter. • To do homophonic encoding… – Key is a list of lists! For each letter A-Z, specify what numbers could represent it. Homework for 2/13 • Select a sentence in the Code Book at least 10 words long. Encrypt it in 2 ways: 1. Use a transposition cipher with a key of 5. 2. Use a Vigenère cipher, with your first name as the key. • Treat capital & lowercase letters the same. • Carefully show how each letter of the ciphertext is derived. • For each answer, show how you would decrypt it. • Please type your homework, not handwritten. CS 101 – Feb. 13 • Review Python example – File I/O, loop on characters, change letters – Running the Caesar cipher • Messages sent by radio • Review polyalphabetic ciphers (Vigenère) – One time pad improvement • Please read Code Book, pp. 127-160 – covering Enigma Radio technology • No longer necessary to send message by – Line of sight – Messenger, mail – Physical wire • Enemy can just as easily hear your message – Increased demand for cryptography by WW1 • 1 more piece of information: traffic analysis – Can identify radio operators by how they taps Morse code – Take note of direction and strength of signal – Over time, deduce movement of battalions… Polyalphabetic • Vigenère cipher was good – How does it work? • Babbage’s cryptanalysis – We know that the key needs to repeat while enciphering. – Look for repeated substrings in ciphertext key length – Once you know key length, you have n Caesar ciphers. Check the letter frequency of each to see how much the alphabet “shifted” • But also possible to break even if key is very long & no substrings repeat – Example pp. 117-119 continued • Observations – Let’s assume that the key is a real word or phrase. – Trial & error: find where “the” could be. See which locations yield possible words in key. “can” and “ypt” are plausible, but “bsj” is not. – When you find letters in the key that form part of a word, fill in the remaining letters of the word, to see if more of the plaintext can be deciphered. We know the plaintext has to contain real words. e.g. Egypt seems to work – Once you have a word of the key, see if it’s part of a logical pattern, such as a list of countries. Lesson • To use a Vigenère cipher effectively, the key: – Should be long, so that repeated letters in ciphertext are not obvious or do not occur – Should consist of random letters, because real words make it breakable, as we just saw. e.g. Inserting “the” at various places in the plaintext should not give clues about the key • The result is called a one-time pad – To get a really long key, you distribute a “code book” to your agents. – Japanese version: encode entire words. Instead of replacing with a random number, add to a random number Random key helps • Cryptanalyst is forced to try all possible keys to see which one generates meaningful plaintext • But, many possible messages are possible. – E.g. if message length is 21, then all possible messages of size 21 will be found. Impossible to tell which one is “correct” because key does not have any clues. • 3 problems with one-time pad – How to distribute it to the field, maintain security – How to create the random key – Too difficult to use under extreme conditions. In some cases, on a negative acknowledgement, people resend message in plaintext in frustration or desperation. CS 101 – Feb. 15 • Lab recap • Improvements to Vigenère cipher – We want a long, random key – Doing it for Japanese – Automating the process: do it by machine Enigma, Typex, SIGABA • Please finish chapter 4 in Code Book String loop • Let’s understand the loop we used in steganography for i in range (0, len(text)): if i % 100 == 0 and i/100 < len(secretMessage): outFile.write(secretMessage[i/100]) else: outFile.write(text[i]) • Let’s interpret this in English • For every 100 characters of “text” we write 1 letter of the secret message. Ex. What happens when i equals 700? Japan’s code • One-time pad (e.g. JN-25) – Dictionary table: convert each word to a 5-digit number – Additive table: add the next random number to each word – Preface the message by indicating where in additive table you are starting the encoding – Tables may be periodically changed. – Example: encryption code book.xlsx Enigma • • • • • Arthur Scherbius, 1918 Used by Germany through WW2 Commercial and military versions Served as basis for other cipher machines How to use – Set machine to today’s starting position – Has usual keyboard – As you type, display lights up the ciphertext letter, which you need to write down – As you type, scramblers rotate to next position, i.e. to next letter of the Vigenère “key” Scrambler • Disk containing wires that connect each letter on keyboard with different ciphertext letter for display board. – You type “A”, may be connected to “D” – But then the scrambler rotates, so the next “A” may be connected to a different letter (p. 129) – Effect Vigenère cipher with random key of length 26 • Two scramblers – Effectively means we have two keys. – Plaintext + key1 + key2 = ciphertext – Like odometer, second scrambler rotates less often Strength of cipher • Enigma used 3 scramblers out of a possible 5 – Length of key = 26 * 26 * 26 – Number of scrambler choices = 5 * 4 * 3 = 60 – (Similar American device “SIGABA” used 15 scramblers) • Plugboard – 6 pairs of letters were swapped before entering scrambler Ex. Change “A” to “B” before adding the cipher keys – This increases # of possible keys, making cryptanalysis more confusing • “Code book” tells operator what daily machine settings are CS 101 – Feb. 17 • Enigma: mechanized Vigenère • Breaking the code – If you can mechanize enciphering, why not mechanize cryptanalysis? – Intelligence on how Germans used Enigma – The work of Marian Rejewski and Alan Turing • Please read chapter 6 in Code Book thru p. 279 Breaking the code • What skills are needed to be a cryptanalyst? – Prepare for the worst: The Germans might make your work in the future more difficult. • Day key and message key • Four messages today might begin like this L O K R G M M V T X Z E J K T M P E D V Y P Z X • L and R are encryptions of the same letter, etc. Letter chains A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F Q H P L W O G B M V R X U Y C Z I T N J E A S D K • Look for patterns! Example: A F W A • All letters belong to some chain • The length of the chain is a fingerprint of the scrambler settings for today. • We separate out the problem of the letter identity • Bombe: automatically try all 263 settings. • Plugboard? Look for words that are almost spelled right. German mistakes • Repeating the message key • Not allowing a scrambler to be in the same position (left, middle, right) two days in a row • Plugboard cannot link 2 letters next to each other on keyboard • Predictable structure of message, time of message Alan Turing • Bletchley Park contributions – Extending the work of Rejewski – Relied on fact that weather reports start with word “wetter” and used this to deduce initial scrambler setting But what if you are off by a couple of letters? Fortunately, more help from German constraints. • Turing Machine – He was interested in theoretical boundaries of what a computer could accomplish – Machine has: instructions, internal memory, tape – Turing proved that not all problems can be solved CS 101 – Feb. 20 • New flavor of cryptography: numbers – Transpose bits – “add” bits – Data encryption standard • Problem of sharing keys… solved! – Diffie-Hellman protocol • Please finish reading chapter 6 in Code Book Binary • Computers represent all data, including text, in the form of binary numbers • p. 246: ASCII codes for capital letters • Cryptography can now be done at a minute level: manipulate individual bits • Transposition cipher – E.g. Every 3rd bit swaps with bit to its right – It’s possible the last bit of a letter swaps with first bit of the next letter Vigenère in binary • If we adapt the Vigenère cipher to the binary representation of text, we get XOR cipher • Example p. 247 • Line up the bits for the addition: 0+0=0 1+1=0 0+1=1 1+0=1 – In other words, if the bits are the same, result is 0. If bits differ, result is 1. There is no carry. • Data Encryption Standard – Performs many successive steps of transposition and XOR – Key length 56, later increased. Key problem • One lingering problem since antiquity: how do 2 people share the key privately? – Need to coordinate in person periodically, or – Hire a trusted 3rd party to relay your keys – Expensive • Whitfield Diffie’s vision – – – – People will need privacy online Handling keys in person only is impractical Is there a technological solution? Yes! Collaborated with Martin Hellman and Ralph Merkle at Stanford Math idea • Some functions are 2-way (easy to undo) • We need a 1-way function (hard to undo) so that an eavesdropper cannot discover the key – The 1-way function they used was “mod” or remainder calculations. • Example, f(n) = 3n mod 19? – Given a value of n, calculating f(n) isn’t too hard. – But given a value of f(n), there is no obvious way to determine n except trial and error! – In practice, the “19” should be replaced by a much larger number. Diffie - Hellman • Method for 2 people to establish a private key • Choose values p (prime) and q • Sender – chooses secret value a, and computes A = qa mod p – Sends A, p, q – Eavesdropper cannot easily determine a • Receiver – Chooses secret value b – Computes B = qb mod p and K = Ab mod p – Sends B back to sender, who can compute K = Ba mod p • Both methods of computing secret K are equivalent – Ab mod p = (qa)b mod p – Ba mod p = (qb)a mod p CS 101 – Feb. 22 • Recap Diffie-Hellman protocol – what is it? • How to calculate something like qa mod p? • Asymmetric cipher system: RSA • Please read Piper: pp. 53–56, 70–71, all of Chapter 6 “mod” properties • • • • (In Python, the symbol for mod is %) x mod y is always less than y If x < y, the answer is x. If x is a multiple of y, the answer is 0. • The 10th day of the year is in which month? – What about the 20th day, the 40th, the 100th ? These are essentially mod calculations, except that the month lengths are not quite the same! • What time is it, 75 hours after midnight? Asymmetric ciphers • Perennial problem in cryptography: key security • One solution is Diffie-Hellman protocol • Diffie thought of another approach – Use separate keys for encrypting and decrypting (this is why it’s called asymmetric) – Each person has a public encryption key, and a private decryption key – These keys don’t need to change often – No messages need to be passed to compute value of keys. It can be arbitrary & predetermined. Challenge • What kind of math formula can support asymmetric ciphers? • Goal: we want secure decryption key, but publicly known encryption key. • RSA system – The key value N is the product of two large prime numbers N = pq – Given N, there is no algorithm, other than trial and error, for determining values of p and q. – Ideally, N should be very large, e.g. hundreds of digits. – See Appendix J. RSA • Choose secret & distinct 512-bit random primes p and q • Let N = pq, and let M = (p – 1)(q – 1) • Choose (another) public encryption key e: a value less than and relatively prime to M. – Message is x. Sender transmits: y = xe mod N • Choose private decryption key d: where ed mod M =1 – e and N are public; outsider should have a tough time factoring N to obtain p and q to determine d – Recipient converts: z = yd mod N which should equal x. Example • Choose secret primes p,q • N = pq; M = (p – 1)(q – 1) • Choose e < & relatively prime to M. • Message is x. Compute and send y = xe mod N • Pick private decrypt key d where ed mod M = 1 • z = yd mod N, which should equal x. p = 31, q = 41 N = 1271, M = 1200 e=7 x = 12 y = 127 mod 1271 = 1047 d = 343 z = 1047343 mod 1271 = 12 It works! CS 101 – Feb. 24 Topics in cryptography • “Perfect secrecy” • Hash functions • Practical considerations • For Monday, please read Piper chapters 7 and 9 Perfect secrecy • Purpose of cipher system is to protect you in case an eavesdropper finds your ciphertext • But, even presence of the message itself may be enough information for the enemy – Eve will try to guess plaintext even if no ciphtertext – Don’t be too predictable! Advice • Very short message (e.g. 1 char) can’t be broken with any certainty • Try to have as many possible keys as possible messages. (key length >= message length) • Cryptography is just 1 facet of overall security – If you notice someone is trying to guess your PIN or password, how can you tell? What should happen? Hash functions • Many applications in CS – An efficient way to store lots of data, for easy retrieval later – Quickly determine whether data has become corrupted – Provide password security • It’s a 1-way function: used to encrypt passwords – When you enter your password, p, the system computes value of e(p) – Your correct password, c, is already stored in encrypted form e(c) – If e(p) == e(c), then you are “authenticated” Hash functions (2) • Why do it this way? – If password file is compromised, thief really has no information – If you lose your password, no one can retrieve it very secure. In this case, a new password is generated • One way to do it: – – – – Multiply first letter value by 3 Add 2nd letter value. Multiply answer by 3. Add 3rd letter value. Multiply answer by 3. Continue… At each point, take mod by a large prime ~ 1 billion Hash functions (3) • Another purpose: provide digital fingerprint to a file • Associate with each file a single numerical value, like a serial number – For example, the file size – There is a slim chance that 2 files will map to the same number. • Quick way to determine if your files have been altered or damaged. Saves space. Collisions • When using a hash function, it’s possible for two items (e.g. message/file) to have same hash value. – Two passwords might be treated the same, e(p1) versus e(p2). • Issues: – Do you want to design a hash function that will handle all collisions? Or, is it acceptable to have a tiny probability of collision? – Techniques to handle collision, e.g. add 1 Practical considerations • One-time pad & RSA are really good cipher systems – But only if used properly. 3 is not a good choice of a prime number. • Better security requires higher cost – More computational time, more memory may be needed • Questions to consider – Do you really need to encrypt it? – Is the information confidential forever, or might it become obsolete soon? – What is the cost of compromised data? Breakability • Cryptanalysis often relies on “exhaustive key search.” What does this mean? • How does Moore’s Law relate? • What can an attacker do to speed up a search? • RSA & Diffie-Hellman rely on unsolvability of certain number theory problems – (we have faith in them) – But will someone discover short cuts? • We should be seeking out better 1-way functions just in case! Learn from history. CS 101 – Feb. 27 • Uses of cryptography – – – – – It’s not just to thwart eavesdroppers Data Integrity Authenticating people or data Non-repudiation Examples in chapter 9 • For W, Please read last chapter (8) in Singh • Lab today on RSA Data integrity • • • • A hacker might not care what your message says Wants to modify / corrupt it Just encrypting your data won’t help Need to – Recognize genuine data, unchanged from the source – Detect unauthorized access or change (security) • Preventing the attack might not be necessary – We have backups of the data Attacker strategy • Look for a long file/message to decrypt • Cryptanalysis • Once you discover the key, insert your own message in the original’s place • How to make attacker’s job harder: – During the message, modify the key so that it depends on an earlier part of the message – In effect, you are sending several messages, each with different keys Authentication • “How do I know it’s from you?” • 2 types: for “entities” and data • Ways to authenticate users: – Something known (password) – Something possessed (physical key/token/file) – Intrinsic property (retina, static IP address) • 1-way & 2-way authentication – When you set up your account, you can ask bank to always display some message when it asks for password – Fake login scams Data integrity • A sends message to B. (p. 95) – B wants to be assured data hasn’t been altered. – B wants to verify it really came from A, not someone else. • Some encryption algorithm is used as the “authentication function,” with a key • Both A & B share a secret key – very common in cryptography – Can be set up ahead of time or with Diffie-Hellman • A computes message’s authentication value, and appends it to message • B performs same computation for verification Digital signature • Data integrity with extra feature: proof of origin – Sender can’t later deny sending message! – In ordinary authentication, an imposter could have used Diffie-Hellman to pretend being A. • DS relies on sender’s public and private keys – The two keys are mathematically related – Sender must use private key to compute the message’s digital signature (analogous to authentication value) – Receiver uses sender’s public key to verify origin – See p. 98. – Why is the message “hashed”? Attacker strategy • Impersonating you: “Hey, I just changed my public key.” – Computes new public and private key, and claims they belong to you, so he really looks like you online – Can now perform digital signatures just like they came from you • Response: 3rd party trust – Your public key needs to be verified by a Certification Authority, known to your Web browser and the receiver of your message. – E.g. Verisign Case Study: ATM • Features both privacy and data integrity • Attacker’s plans – – – – Impersonate you Intercept communication to bank Alter amount of money bank knowing Duplicating transaction without bank knowing CS 101 – Feb. 29 Imagine the future of cryptography… • What if there were no such thing? – i.e. encryption futile because every computer has capability to break the code – Quantum computer: test every possible key simultaneously • Other extreme: What if there existed an unbreakable cipher system? – Quantum cryptography: securely establish a random key • (This view of future depends on our current understanding of physics) Intro notes • Some research is done in secret – We may be unaware of state of the art • Cat/mouse game – Cryptographers want better cipher system – Cryptanalysts want better computer • There is more to security than just finding/breaking a secure message – – – – Knowing message exists may be enough information Knowing source or destination may be enough Much traffic is poorly or not encrypted anyway Cipher system software may be hacked (e.g. backdoor) Quantum computer • Similar to idea of parallel computing • No one has built one yet, still a theory (or Sci Fi) – Charles Babbage had the same problem • What does “quantum” mean? – When you are not looking at something, it may exist in different states simultaneously. – Sounds bizarre, but idea works well in physics already. • HW trend: chips keep getting smaller – So, let subatomic particles represent basic units of information, the 0 and 1, depending on its spin. continued • 0 and 1 are different spins of a particle • Hit a particle with burst of energy to change it • Hit it with less energy: enters indeterminate state enters both (i.e. 2) states! • Hit n particles with low energy can represent any number from 1 to 2n. • Ex. Which number from 1 to 128 has a certain property? – Create a number x consisting of 7 particles. – Bombard x with low energy. Meanwhile, tell x to test itself. – The correct x will print itself as the solution. Challenges • HW: We don’t even know if we can create a quantum computer • SW: How to write a program for such a machine – Need to maintain indeterminate state for long enough for the computation to finish – Need to conceive of a new way to write programs – Some success (p. 330) – But we still can’t test it, since no machine exists • If we overcome these problems, what do we have? – The means to try all keys simultaneously – Can quickly break anything Quantum cryptography • More realistic possibility • Based on vibration or “polarization” of photons • When we transmit light particles, we can set orientation of each, e.g. the 4 directions: | – \ / – a means of encoding messages • Receiver detects orientation of photon using a Polaroid filter – We’d like a perfect filter: e.g. a vertical one accepting | photons and rejecting all other types. – No such luck! 50% of / and \ get through due to physical nature of light. These will look like | too: p. 333. continued • Suppose you set up a | filter. – If a photon passes through, you only know it is not – . – If a photon is blocked, you only know it is not | . – Same kind of problem with any other filter. • In order to be sure, you have to know the orientation of the filter to use. – If you know a photon is either | or –, you can use a | filter. – If you know it’s either \ or /, then you can use a / filter. – Sender may send | – \ or /: choice of orientation may change on each photon. – List of orientations (rectilinear or diagonal) becomes key! Message • To send a message: – – – – – Convert it to binary, e.g. 101100110011 … For each bit, also select photon orientation (|– , or \/) So, each bit of your message is one of 4 possible values In effect, the message key is as long as the message. See pp. 340, 342, 343. • Eavesdropper (Eve) has to guess at orientation of each photon. – Often wrong, e.g. passing thru | could mean | or \ or /. • Alice & Bob need to establish the key securely – Follow example, and try card analogy (pp. 344-345) Making the key Alice wants to send 101100110011 Arbitrarily chooses directions ++X+XXX+X++X Therefore she transmits |-/|\\/|\-|/ Bob guesses directions +X++XX++X+XX Bob observes thru filter: 100100110001 (When was Bob lucky?) _yn___y___n_ After sharing orientations, which bits do we keep? 1--100-100-1 • Eve doesn’t know which bits to discard. • Key will be random, so can use it in a 1-time pad • Method has been shown to work for short distances. CS 101 – March 12 Start of unit on representing information • Bits and bytes • Numbers: – interpreting: binary decimal – encoding: decimal binary • If time permits, shorthand ways of writing binary Bits • All information in computer is in binary form (0/1) • Smallest unit of information is the bit: a single 0 or 1 • When we have lots of bits, usually grouped in set of 8 called a byte • Basic building block of CPU is the logic gate, which manipulates bit values. – Very fast – Logic gates combine to perform math operations Numbers in binary • Place value system just like decimal – We understand 278 = (2 * 100) + (7 * 10) + (8 * 1) • In a binary number: – Each digit is either a 0 or 1 – Digits are multiplied by powers of 2, not powers of 10. • For example, 001110 and 100011: 32 * 16 * 8* 4* 2* 1* Value 0 0 1 1 1 0 14 1 0 0 0 1 1 35 Powers of 2 • • • • • 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 … • 210 ~ 1 thousand • 220 ~ 1 million • 230 ~ 1 billion • Let’s say we have 4 bits. – What is the lowest # ? – What is the highest # ? • What if we had 5 bits? • Is there a pattern? Decimal binary • One thing to note is that binary numbers are “longer” than decimal. – A 5-digit decimal number may turn out to be 15 bits long. • My technique is the “binary store” – – – – All merchandise is priced $1, $2, $4, $8, $16, … You enter store with some money, say $45. Goal is to always buy most expensive gift possible. So, 45 = 32 + 8 + 4 + 1 32 * 16 * 8* 4* 2* 1* 1 0 1 1 0 1 Another example • Convert 61 to binary: • Go to binary store with $61… 61 = 32 + 16 + 8 + 4 + 1 Another way to write this is: 61 = 25 + 24 + 23 + 22 + 20 • Our binary answer is 111101. CS 101 – March 14 Data representation • Shorthand of writing binary: hexadecimal notation • Text – ASCII and Unicode • Sound • Images Numbers in a byte • A byte is 8 bits • So, how big can an 8-bit binary number be? • Hexidecimal shorthand – 8/4 = 2 hexidecimal digits per byte – What do the letters ‘a’ – ‘f’ mean? a = 10, b = 11, c = 12, d = 13, e = 14, f = 15 – Example: 010111102 = 5e in hex. – Try this one: 1110002 = ______ in hex. – Try this one: a4c in hex = ________ in binary. Text • Fundamental unit is the character. • Each character of a text document is given a numerical code. • ASCII code – Contiguous (make it easy to alphabetize) – Case sensitive – One byte per character • ASCII table – ‘A’ = 65 ‘a’ = 97 ‘0’ = 48 – Try encoding the word: “Dog” Unicode • To support foreign alphabet and misc. symbols. • Extension of ASCII • 16 bits per character, rather than 8 • unicode.org has code charts • Codes are given in hex. CS 101 – March 16 • Sampling – Frame rate in a video – Sound representation • Images – General concepts – Grayscale (black & white) – Color Sampling • “Real” sound and visual data are continuous, constantly changing • Sampling means to take rapid snapshots • Video: 30 images a second is good enough for our eyes • Real sound is in the form of a wave • Sampling sound means finding points along the curve. – Music CD: take a reading 44,100 times a second, and store as a 16-bit number… How much data is captured in 1 hour? – MIDI (= Musical Instrument Digital Interface) uses far less space, though does not sound like an actual recording. Images • Fundamental unit is the pixel • Usually 8 bits (1 byte) per pixel – This means each pixel is assigned a value from 0 to 255 – What do these numbers mean? Depends on color system – Grayscale = system for B/W images • Image dimensions are (horiz x vert) – Ex. 400 x 300 120,000 pixels • Aspect ratio – When changing size, this should not change. Resolution • Resolution – total number of pixels in image – “hi res” takes up more space – “lo res” means pixels become more obvious, pixelated Dynamic range • Dynamic range – how many colors / how many shades of gray – High dynamic range: more bits per pixel – Low dynamic range: may obscure features B/W vs. color • B/W: usually 1 byte per pixel – Each pixel = grayscale number 0-255 – Ex. 180 is a brighter shade of gray • Color: usually 3 bytes (24 bits) per pixel – Each pixel has 3 values, each 0-255 – Ex. (200, 50, 128) = ? – Most common scheme is RGB, where each pixel has a red #, green #, and blue #. RGB system • Based on primary colors for light • (red, green, blue) • Examples – Black = (0, 0, 0) – Purple = (75, 0, 100) – White = (255, 255, 255) • How about (x, x, x) or (0, 0, x) ? RGB examples Color R G B Black 0 0 0 White 255 255 255 Red 255 0 0 Green 0 255 0 Blue 0 0 255 Cyan 0 255 255 Magenta 255 0 255 Yellow 255 255 0 Q: How do we get “other” shades of blue? Indexed color • Do we really need 24 bits to represent color of one pixel? – This means we allocate 16,777,216 colors! – About 200 would be more practical • Indexed color is a “compressed” RGB – 6 values of each primary color, not 256 – Use hex values 00, 33, 66, 99, cc, ff – This is the color system used on the Web. • 1 byte per pixel instead of 3 • Use “dithering” to simulate in-between colors. CS 101 – March 19 • Review indexed color – Restricted values of each primary color – Dithering • Adding binary numbers • Integer rep’n in general – Unsigned – Signed – Biased the most important of the 3 Binary addition • Analogous to decimal addition you know • Only a few cases to consider – just watch out for carry. – 0 + 0 = 0 (no carry) – 0 + 1 = 1 (no carry) – 1 + 1 = 10 (sum = 0, carry = 1) – 1 + 1 + 1 = 11 (sum = 1, carry = 1) • Example, 6-bit addition: 001110 + 001100 – Can check our answer in base 10 • Overflow: correct answer is beyond possible range Integer rep’n • How do we represent integers inside the computer? – Scheme I: unsigned – Scheme II: signed (a.k.a. Two’s complement) – Scheme III: biased (a.k.a. Excess notation) • Scheme I: Unsigned – This is the scheme you already know. – Cannot handle negative numbers. – For n bits, possible range is 0 to 2n – 1. • Scheme II: Signed – Basic idea: half of the representations should be negative. – Ex. For 5 bits, 16 of the 32 values are negative, so the range goes from –16 to +15. – For n bits, possible range is –2n–1 to 2n–1 – 1. Signed rep’n continued • How do we represent a number in signed? • If positive, same as unsigned. – Ex. 6-bit signed rep’n of 13 is 001101. – Ex. 6-bit signed rep’n of 31 is 011111. (the largest #) • If negative: 3 steps to represent –x: 1. Find rep’n of +x. 2. Invert the bits. 3. Add 1. • Try some examples of negative numbers, and check answers. CS 101 – March 21 • Bits have no inherent meaning • To represent information, need to know: – Representation scheme + number of bits • Integer representation – Unsigned √ – Signed (review) – Biased Closer look… • In 5-bit unsigned… – Smallest number is 00000 (= 0) – Largest number is 11111 (= 31) • In 5-bit signed… – Smallest number is 10000 (= –16) – Largest number is 01111 (= 15) • Given a bit pattern, its signed and unsigned values differ by how much? – Try some examples. • In signed: – Leftmost bit is the sign bit. – Positive #’s have same rep’n as unsigned. – Technique for –x doesn’t work for lowest number. Special case. Signed + and – • Signed + is like unsigned. • Watch out for overflow. – – – – The correct mathematical result can’t be represented. (Pos) + (Pos) = (Neg) (Neg) + (Neg) = (Pos) Example: 01111 + 00001. • To subtract, add the opposite. Example: 10111 – 00111 – First, –(00111) = 11001 – Turn into addition problem: 10111 + 11001 = __________ – Is there overflow? Scheme III: biased • Another way to represent integers that allows for negatives. • (It will soon help us see how real numbers are stored.) • The “bias” is the number we subtract from unsigned range. – If B is the bias, the lowest number is –B. • When working with a biased rep’n, you have to be given the bias. – Ex. For 6-bits, bias is typically 31 or 32. – Ex. For 8-bits, bias is typically 127 or 128. • So, a “6 bit biased-31 rep’n” is based on 6-bit unsigned, except that 000000 is now –31 instead of 0. How to convert • How do we represent a number n in biased (B)? 1. 2. – Add the bias: n + B. Determine the unsigned rep’n of this number. Example: What is the 6-bit biased-31 rep’n of –9? • It’s the same as the unsigned rep’n of –9 + 31 = 22. • 22 in 6 bit unsigned is 010110. • How do we convert a biased number back into base 10? 1. 2. – Interpret the number as unsigned Subtract the bias. Example: 101010 is the 6-bit biased-31 rep’n of what number? • If unsigned, 101010 = 32+8+2 = 42. • 42 – 31 = 11. CS 101 – March 23 • Real numbers: – How to express in binary – Binary scientific notation – Floating-point representation Need to learn how to convert both ways. • Handout on floating-point representation Integer vs. Real • Integer arithmetic on computer is quick & exact, but has limited range. • Real arithmetic needs wide range, and a reasonable degree of precision. – Scientific / numerical computation – 14 significant digits is usually enough! • Skills: – Converting a base-10 real number into binary – Actual representation relies on “scientific notation” Examples • Consider this sequence: 111 = 7 1110 = 14 11100 = 28 111000 = 56 1110000 = 112 • Going the other way… 111. = 7 11.1 = 3.5 or 7/2 1.11 = 1.75 or 7/4 .111 = 7/8 .0111 = 7/16 See the pattern? Each digit corresponds to (+ /–) power of 2. Convert to binary • Separate real number (e.g. 5.7) into integer and fractional parts • Integer part use binary store. • Fractional part: – Keep multiplying fractional part by 2 until it becomes zero, or until you have a repeating pattern. • Example: 9.625 – Integer part 9 becomes “1001” – Fractional part is 0.625: .625 * 2 = 1.25 .25 * 2 = 0.5 .5 * 2 = 1.0 Fractional part reaches 0. So our answer is 1001.101 Repeating pattern • Let’ try converting 0.7 to binary: .7 * 2 = 1.4 .4 * 2 = 0.8 .8 * 2 = 1.6 .6 * 2 = 1.2 .2 * 2 = 0.4 .4 * 2 = 0.8 • “Aha!” The pattern tells you which digits repeat. ____ • Answer is 0.1 0110 0110 0110 … or .10110 Real number rep’n • • • • Also called “floating point” Size is 32 or 64 bits: “single” vs. “double” precision Based on binary scientific notation Let’s look at single precision: – 1 bit for sign (0 = positive, 1 = negative) – 8 bits for exponent (expressed in biased-127) – 23 bits for mantissa • Big mantissa precision is most important feature CS 101 – March 26 • Floating-point representation – See handout • Single vs. double precision • Consequences of the representation Example • We saw earlier that 9.625 = 1001.101 in binary. Let’s continue with the true representation. • Sign: 1 bit. Since it’s a positive number, we have 0 • Exponent: 8 bits – If we write 1001.101 in binary scientific notation, we get 1.001101 * 23. – The exponent 3 is expressed in 8-bit biased-127. In other words 3+127=130 in unsigned: 10000010 • Mantissa (23-bits): We only store the fractional part of the mantissa: 001101. Remaining bits are zero. • Final answer: 0 10000010 (1) 001101 017 Decoding • Let’s see if we can decode a real number: 1 10000001 (1) 011 020 • Sign: “1” means a negative number • Exponent: “10000001” looks like 129 in unsigned. But in biased-127 it is 129 – 127 = 2. So our number is something multiplied by 22. • Mantissa: 1.011 in binary = 1 + 1/4 + 1/8 = 1.375 • Combine all 3 parts: –1.375 * 22 = –5.5 Some thoughts • In single precision… – 8 bit exponent 256 possible exponents Highest number ~ 1038 Lowest number ~ 10–38 – 23 bit mantissa ~ 8 million exact real number per power of 2 We have about 7 significant digits • Comparing with double precision – What can we conclude? Precision Sign Exponent Mantissa Single 1 8 23 Double 1 11 52 CS 101 – March 28 • Finish real number rep’n – Properties, consequences – Numbers that cannot be represented • Data compression – Compress what? Text, images, sounds – Huffman code Text compression • Goal is for a document to take up less space • Techniques – Keyword encoding: replace common words by special symbols like ╞ – Run-length encoding: replace repetitions with a number: “pppppppppppppp” [14p] – Huffman code: common letters should take up fewer bits Huffman code example • Suppose you want to send a message, and you know the only letters you need are A, D, E, L, N, P, S. • A Huffman code might look like this table: A D E L N P S 001 100 01 101 0001 0000 11 • How would you decode this message? 01110000101001000100110001 How to create code • We’re given the set of letters used for the message, and their frequencies. – Ex. A = 5, B = 10, C = 20, D = 25, E = 30 – Ex. P = 5, N = 10, D = 10, L = 15, A = 20, S = 20, E = 30 • It’s convenient to arrange the frequencies in order. • Group the letters in pairs, always looking for the smallest sum of frequencies. • The resulting structure is a “tree”. Each left arm = “0” in the code; each right arm is a “1”. CS 101 – March 29 • How to create Huffman code • Dictionary encoding • How to compress – Image – Video How to create code • We’re given the set of letters used for the message, and their frequencies. – Ex. A = 5, B = 10, C = 20, D = 25, E = 30 – Ex. P = 5, N = 10, D = 10, L = 15, A = 20, S = 20, E = 30 • It’s convenient to arrange the frequencies in order. • Group the letters in pairs, always looking for the smallest sum of frequencies. • The resulting structure is a “tree”. Each left arm = “0” in the code; each right arm is a “1”. Dictionary encoding • Convert each word to a number • Represent this number in binary • If 50,000 words in dictionary, we can represent each with 16 bits (2 bytes) since 216 > 50,000 • A lot shorter than the average word • Hmmm, sometimes a cipher system can be used for compression. Image compression • RGB 24-bit color represented as (huge) bitmap file *.bmp • Most of the time, compressing an image is “lossy”, meaning that uncompressing won’t restore original .bmp information • GIF compression uses indexed color • JPG entails several steps – Make tiny modifications to the image, so that neighboring pixels will have more uniform values. For example, (10, 11, 12, 90) (11, 11, 11, 90) – Use text/numerical compression techniques like run-length encoding. MPEG • Motion Picture Experts Group • Industry standard for compressing multimedia • Note that much information in consecutive frames is the same – Effectively doing run-length encoding in 3-D • Delete sound information that humans can’t detect • Goal: to make streaming video possible: 30 frames per second at a minimal DSL connection – Ex. 5-minute 300x200 video ~ 12 MB CS 101 – April 2 • The last word on representing information: • Error detection • Error correction Transmission errors • When you send data over a network, there could be rare random flipping of bits. • Error Detection • Error Correction • One method of detection is using a parity bit – – – – Add 9th bit to each byte during transmission Goal is that each byte has even # of 1’s Receiver checks each byte. … Catches many but not all errors. 2-d parity 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 0 The 9th byte is called a check byte. Error correction • Useful if you think there may be a lot of potential errors, such as a noisy transmission medium. • Devise a “code” so that each symbol’s bit pattern is quite distinct from all the others. – In practice, this means longer codes. In other words, the 8-bit ASCII code would not be enough. • One technique: Hamming code – Idea for assigning code is Hamming distance: comparing codes, count how many bits differ. – When you receive an erroneous code, see which letter it’s closest to. Then you can make a correction. – Example … Example • Here is a simple error-correcting code. Letter Code A 000000 B 001111 C 010011 D 011100 E 100110 F 101001 G 110101 H 111010 • How would we interpret the bit string 010100 ? CS 101 – April 11 • Building blocks of a computer system: • Using bits – Binary data and operations – Logic gates • Units of measuring amount of data • CPU vs. memory Binary • All information inside computer is in binary • Smallest unit of data is the bit • Only the values 0 and 1 are used 0 means “false” or “off” or the number 0 1 means “true” or “on” or the number 1 • Individual bit values can be manipulated with Boolean operations: “and”, “or”, “not”, etc. – In hardware, we implement these operations with logic gates. Boolean examples • AND – To graduate, you must have 128 credits and 2.0 GPA. • OR – Classics scholarship requires 3 years of Latin or 3 years of Greek. • XOR (“exclusive” or) – To go to Cincinnati, you can fly or drive. In other words, it doesn’t make sense to do both. – Do you want a 2-door or a 4-door car? • NOT – If a statement is true, its negation is false, and vice versa. Gates • Basic building blocks of CPU’s circuitry. • Usually 2 inputs. • X and Y could be 0 or 1. • Combining gates into a circuit: – The output of one gate becomes input to another. – This is how more useful operations are performed. ‘AND’ and ‘OR’ AND OR X Y ans X Y ans 1 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 Note: 0 AND (anything) = 0 1 OR (anything) = 1 XOR • XOR basically says, “either but not both” • The output is 1 if both inputs are different. XOR X Y Ans 1 1 0 1 0 1 0 1 1 0 0 0 NOR, NAND • NOR gate – Negation of the OR – Same as feeding output of OR into a NOT gate. – Symbol for NOR gate is same as OR but with a loop on the end. • NAND gate – Negation of the AND…. analogous to NOR. • Interesting property: – NOR and NAND are universal gates. Any other boolean operation can be implemented by using several NAND’s or several NOR’s. Units of data size • Bit = a single 0 or 1 value • Nibble = 4 bits = 1 hexadecimal digit • Byte = 8 bits • • • • Kilobyte (KB) = 210 bytes Megabyte (MB) = 220 bytes Gigabyte (GB) = 230 bytes Terabyte (TB) = 240 bytes • 210 = 1024, though 1000 is a close approx. CPU and memory • CPU’s job is to obey instructions and do calculations • Memory system stores information for current and future use – CPU has tiny number of “registers” for calculations – main memory (RAM) stores all files currently open – Secondary memory (e.g. hard drive) is for long-term storage of files – Backup system: tape, external hard drive • Other types of memory: – Cache, between CPU and RAM – Removable drive, e.g. USB or DVD RAM • Runs on electricity: volatile but fast • Each byte is numbered and addressable – Capable of holding a single character or small # Address Contents 0 “c” 1 “a” 2 “t” 3 9 4 25 5 100 … … CS 101 – April 13 • Contrast between levels of memory – Tradeoff between cost / size / speed • Manipulating data by performing instructions • “What is going on in the CPU?” • Handout – A simple machine language Memory comparison Type Size Access time Cost per MB CPU registers 256 bytes 1 ns N/A Cache 64 KB 2 ns $ 20 RAM 512 MB 50 ns $ 0.20 Disk 200 GB 100,000 ns $ 0.0002 Numbers are approximate. “ns” means nanosecond = 1 billionth of a second Why are disks slow? Analogous to a record player: • Seek time: read-write head moves to find the correct track (up to ~ 8ms) • Latency: wait for disk to rotate to beginning of file (up to ~ 4ms) • Transfer: grab info from disk (e.g. 1 MB/sec read or 0.1 MB/sec write) Basic computer anatomy • Inside a computer are 2 parts – CPU – Memory – These are connected by a data bus: an “HOV lane” where traffic can go either way. • CPU contains: – ALU: arithmetic and logic unit – Control unit: figures out what to do next – Registers to hold values needed for calculation • Memory (RAM) contains: – Software: list of instructions the CPU needs to perform – Data: Input and output values need to be stored while program runs Stored program idea • Program = software = list of instructions for CPU to do • Programs reside in memory • CPU will do 1 instruction at a time • For each instruction, we do the following: – – – – Fetch it from memory Decode – figure out what it means Execute – do it And then we continue with the next instruction… until the program is finished. Simple example • A program to add two numbers. • This program may reside at bytes 100-116 in RAM. • The two numbers we wish to add are located at bytes 200 and 204 in RAM. • We want the result to go into memory at byte 208. • Program may go something like this: – – – – Load the value at Memory[200] into register 1. Load the value at Memory[204] into register 2. Add registers 1 and 2, and put result in register 3. Store the value from register 3 into Memory[208]. • Note that the bus is communicating instructions (RAM to CPU) as well as data (both ways). Machine language • Unfortunately, instructions for CPU can’t be in English, French, etc. • Machine language = binary (or hex) representation of our instructions. – Each type of computer has its own machine language. • This is the original form of “computer programming”. • Verbs: Instruction set. e.g. Add, subtract, load, store… • Nouns: Operands such as: registers, memory locations, constants, other instructions Verbs 3 kinds of instructions (instruction set) • Data transfer, using the bus – Load a value from memory into a CPU register Very similar to fetching an instruction! – Store a value from a CPU register into memory • ALU – Bit manipulation: AND, OR, XOR, NOT, shift left, shift right, … – Arithmetic: add, sub, mul, div, remainder, =, <, >, , , ≠, … • Control – “Go to” another instruction in program. In other words, interrupt normal sequence of instructions. – Can be conditional or unconditional Example language • Let’s consider very simple HW. • 256 bytes of RAM: addressable by 8 bits • CPU contains – Instruction register (to store contents of instruction) – Program counter (to indicate instruction’s address) – 16 general purpose registers: addressable by 4 bits • Each register is 1 byte • Each instruction is 2 bytes = 16 bits = 4 hex digits long • Instruction format: – First 4 bits are the opcode = specify which instruction type – Other 12 bits are operand(s) • What do instructions mean? CS 101 – April 16 • Machine language examples – Don’t memorize… • Instruction execution • Operations in instruction set – Performing arithmetic sometimes requires load / store instructions in addition to the arithmetic instruction – Instructions to manipulate bits directly Example instructions • Note: 16 possible opcodes: 4 bit opcode • Note: 16 possible registers: register number also 4 bits • Opcode 5 is used for adding – Expects 3 register operands – 5RST means R = S + T, where R, S and T are register numbers – Ex. 5123 means Add registers 2 and 3 and put result in register 1. • Opcode 2 is for putting a constant in a register – Expects a register operand, and an 8-bit constant operand – 2RXX means R = XX, where XX is some 8-bit pattern – Ex. 27c9 means Put the hexidecimal “c9” into register 7. • Try an example using both types of instructions. More instructions • Opcode 1 is for loading a memory value into a register – Expects a register operand (4 bits), and a memory address from which to load (8 bits). – Ex. 1820 means to go out to memory at address [20], grab the contents and load it into register 8. (It does not mean put the number 20 in register 8.) • Opcode 3 is a store = opposite of load – Ex. 3921 means to take the value in register 9, and put it into memory at location [21]. (It does not mean put the number 9 into memory location 21.) • Opcode C (hex code for 12) is for telling CPU it’s done. – Expects operand to be 12 zero-bits. Some practice Refer to handout… • How would we put the number 64 into memory at address 12? • How would we add the numbers 6 and 8 and put the result in register 1? • How would we add register 7 to register 5 and put the answer in memory at address 32? Execution • In our example, each instruction is 2 bytes long. • Program counter (PC) begins at address of first instruction. • For each instruction: – Fetch (and increment PC by 2) – Decode – Execute • Note that RAM contains both instructions and data, separated from each other. For example, addresses 0-99 could be reserved for code. Logic operations • Work just like gates, but we do several bits in parallel. • Examples 10101110 01101011 AND 11110000 AND 00011111 • Try the same examples with “OR” and “XOR” • Observations: – What happens when you AND with a 1? With a 0? – What about OR’ing with a 1 versus a 0? – What about XOR? • ASCII code: how do you capitalize a letter? CS 101 – April 18 • Operations that manipulate bits directly – Logical (review) – Shift • The last topic = operating systems – Appetizer today: data transfer speeds Logic operations • Work just like gates, but we do several bits in parallel. • Examples 10101110 01101011 AND 11110000 AND 00011111 • Try the same examples with “OR” and “XOR” • Observations: – What happens when you AND with a 1? With a 0? – What about OR’ing with a 1 versus a 0? – What about XOR? • ASCII code: how do you capitalize a letter? Shift operations • Given a bit pattern like 00011100, we can shift the bits left to obtain: 00111000. • If we shift to the right instead, 00011100 becomes this: 00001110. • We can even shift by more than one position. – Shifting 01010000 by 3 bits right 00001010. • Sometimes when we shift, 1’s fall off the edge. – Shifting 01010000 by 2 bits left 01000000. • When we shift, the “vacated” bits are usually 0. Why shift? • One application of a shift operation is to: – Multiply by 2: left shift – Divide by 2: right shift – Try some examples – should look familiar with our earlier work on binary numbers. • One funny exception: dividing a (signed) negative number by 2. We need a different operation: arithmetic right shift. – In this case, we want the vacated bit to be 1 – Example: –12 in signed is 11110100. If we shift right by 1, we get 01111010, but it should be this: 11111010. Rotate • Rotate operations work the same as shift… except that the vacated bits come from the other end of the number. • So, instead of 1’s falling off the edge, they rotate. • For example, 01010000 rotated left by 2 becomes 01000001. • Also: 00001111 rotated right by 3 becomes: 11100001. Summary • Here is a list of bitwise operators: • Logical – and, or, xor, not • Shift – – – – – sll (Shift left logical) srl (Shift right logical) sra (Shift right arithmetic) rol (Rotate left) ror (Rotate right) Communication rate • Used for both internal & network communication. • Units – “baud” = bit per second – Kbps, Mbps, Gbps – If there’s overhead/noise, figure on an average of 10 bits per byte, so 1 Mbps = 100 KB per second. – I can read a 20 MB file from USB drive in 2 seconds. What is the bit rate? • Voice telephone line – limited to 57.6 Kbps • DSL, cable modem: “broadband” 50-100+ times faster – Uses more of the sound spectrum; and data compression CS 101 – April 20 • Operating Systems – – – – – – definition origin responsibilities relationship with other software booting processes Original purpose • Streamline process of doing jobs on the computer. • Reduce overhead spent between jobs. • Batch processing: – Plan day’s jobs in advance – Give jobs to a computer operator – Job Control Language: enter commands to the OS • Computer operator not practical – Confidentiality – Some applications like a game are inherently interactive; require fast turnaround Utilization Historically… • CPU time used to be very expensive • 2 ways to run jobs – Interactively – In batch mode. This is useful if jobs must complete by some deadline in a real-time system. • Time sharing – Many users, but just 1 expensive machine. – Do not let any one job monopolize machine. – Have several jobs running at same time; give each a turn at the CPU: multi-programming – Today: 1 user has many jobs per day – use same technique Kinds of software • Application – fun & useful stuff for people – Hearts, Excel, Firefox, e-mail, PPT, … • System utilities – programs that make the computer more useful, added features – Formatting a disk, compress data, play DVD • OS shell – accept commands from user; display error message • OS kernel – major responsibilities; manage resources • Note: distinctions can be blurred – the distinctions among the categories are not exact Responsibilities (1) • Security – Require many password combinations – Penalties for mistake – Super user & diagnostic tools to detect abnormal activity • CPU – Be aware of all currently running programs – Synchronization: make sure 2 executing programs don’t interfere with each other – Scheduling: deciding which program to execute now • Memory – Decide which files (or portions of files) should be in RAM – Virtual memory: shuffle pages in and out of RAM to give illusion that RAM is bigger than it really is Responsibilities (2) • Files – Maintain folders – Keep information about each file: name, size, owner, type, permissions – User quotas • I/O and network – Device drivers • User interface (shell or GUI) Boot cycle • When you turn machine on, OS is on disk. • CPU must begin running pre-arranged code in non-volatile ROM. • The ROM program tells the CPU to load OS from disk to RAM. – As well as BIOS: basic I/O system • Finally, begin running the OS. • ROM designed to be fast/efficient, therefore small. The entire OS cannot fit in ROM. Process • A program that has started, but hasn’t yet completed…. Pending work. • OS must keep track of all current work, in case of interruption or hibernation. • Possible states for a process – Ready (could execute, but doesn’t have CPU) – Running (in CPU) – Waiting (doing I/O operation) • During its lifetime, a process may experience many state transitions. CS 101 – April 23 • Operating Systems – Scheduling – File permissions Scheduling • OS may need to decide the order in which to do jobs • Many ways to create a schedule. We’ll look at 2. • First-come, first-served – Do the jobs in the order in which they are requested • Shortest Job Next – Give priority to short/easy tasks. • Evaluating schedules – People are interested in how long for their requested jobs to complete. – Compute the average turnaround time. – Turnaround time of a job = (time @ finish – time @ request) Example 1 Process number Time of request Execution time needed 1 0 20 2 5 30 3 10 40 4 20 10 • First-come, first-served – – – – Process 1 can execute from t=0 to t=20 Process 2 can execute from t=20 to t=50 Process 3 can execute from t=50 to t=90 Process 4 can execute from t=90 to t=100 • We can enter this info as extra columns in the table. • What is the average turnaround time? • What if we tried Shortest Job Next? Example 2 Process number Time of request Execution time needed 1 0 10 2 30 30 3 40 20 4 50 5 Note that it’s possible to have idle time. System load • A measure of how “busy” the CPU is • At an instant: how many tasks are currently running or ready. – If load > 1, the system is “overloaded”, and work is backing up. • Typically reported as an average of the last 1, 5, or 15 minutes. • Based on the schedule, can calculate average load as well as maximum load. File permissions • 3 levels: owner, group, rest of world • For each level: – ‘r’ = Can I read the file? – ‘w’ = Can I write to (or delete) the file? – ‘x’ = Can I execute the file? • Examples – rw-rw-r-– rwxr-xr-– rw-r----- (664) (754) (640) Common permissions • On many systems, there are no groups, so the group permission is the same as “everybody else”. • Examples 644 600 755 700 • Only a file/folder’s owner or the administrator may change permissions.