abstract data type
a description of operations on a data type that could have multiple possible implementations.
(pronounced "ask-key") an abbreviation of American Standard Code for Information Interchange, a character code that maps between 8-bit binary integers and characters such as letters, numbers, and punctuation. There are 256 possible ASCII codes, of which 95 are printable.
an abstracted function that describes the amount of computer time or memory space required by an algorithm, as a function of problem size. For problems larger than a certain size, the actual time or space required will be less than the Big O multiplied by some constant.
search of a binary tree or other structure, in which the size of the set to be searched is cut in half at each step.
a number that is defined as an object, so that it has a runtime type and methods that can be used, e.g. Integer in Java.
in a search tree, the number of children of a given node. Often, the branching factors of individual nodes will vary, so an average value may be used.
a queue implemented within an array, where the first element of the array logically follows the last element.
1. in Lisp, the function that constructs a pair of pointers, or basic element of list structure. 2. a cons data structure. 3. to make a cons data structure.
describes a function that makes a new data structure but does not modify its arguments.
a search in which children of a node are considered (recursively) before siblings are considered.
divide and conquer
a problem-solving strategy in which a problem is broken down into sub-problems, until simple subproblems are reached.
a way of implementing trees that uses two pointers per node but can represent an arbitrary number of children of a node.
1. data that is incorrect, meaningless, or random; 2. storage that is no longer pointed to by any variable and therefore can no longer be accessed.
a formal description of a language in terms of vocabulary and rules for writing phrases and sentences.
describes a data structure that cannot be changed once it has been created, such as Integer or String in Java.
an order of processing a tree in which the parent node is processed in between its children.
a program that reads instructions, determines what they say, and executes them. The CPU is an interpreter for machine language; the JVM is an interpreter for compiled Java bytecodes.
a problem that is so hard (typically exponential) that it cannot be solved unless the problem is small.
O(n), a problem whose solution requires a linear amount of time or space if the problem is of size n.
a runtime error that occurs when an operation such as a method call is attempted on a null pointer.
a description of the kinds of objects that exist in a computer program, e.g. a Java class hierarchy.
in a search tree, a program that changes a state into a child state, e.g. a move in a game.
O(n2), a problem whose solution requires a quadratic amount of time or space if the problem is of size n.
a data structure representing a sequence of items, which are removed in the same order as they were inserted.
a condition of the input data where the data will be handled by call(s) to the same program.
a type in which variables of that type are pointers to objects. In the code Integer i = 3, the variable i holds a pointer to the Integer object that contains the value. In int j = 3, the variable j contains the value. In Java, only reference types have methods.
a stack containing a stack frame of variable values for each active invocation of a procedure.
an extra record at the start or end of a data structure such as a linked list, to simplify the processing.
given two sets, the set difference is the set of elements of the first set that are not members of the second set.
any effect of a procedure other than returning a value, e.g. printing or modifying a data structure.
to modify the order of a set of elements so that a desired ordering holds between them, e.g. alphabetic order.
a section of the runtime stack holding the values of all variables for one invocation of a procedure.
a function whose value either does not involve a recursive call, or is exactly the value of a recursive call.
a character code that maps between binary numbers and the characters used in most modern languages, more than 110,000 characters. The lowest values of the UTF-8 encoding of Unicode are the same as ASCII, allowing characters to be 8 bits when staying within the ASCII character set. For other languages, more bits are used. Java uses Unicode.
an abstract computer that is simulated by an interpreter program running on an actual computer.
an ordering that can be guaranteed to terminate, e.g. starting at a positive integer and counting down to 0.
a group of bits that are treated as a unit and processed in parallel by a computer CPU. Common word sizes are 32 bits and 64 bits.