CS 30 TOPICS TO REVIEW FOR FINAL EXAM -------------------------------------------------------------------------------- GENERAL TOPICS: Turing Test - Know what it is - Relevant readings: * Computing Machinery and Intelligence (Turing) * A Coffeehouse Conversation on the Turing Test (Hofstadter) Formal systems - Know what they are - MIU.py from week 7 - Relevant readings: * The MIU-Puzzle (Hofstadter) Turing machines - Know what they are - Be able to trace through a simple TM program by hand - Be able to design a (very) simple TM program to do something - Know what "busy beaver" TMs are - Know what the Halting Problem is and why it is important - Understand the basic outline of the Halting Problem argument - Know what Universal Turing Machines are and why they are important - UTM.py from week 8 - Relevant readings: * Proof or Consequences (Casti) Symbolic models - Know what they are, and how they differ from connectionist models - Winograd's SHRDLU, Weizenbaum's Eliza, Schank's story-understanding programs, Winston's Analogy program, Waltz's vision program (see Dreyfus article for descriptions of these and other symbolic AI programs) - Newell & Simon's physical symbol system hypothesis - Relevant readings: * From Micro-Worlds to Knowledge Representation (Dreyfus) * Computer Science as Empirical Inquiry (Newell & Simon) Chinese Room thought experiment - Understand the basic outline of the argument - Relevant readings: * Minds, Brains, and Programs (Searle) * A Conversation With Einstein's Brain (Hofstadter) * The Chinese Room: Just Say No! (French) Connectionist models - Know what they are, and how they differ from symbolic models - Jets and Sharks memory model - jetsNsharks.py from week 10 - Perceptron and backpropagation neural networks - Perceptron.py and SigmoidNeuron.py from week 11 - Localist vs. distributed neural network representations - digits.py from week 12 - Elman's experiments on learning grammatical structure with neural networks - Relevant readings: * The Appeal of PDP (McClelland, Rumelhart, Hinton) * Why Connectionism? (Elman et al.) * Connectionist Modeling: Neural Computation/Mental Connections (Smolensky) * Finding Structure in Time (Elman) Embodied cognition - Know why embodiment is important - Braitenberg vehicles - Braitenberg's "Law of uphill analysis and downhill invention" - Brooks's subsumption architecture for robots - SubsumptionFindLight.py from week 15 - Relevant readings: * Vehicles (Braitenberg) * Intelligence Without Representation (Brooks) * The Chinese Room: Just Say No! (French) -------------------------------------------------------------------------------- PROGRAMMING TOPICS: arithmetic operations + - * / % int, float storing values in variables x = 3 x, y = 1, 2 getting input from the user input vs. raw_input printing output on the screen print string formatting with %f, %d, %s for loops using range for x in sequence: for i in range(len(sequence)): understand the difference between looping through a sequence of values directly vs. using an index number while loops simple decisions using if-else function definitions def name(param1, param2, param3): return value retrieving and storing values in lists values[i] values[-i] values[m:n] values[i] = newval using random numbers random.uniform random.randrange random.choice manipulating strings s[i] string.split string.join s1 + s2 other string library functions (see the table on page 96 of the Python book) reading lines from a file f = open(filename) lines = f.readlines() f.close() manipulating lists - referencing values in lists - storing values in lists - appending values to lists - MIU.py from week 7 - UTM.py from week 8 file processing - opening and closing files - using readlines - UTM.py from week 8 object-oriented programming - using objects - defining classes - defining methods - self keyword - __str__ method - __init__ method - gossip.py from week 10, Perceptron.py and SigmoidNeuron.py from week 11 - extending classes: ClockRadio.py from week 12