absolute error: The absolute value of the difference between a mathematical value and its finite approximation in a computer.
absolute path: A path that refers to a particular location in a file system. Absolute paths are usually written with respect to the file system's root directory, and begin with either "/" (on Unix) or "\" (on Microsoft Windows). See also: relative path.
access control list (ACL): A list of permissions attached to a file or directory that specifies who can do what with it.
A function such as
max that combines many values to produce a single result.
assertion: An expression which is supposed to be true at a particular point in a program. Programmers typically put assertions in their code to check for errors; if the assertion fails (i.e., if the expression evaluates as false), the program halts and produces an error message. See also: invariant, precondition, postcondition.
assignment: To give a value a name by associating a variable with it.
atomic value: A value that cannot be decomposed into smaller pieces. For example, the number 12 is usually considered atomic (unless we are teaching addition to school children, in which case we might decompose it into tens and ones).
branch: A "parallel universe" in a version control repository. Programmers typically use branches to isolate different sets of changes from one another during development so that they can concentrate on one problem at a time. See also: merge.
call stack: A data structure inside a running program that keeps track of active function calls. Each call's variables are stored in a stack frame; a new stack frame is put on top of the stack for each call, and discarded when the call is finished.
comma-separated values (CSV): A common textual representation for tables in which the values in each row are separated by commas.
A remark in a program that is intended to help human readers understand what is going on,
but is ignored by the computer.
Comments in Python, R, and the Unix shell start with a
# character and run to the end of the line;
comments in SQL start with
and other languages have other conventions.
conditional statement: A statement in a program that might or might not be executed depending on whether a test is true or false.
cross product: A pairing of all elements of one set with all elements of another.
current working directory:
The directory that relative paths are calculated from;
the place where files referenced by name only are searched for.
Every process has a current working directory.
The current working directory is usually referred to using the shorthand notation
. (pronounced "dot").
cursor: A pointer into a database that keeps track of outstanding operations.
defensive programming: The practice of writing programs that check their own operation to catch errors as early as possible.
docstring: Short for "documentation string", this refers to textual documentation embedded in Python programs. Unlike comments, docstrings are preserved in the running program and can be examined in interactive sessions.
documentation: Human-language text written to explain what software does, how it works, or how to use it.
A two-part notation used in many programming languages
thing.component refers to the
component belonging to
empty string: A character string containing no characters, often thought of as the "zero" of text.
encapsulation: The practice of hiding something's implementation details so that the rest of a program can worry about what it does rather than how it does it.
exception: An event that disrupts the normal or expected execution of a program. Most modern languages record information about what went wrong in a piece of data (also called an exception). See also: catch, raise.
The portion of a file's name that comes after the final "." character.
By convention this identifies the file's type:
.txt means "text file",
.png means "Portable Network Graphics file",
and so on.
These conventions are not enforced by most operating systems:
it is perfectly possible to name an MP3 sound file
Since many applications use filename extensions to identify the MIME type of the file,
misnaming files may cause those applications to fail.
filesystem: A set of files, directories, and I/O devices (such as keyboards and screens). A filesystem may be spread across many physical devices, or many filesystems may be stored on a single physical device; the operating system manages access.
A terse way to specify an option or setting to a command-line program.
By convention Unix applications use a dash followed by a single letter,
or two dashes followed by a word,
while DOS applications use a slash,
Depending on the application, a flag may be followed by a single argument, as in
function body: The statements that are executed inside a function.
function call: A use of a function in another piece of software.
The immediate application of one function to the result of another,
home directory: The default directory associated with an account on a computer system. By convention, all of a user's files are stored in or below her home directory.
An operator such as
+= that provides a shorthand notation for
the common case in which the variable being assigned to
is also an operand on the right hand side of the assignment.
x += 3 means the same thing as
x = x + 3.
index: A subscript that specifies the location of a single value in a collection, such as a single pixel in an image.
library: A family of code units (functions, classes, variables) that implement a set of related tasks.
loop variable: The variable that keeps track of the progress of the loop.
An input file to the
make program. It tells
make what to do.
notional machine: An abstraction of a computer used to think about what it can and will do.
orthogonal: To have meanings or behaviors that are independent of each other. If a set of concepts or tools are orthogonal, they can be combined in any way.
The directory that "contains" the one in question.
Every directory in a file system except the root directory has a parent.
A directory's parent is usually referred to using the shorthand notation
.. (pronounced "dot dot").
pipe: A connection from the output of one program to the input of another. When two or more programs are connected in this way, they are called a "pipeline".
precondition: A condition that must be true in order for a function (or other block of code) to run correctly.
process: A running instance of a program, containing code, variable values, open files and network connections, and so on. Processes are the "actors" that the operating system manages; it typically runs each process for a few milliseconds at a time to give the impression that they are executing simultaneously.
quoting (in the shell):
Using quotation marks of various kinds to prevent the shell from interpreting special characters.
to pass the string
*.txt to a program,
it is usually necessary to write it as
'*.txt' (with single quotes)
so that the shell will not try to expand the
redirect: To send a command's output to a file rather than to the screen or another command, or equivalently to read a command's input from a file.
referential integrity: The internal consistency of values in a database. If an entry in one table contains a foreign key, but the corresponding records don't exist, referential integrity has been violated.
regression: To re-introduce a bug that was once fixed.
regular expressions (RE): A pattern that specifies a set of character strings. REs are most often used to find sequences of characters in strings.
relative path: A path that specifies the location of a file or directory with respect to the current working directory. Any path that does not begin with a separator character ("/" or "\") is a relative path. See also: absolute path.
return statement: A statement that causes a function to stop executing and return a value to its caller immediately.
sentinel value: A value in a collection that has a special meaning, such as 999 to mean "age unknown".
shape (of an array):
An array's dimensions, represented as a vector.
For example, a 5×3 array's shape is
silent failure: Failing without producing any warning messages. Silent failures are hard to detect and debug.
slice: A regular subsequence of a larger sequence, such as the first five elements or every second element.
SQL injection attack: An attack on a program in which the user's input contains malicious SQL statements. If this text is copied directly into an SQL statement, it will be executed in the database.
SSH key: A digital key that identifies one computer or user to another.
stack frame: A data structure that provides storage for a function's local variables. Each time a function is called, a new stack frame is created and put on the top of the call stack. When the function returns, the stack frame is discarded.
standard input (stdin): A process's default input stream. In interactive command-line applications, it is typically connected to the keyboard;; in a pipe, it receives data from the standard output of the preceding process.
standard output (stdout): A process's default output stream. In interactive command-line applications, data sent to standard output is displayed on the screen; in a pipe, it is passed to the standard input of the next process.
sub-directory: A directory contained within another directory.
tab completion: A feature provided by many interactive systems in which pressing the Tab key triggers automatic completion of the current word or command.
test oracle: A program, device, data set, or human being against which the results of a test can be compared.
test-driven development (TDD): The practice of writing unit tests before writing the code they test.
timestamp: A record of when a particular event occurred.
user group: A set of users on a computer system.
variable: A name in a program that is associated with a value or a collection of values.
version control: A tool for managing changes to a set of files. Each set of changes creates a new revision of the files; the version control system allows users to recover old revisions reliably, and helps manage conflicting changes made by different users.
A character used in pattern matching.
In the Unix shell,
the wildcard "*" matches zero or more characters,
*.txt matches all files whose names end in