Be able to: -- Recognize the main components in a computer (CPU, buses, floating point processor, optical drive, hard drive, RAM, mouse, keyboard, screen, motherboard, power supply) and give their use. -- Recognize the common kinds of computer ports (USB, ethernet, VGA) and give their use. -- Define pointers and explain what they do, and use & and * notation. -- Define common data structures (integer variables, floating point variables, strings, arrays, structures (cell arrays), stacks, queues, linked lists, trees, hash tables, heaps, quadtrees), describe how to perform basic operations (insert, delete, change) on each of them, and choose an appropriate one for a given task. -- Understand and use terminology such as FIFO, LIFO, push/pop for a stack, enqueue/dequeue for a queue, doubly-linked lists, parent/child nodes in a tree, depth-first and breadth-first ordering of nodes, hash function, etc. -- Understand binary search and heapsort.