Midterm Review Overview of topics covered Excerpts from the exam cover page • Do not discuss the exam with, or accept help from, anyone. • Rules • This examination is open-book and open-note: • You may use the textbook, course notes, your own notes, corrected problem sets and solutions, documents from the web that you printed before the exam, lab instructions, etc. • You may use a calculator. • You may not use anything else; specifically, you may not use a computer, phone or tablet (except that you can use the calculator program on one of these, and you can use your computer to view course notes if you did not print them). • Submission • Due by 11:59 PM, Friday, Oct 30, in the box outside Room 419 of the Computer Science building. • Please do not discuss the exam with anyone until after the submission deadline has passed. • Going digital – music, pictures, sounds, text, ascii, Unicode • Major pieces of a computer and what they do – CPU, RAM, disk, peripherals, bus to connect them • Analog vs digital, bits and bytes, binary, hexadecimal • Converting among representations; how many bits/bytes to represent …. • Fetch/execute cycle in the CPU, relation between CPU and RAM, von Neumann machine • Assembly language and the Toy simulator • Basic instructions (load/store, arithmetic, branching) • History of computing devices from Babbage to von Neumann to the present • Basic logic gates, truth tables, XOR, NOR and NAND • Transistors as the most basic building blocks for making chips, Moore’s Law • Growth of transistor counts in CPUs, caches, … • State machines, Turing machines • Algorithms – logarithmic time, linear time, quadratic time, … • Algorithms for sorting and searching, exponential algorithms vs polynomial time algorithms, NP-complete problems • Programming languages – basic constructs, high level languages, evolution over time, • compiling into assembler and machine code, portability • Operating systems – controlling the operation of the machine, memory management (virtual memory), device drivers, • Historical development – Unix/Linux, MacOS, Windows, Fetch/execute cycle • File systems -- facilitated by operating system, manages blocks on disk, manages hierarchy of names, • Quantitative Reasoning