YOUR EXAM IS MONDAY DEC 9th AT 2:00 AM IN OUR USUAL CLASSROOM. ***IT MUST BE TAKEN THEN UNLESS THERE ARE EXTENUATING CIRCUMSTANCES*** HERE IS A CHECK LIST OF THINGS YOU SHOULD KNOW -- STUDY OLD TESTS AND USE ONLINE NOTES/WEB SITES FOR PRACTICE. Data Representation Convert a decimal integer to 8-bit unsigned integer 8-bit sign-and-magnitude integer 8-bit twos complement integer Convert any of the above 8-bit representations to decimal. Convert any textual symbol to 8-bit ASCII representation. (A chart will be provided). Convert binary to hex. Convert binary to octal. Convert hex to binary. Convert octal to binary. Know some of the basics of representing colors using hex triplets. (e.g. FF0000 represents red). Know how to add two 8-bit numbers like a computer would, column-by-column. Boolean Logic and Circuits Know how to do other computer operations such as bitwise OR, bitwise AND, bitwise XOR, and bitwise NOT. Know how to complete a truth table given some boolean algebra expression (such as A AND (B OR (NOT C))) Know how to construct a circuit for an expression (such as A AND (B OR (NOT C))) using logic gates. Study the half-adder circuit. Algorithms Know how each of the sorting algorithms (selection sort, bubble sort, insertion sort) proceed. Know that selection sort requires n(n-1)/2 comparisons to sort n items. Know that each of these sorting algorithms has a quadratic growth rate, which means the running time quadruples (roughly) each time n is doubled. So, if sorting 10000 numbers takes 1 minute, sorting 20000 will take 4 minutes. Know how each of the searching algorithms (sequential search and binary search) proceeds. Know how to trace a binary search algorithm for a particular list and a particular desired name. Know how to complete a binary search tree as you did in Test 3. Know what the worst case number of comparisons is for each and how to compute the average number of comparisons. What happens, approximately, to the amount of work (i.e. number of comparisons) performed by each of these algorithms whenever n is doubled? Know algorithms for finding the largest and the smallest in a list of numbers and for summing/averaging the numbers. Programming The simple von-Neumann computer (the VSC-32): Know how to write a simple assembly language program (e.g. one that reads X and Y, and computes X + Y - 5 and writes the result). Predict how a program, such as the one above, will appear after it is translated into binary. JavaScript programming Know how assignment statements work (e.g. y=20; x=y-7; x++; y+=x; x+=10; ... etc) Be able to predict values for JavaScript expressions involving integers (e.g. 10 % 3 + 4, 7>2 && 3<1, etc) Know how while loops and if statements work. Be able to trace through examples and determine the exact output. Know how the JavaScript String functions (such as charAt, substring, and others...) work. Be able to evaluate expressions. (Test yourself with the HW 12 document). Know how to write your own string expressions to solve problems (such as expressing the middle name given any name whether it be John Fitzgerald Kennedy or Dwight David Eisenhower or George Walker Bush). Know how to write a loop that will sequence through an array in order to solve a problem (such as finding the largest in an array or summing the numbers in the array or counting how many names in an array have length greater than 5 ... etc ...). Cryptography Be able to encipher/decipher using a Caesar cipher. You may have to infer the shift value yourself, or you may be given one, Be able to encipher/decipher using a substitution cipher.