Glossary

absolute value

Basically, throwing away the sign on a number. Generally when we want the distance beween a and b, we say (abs (- a b))

actual arguments

arguments in a function application, such as 9 in(sqrt 9)

algebraic expression an expression with only algebraic operations. These are arithmetic operations and powers and roots.
algebraic functions arithmetic operations, powers and roots, and the functions constructed from them.

and

Operator that consumes boolean values. If they are all true, it produces true. Don't be confused by the name that sounds like English. It's just an operator, that follows definate rules.
application

When we order a program to run by saying something like (average 100 98 77)An application is an expression that RUNS a program. Also called a "call".

applying a formula Using a formula in a certain situation.
applying a function Usign a function in a certan situation. In programming, this runs a program.
argument

a variable that is defined within the header of a certain function, and then used in its body. When the function is evaluated, the arguments are replaced with the value mentioned in their position in the function application.

If you didn't understant that, drop what you're doing and talk to your teacher RIGHT NOW. This concept is just incredibly important.

argument list a list of variables found in the header of a function. All the variables in the list after the function name.
arithmetic operations Pron. ArithMETic. add, subtract, multiply and divide.
array A form of list not directly supported by Scheme. It is accessed using an index number. So MyArray[5] might mean the fifth or sixth entry.
ASCII American Standard Code for Information Interchange. Generally speaking, a way of storing a character as an 8 bit long binary number. So, A is stored as 65 or more accurately 01000001. But we very rarely work in binary.
ASCII character set American Standard Code for Information Interchange.
atomic data See simple data.
base case In a recursive definition, the case that does not mention the thing being defined. It keeps our definitions from running forever. There must be at least one. See recursive case.
big comment a comment at the top of the file with your name, date and other important information about the program(s) in the file.
blork An imaginary operation, usually performed on sporks.
body of function definition the expression that actually says what operations the function does. The critical thing is that it should use all the variables in the argument list.
boolean expression Boolean tests, relational operations, boolean variables, and fancier things built out of these things with and, or and not.
boolean expression an expression that returns a boolean value.
boolean operators Well, a lot of operators produce booleans. Relatively few have the interesting property of consuming booleans. Our main ones are "and," "or," and "not."
boolean operators Operators that consume and produce booleans. and, or, and not are the most important ones.
boolean operators and or and not. They consume and produce boolean values. This is different from "boolean tests" which may consume all manner of things, and produce booleans.
Boolean test a program that tests if a condition is true or false
Boolean value two special values called true and false, that are generally used in ways consistant with those names. The big thing is that true or false can be the result of a computation.
bound, bind When a variable has a value, it is said to have a value "bound" to it. We don't really need to worry much about the underlying mechanism that does the look-up to find the value.
boundary value the value that is at the "edge" of a range. You have to be careful to see if you need to include the boundary value in the range. For example X>0, and X>=0 really describe significantly different sets.
boundary value Where a range starts or ends. It is important to note that it may or may not be included in the range.
call, calling a function a function application, applying a function.
car The classical LISP name for first. It was "contents of address register" on the IBM 704 that John McCarthy used at MIT.
Cartesian Plane The continuous plane with no holes or discontinuities that math people use. Locations are denoted with real numbers.
case in a cond expression (question answer) . also called a cond clause
cdr The classical LISP name for rest. It was "contents of decrement register" on the IBM 704 that John McCarthy used at MIT.
char Short for character. Many programming languages have char as a kind of data. See character.
character A kind of data that represents letters, spaces, and several other kinds of marks. Internally its represented with a binary number. On our machines, it is 8 bits long, giving us 256 possible characters.
character set The list of characters a certain computer uses.
characteristic operations Different kinds of data have different characteristic operations. For example, some characteristic operations of a list of numbers are seeing if it is empty, adding a number to the list, finding a sum, etc.
code reuse Software engineers care a lot about code reuse, for efficient use of a most expensive commodity, the time of human programmers.
column Runs vertically. In a relational database, each column has a name.
comment marks marks that prevent a programming language translator (compiler or interpreter) from seeing remarks, documentation etc. that would give it a tummy-ache.
comment out to make a piece of code, or some remarks in a source code file invisible to the language translator (compiler or interpreter).
compiler A translator program that produces an executable file. Compiled exacutables may have been created long before a user runs the program. Cf: interpreter.
composing function applications taking the result of one funciton application and immediately applying another application to that value. (abs (sqrt (triple 23))) is the composition of 3 functions.
composite made up of parts
composite data Data that is composed of multiple smaller pieces of data organized in some way.
composition of functions another name for composing function applications
compound boolean expression a fancy boolean expression built out of simple boolean expressions with and, or and not.
compound boolean expression. An expression constructed with boolean operators
computation the act of finding new information from old information by performing clearly defined operations on the old information
cond clause Part of a cond clause that asks a question. Shaped like (question answer), also called a case.
condition Something in the world that could be either true or false.
conditional function Our tool in scheme for making decisions in programs.
constant a value that doesn't change. Examples include 3, pi, and false
constant expressions an expression with no variables that returns the same value whenever it is evaluated.
constructor Function that creates a certain piece of data. In Scheme the "make-whatever" functions are constructors.
consume We say that an operation "consumes" its operands. Its a metaphor, and a useful one.
contract A short statement of a function's name, and how many, and what kind of arguments it consumes and produces.
coordinates a pair of numbers that identifies a point.
data Information about a certain situation. Generally speaking, data is "dead," and programs operate on it.
data definition specification of how a certain kind of data is shaped.
data definition A precise statement of what a certain kind of data is going to be like.
database A collection of data that can be searched in complex ways. See relational database.
database management system a particular program that implements a form of database. dBase, Oracle, FoxPro are commercial DBMS's.
database query A "question" to a database. They can be surprisingly fancy and informative.
database schema A database describing the tables and columns of a relational database.
DBMS Database Management System
decimal form The notation we use to represent numbers as a sum whose denominators are consecutive powers of 10. Often, we must round numbers in order to use this form.
decision The program is said to "make a decision" when a cond expression runs. The point is that every time the program runs, a certain cond expression might do something different.
define operator Scheme operator for giving a variable or function name a meaning. You use it to make up new words (variable or function names), specify what happens when they are evaluated, and then add 'em to the symbol table.
definitions window The upper window. It is a text editor, and lets you save your program in a file.
delta In various areas of science, the difference between two consecutive things. Say your physics teacher drops a weight, and measures its position every 0.1 second. The distance traveled in one of those is a "delta".
design to create the arrangement or layout of a product. (Oxford Modern Dict.)
design recipe A list of steps to follow when designing.
directory A named collection of files on your disk. Usually visually represented by a manila folder.
double quote To Americans, a quote mark: " . We use it to mark the beginning and end of a string.
double quote These "marks" here. Americans just call 'em quotes.
DrScheme The implementation of Scheme we use.
effect A function is said to have an effect when it changes something-- either either a variable or the state of a device-- outside of itself other than the value it produces. Sometimes also called a "side effect".
empty The name of a list with no entries. It doesn't look much like a list, but it is.
engineering exponent A way of representing very small and large numbers. In 1.234e7, the e is read as "times ten to the"
evaluate to find the value of an expression. In a functional language like Scheme, it is to run a program.
even An integer produces a remainder of zero when divided by two using integer division.
exact number Numbers in Scheme that have not been subjected to rounding. Cf. inexact.
exact? Boolean test that determines if the value of an expression is a Scheme "exact number".
examples and verifications Function applications with the correct value that are used to prove that our program works.
execute When a program "executes," or "is executed"-- we talk both ways-- the "computer"-- be it machine or human-- is performing a series of operations following its instructions. If it is a machine, then circuitry is performing sequences of relatively primative operations such as arithmetic operations, compares, and moving data around in memory and other devices.
exponentiation The simple definition is "repeated multiplication". So, 5^4 means "5*5*5*5". In Scheme, we would express this as (expt 5 4)
expression Some marks that tell either a person or a machine how to find a certain value.
expt Scheme's exponentiation operator
false A special mark that can be the result of certain kinds of computations, called Boolean tests. It generally corresponds to our every-day idea of false.
fancy expression An expression that has at least one operation in it. This is a very informal term. "fancy" is used by computer scientists and mathematicians in various contexts.
file a named chunk of information on your computer's disk. It is a very general operating system concept.
first The operator that produces the first element in a list.
formula The sequence of steps taken to find a new piece of information. A formula is often exrpessed as an equation with only one variable on the left hand side, so it is used like a function.
fraction part of a number For example 1.24, the 0.24 part is a fraction, 24/100. So, we call that the "fraction part".
fractional form The form with a division bar, like 1/3. Now, note that this is a rational number in fractional form, and not a step of division in Scheme. Dividing 1 by 3 would be (/ 1 3)
free variable A variable that is not an argument.
function

A very important concept. Informally, we see a function as a series of operations on data.

Here is more about functions.

function application

An example is (sqrt 123).

It doesn't show a whole definition for sqrt. It just says: "apply sqrt to this value".

Function applications produce a value. So (+ 2 3) produces 5 when it is evaluated by a machine or a person.

In a programming situation, it makes a function execute and try to produce a value.

function call another name for a function application, mostly used in programming rather than in math settings.
function definition A kind of statement that tells what a function name means.
function header

The part of a function definition following the word "define."

It is a sort of model for the function application. So, a header for square root

(define (sqrt x) ...)

The body would fill the ...

function name In math functions often are simply called f and g. In programming there are so many functions, that they have to be given good clear names. In scheme they can't have spaces, brackets, commas, but most othe typewriter symbols are ok. See identifier.
grid A rectangle of dots. This is somewhat like the Cartesian plane, but not continuous. Locations are denoted with integers only. Your monitor is a grid.
header of function definition see header
helper function A function that performs a sub-task that is to complex to code right there in the expression, or "in-line" as we say in the business.
huh ? is read out loud as "huh". I think it comes from the traditions of typesetting and proofreading.
identifier We make up names for various things and we have to follow the spelling rules for an identifier. The most important is no spaces. Otherwise, most typewriter characters can be used besides bracketing (){}[] and commas.
implement To take a concept and make it into some real piece of technology. For example, DrScheme is an implementation of the Scheme language.
implied multiplication

In infix notation xy often is taken to mean x*y.

There absolutely is an operator there, but for brevity we omit it when we notate things by hand.

index A number INDICating where we are in a list.
inexact number A Scheme concept. Numbers that have been rounded should be marked with #i at the beginning.
infix notation Notation we use for hand calculations and many programming languages. It is wonderfully space efficient, but requires an order of operations to make it work.
insertion sorts sorts that take an item from the old list, and look at the new list, and insert it in the right place in the new list.
integer part of a number 111.333 . The part to the left of the decimal point is the integer part. We may also call it the whole part.
interactions window The bottom window in Scheme. It immediately evaluates Scheme expressions that are typed in at the prompt.
interpreter A translator program that translates at run-time and then executes as it is translating. Cf: compiler.
inverse operation An operation that "undoes" another operation. "divide by 3" and "multiply by 3" are inverse operations. Functions can have inverses also.
inverse operations Operations such as "multiply by 2" and "multiply by 1/2" that undo each other's work.
join See "operations on tables"
key The column or columns that uniquely identify each row in a database table. Often a unique identifying number like a Social Security Number, but not necessarily. A combination of 2 or more columns can also uniquely identify each row in a table.
kinds of numbers There are many kinds of numbers in mathematics. In our programs we have to be careful what kinds of numbers we contract to consume and produce.
kinds of values We will learn many kinds of values. number, boolean, and symbol are kinds of values.
list a sequenced collection of data, often but not necessarily of the same kind. An extremely important fundamental concept.
lon A list of numbers.
los A list of symbols.
name of a function see function name
nelon A non-empty list of numbers. A list defined so the base case is not empty.
not Operator that consumes a boolean value, and produces the opposite.
num Abbreviation for number we use in our contracts.
number undefined
odd If the remainder is 1 when a number is divided by 2 using integer division, the number is said to be odd. 3, 5, 7, and 09127834091283740291387409123874102937849 are odd.
operand the values an operation consumes
operation A step in a computation. It has to have a precisely defined rule.
operations on tables Select (choose rows by certain criteria), Project (choose columns by certain criteria) and Join (connect two tables by shared columns) are basic operations on tables. These operations consume and produce tables. They were invented by Codd and are part of relational database theory.
operator a sign or name of an operation
or Operator that consumes boolean values. If any are true, it produces true.
ordinal Some sets are "ordinal", and some aren't. Ordinal sets are ordered in a certain way:-- with each element (except the first and last, if they exist) having a unique predecessor and successor. Integers are ordinal, real numbers aren't.
parallel lists a way of representing related data. In parallel lists, entry # 121 would correspond to entry 121 in each list. Say one was a list of names and another was a list of favorite ice cream flavors. Then the person whose name was in entry #121 would hopefully have the same favorite flavor as is mentioned in entry #121 in the flavor list.
parameter list another commonly used name for an argument list
prefix notation A notation in which an operator is to the left of all its operands. For example, + 2 4
print image

The image a value has for us humans to look at. For example, a single character W might have been notated a lot of ways, but in Scheme, its image is #\W. I think of this as being how the value truly looks and the internal representation as some arcane thing the machine needs that I don't need to understand in total detail.

Every kind of data is displayed in a certain format.

problem statement The specification of what our program is to do. Read this.
produce We say that an operation "produces" a value.
program A sequence of operations embodied on a computer that can be applied in different situations.
program correctness Pretty much what it sounds like. As you can imagine, it is an important goal of programming.
program verification A topic in computer science. In a program verification course, you learn how to prove that a function works as you say it does.
programming language A tool for creating computer programs.
project See "operations on tables."
prompt Informally, what we call a "command interpreter". It displays a mark such as > that "prompts" the user to enter a command. In Scheme the interactions window shows a prompt.
proofing a program Another way of saying, "verifying" a program.
pseudo-random number generator A program that appears to generate random numbers. Actually it is following a computation based on some previous number called a seed.
purpose statement A few sentences stating what a function is designed to do.
query See "database query".
R-DBMS Relational DBMS.
random number Oh you know, like a die or a roulette wheel produces.
range a group of adjacent numbers with a high boundary and a low boundary.
range Data often falls into ranges, or other kinds of categories. Range generally means a group of consecutive values.
ratio

Here's an example. 2:3 is said "two to three". And we could do a step of division and consider it 2/3.

Rational numbers are those numbers that can be expressed as ratios of integers.

rational number See ratio.
rational? Tests to see if an object in Scheme is a rational number. The result may not be mathematically correct.
real number In math a number that is any single quantity. Also any procedure that defines a cut on the number line defines a real number.
real? Tests to see if an object in Scheme is a real number.
recipe A sequence of steps that you apply to a certain situation to get a result. Hm...... that sounds familiar...
recursion The principle of self-reference, self copying, self-similarity on various scales. An idea whose scope and importance I can not summarize briefly.
recursion A phenomenon that occurs in nature in a lot of different contexts. Clouds, trees, social structures and computer programs may be said to display recursion. See recursive data definition.
recursive Referring to itself in some way, containing a copy of itself.
recursive case In a recursive definition the case that mentions the thing being defined. There must be at least one. See base case.
recursive data definition When a kind of data is defined in terms of itself. See recursion.
recursively defined data Data that has repeatable parts, such as lists.
relational database A kind of database based on the idea of a collection of tables.
relational operator boolean tests which compare numbers. <, <=,=,>=, and >. Other kinds of data also have their own relational operators, such as symbol=?
relational operators <, >, <=, >=, =. Also there are relational operators for some other kinds of data.
remainder The number left over in division with integers. Oddly, this operation is actually the basis of a tremendous amount of mathematics called classical number theory. The remainder when I divide 21 by 6 is 3.
rest The operator that produces the list with the first element removed.
result The value that you get when you perform a computation.
rewrite In algebra, we rewrite expressions and equations according to rules in order to compute values, or to see relations in a different way.
row Runs horizontally. In a relational database, it is generally a collection of properties of the same thing.
rule undefined term. Addition is a rule, for example. Functions describe a rule.
Rule Of The Wish List When a sub-expression in a function gets too fancy, or seems to represent a distinct concept, write its purpose statement and contract and put it on The Wish List, and then write it later.
run See execute. They're almost exact synonyms.
save When you create work, you have to save it. This should be familiar from word processing, but if it isn't have your teacher show you how to save your work.
Save Definition This is how you save your work in Scheme: File Menu>Save Definition, then pick your directory.
Scheme A functional programming language based on a simple prefix grammar. Do a web search, and also do a web search on LISP.
search In computing, a program that looks for data with certain characteristics.
seed number The number used to start a random number generator.
select See "operations on tables."
selection sorts Sorts that work by looking at the old list, finding the next item in the new list, and adding it to the end of the new list.
selector Function that extracts a field from a structure. In Scheme, they are named "type-field"-- customer-addr gives the address field for a certain customer, posn-x gives the x coordinate for a posn and so on.
sign The thing that says if a number is positive or negative is called its "sign". Also, the marks like +-/* and so on that are used for operators are called signs sometimes.
signed number A number that is can be either positive or negative. Integers are signed. Whole numbers are not.
simple boolean expression Generally we use this with expressions with one relational operator, like (> x minimum-age) but other things such as (exact? x) could probably be described as simple also.
simple boolean expression relational operation such as (< 5 3) or a boolean test.
simple data Data that is generally not broken down further. Numbers, symbols, and booleans are simple.
simple data Kinds of data, such as number, char, and symbol that are generally not broken down further.

simple expression

One that has no operations. 3 and true are examples of simple expressions.
single quote The 'mark that is used to mark symbols. In other contexts we call 'em apostrophes.
single quote The same character that you are used to calling an apostrophe. Used to mark the beginning of a symbol value.
software engineering A discipline that has to do with the industrial production of software. Generally, it relates to Computer Science in much the same way as Chemical Engineering relates to Chemistry.
sort an operation that puts items in a list in some kind of sequence.
source code file The program you write before it is translated by a translator program.
specify To tell a function something through the argument list, or to define something such as data or a problem statement.
spork An imaginary kind of data. Originally those combinations of fork and spoon that aren't especially good for either.
step of substitution

When we apply a function such as (triple 3), 3 is substituted for all the occurances of the argument in the body of the definition, and then the resulting body is evaluated.

Steps of substituation are used in other contexts also, but they work essentially this way.

string A kind of data that contains a sequence of characters. More flexible than symbols in some ways and less flexible than symbols in others.
structure A Scheme language structure for making groups of data of a fixed length. A subscriber's data for a magazine might be represented in a structure.
structure One tool for organizing composite data. It might be comparable to a form or questionaire you might fill in.
structure definition Data definition for a structure.
style Most programming languages have their characteristic style. In Scheme, we generally name our functions in all lower case, separating words with hyphens. So, a function that gives the teacher flowers would be called give-the-teacher-flowers.
symbol a kind of data that is used for names and tags of various kinds. A symbol value looks like a sequence of characters with no spaces, no brackets, no commas. Same spelling rules as an identifier.
symbol In scheme, a form of data that resembles a variable, but generally doesn't have any further value. It's "just itself."
symbol table The "dictionary" of names that are available when you are working in Scheme. When you define something it is added to the symbol table. To see if a word has an entry, just enter it with no parentheses in the interaction window. If it returns its name, then it is defined.
system clock Computers keep track of the time down to very fine intervals. A programming language can ask for this information.
table A rectangular grid of values. Each column is named and has a certain kind of value. Each row is unique. Each table has a key. Also called a relation.
target The data we are looking for in a search.
task What we are trying to do. When we code it up, it will be a program.
template

A sort of outline generally shaped like a function that lists most of the possible variables and recursive applications that you are likely to use in designing a function.

A surprisingly wonderful tool.

test cases When we write examples and verifications, we need to address all the different possible situations. It may require several "test cases".
test suite

In software engineering, a "test suite" is a set of programs that are written especially to prove that a certain program works right.

For us, the examples and verifications are a "test suite" if they're sufficient to show program correctness.

translator A program that translates from a programming langauge to machine language.
traversal In a list or structure, when a program "visits" every item in the structure, then that's a "traversal". For example we traverse a list when we want to print it out.
true see false.
underspecified A definition that isn't quite complete.
value a specific piece of data. Generally, when we get a value, we stop computing.
variables marks that serve as "place holders" for a step of substitution. There are a number of kinds of variables, but we've talked about arguments and free variables so far. In hand computation, we often use single letters starting with x. In programming, we often use more descriptive variable names.
verification method A method for proving a program is correct.
verify In general, to "truth"-ify something: To prove that it is correct.
void A special value that means "no value".
Wish List About what it sounds like. While designing a program, or anything else, intermediate tasks may have to be specified, and then finished later. This is a tremendously important design idea.
workspace Your Scheme stuff while you are programming. The functions that are defined at the moment are said to be "in your workspace."