Index

A

A-format instructions, 911

Absolute value function, 199

Absorption identity, 990

Abstract machines, 737738

Abstract methods, 446

Abstraction

color, 341343

circuits, 10371039

data, 382

displays, 346

function-call, 590591

libraries, 230, 429

object-oriented programming, 329

printing as, 76

recursion, 289

vs. representation, 69

standard audio, 155

standard drawing, 144

standard I/O, 129, 139143

Accept states

DFAs, 738739

Turing machines, 766767

Access modifiers, 384

Accessing references, 339

Account information

dictionary lookup, 628629

indexing, 634

Accuracy

n-body simulation, 488

random web surfer, 185

Adaptive plots, 314318

Adders

binary, 771

combinational circuits, 1007

overview, 1028

ripple–carry, 10281030

sum-of-products, 1028

AddInts program, 134

Addition

complex numbers, 402403

floating-point numbers, 2426

integers, 22, 884

negative numbers, 887

spatial vectors, 442443

Address control lines, 1056

Addresses

array elements, 94

memory, 909

symbolic names, 981

Adelman, Leonard, 795

Adjacency matrix, 692

Adjacent vertices, 671

Albers, Josef, 342

AlbersSquares program, 341342

Alex, 380

Algebra

boolean, 989991

vectors, 442443

Algorithms, 493

computability, 787

decidability, 786787

exponential-time, 826

overview, 786

performance. See Performance

polynomial-time, 825826

searching. See Searches

sorting. See Sorts

Aliasing

arrays, 516

bugs from, 439, 441

references, 363

Allocating memory, 94, 367

Alphabets

formal languages, 720721

metasymbols, 725

regular expressions, 730

symbols, 718719

ALUs. See Arithmetic logic units (ALUs)

Amortized analysis, 580581

Ampersands (&)

bitwise operations, 891892

boolean type, 2627, 991

Analog circuits, 1013

AND circuits in ALUs, 1031

AND gates, 1014

And operation

bitwise, 891892

boolean type, 2627, 987989

TOY machine, 913

Animations

BouncingBall, 152153

double buffering, 151

Annihilation identity, 990

Antisymmetric property, 546

Application programming interfaces (APIs)

access modifiers, 384

Body, 480

built-in data types, 3032

Charge, 383

Color, 343

Comparable, 545

Complex, 403

Counter, 436437

data types, 388

designing, 233, 429431

Draw, 361

Graph, 675679

Histogram, 392

implementing, 231

In, 354

libraries, 29, 230232

modular programming, 432

Out, 355

PathFinder, 683

Picture, 347

Queue, 592

SET, 652

Sketch, 459

spatial vectors, 442443

ST, 625

StackOfStrings, 568

StdArray, 237

StdAudio, 159

StdDraw, 149, 154

StdIn, 132133

StdOut, 130

StdRandom, 233

StdStats, 244

StockAccount, 410

Stopwatch, 390

String, 332333

symbol tables, 625627

Turtle, 394

Universe, 483

Vector, 443

Approximation algorithms, 852

Arbitrary-size input streams, 137138

args argument, 7, 208

Arguments

arrays as, 207210

command-line, 78, 11, 127

constructors, 333, 385

methods, 30

passing, 207210, 364365

printf(), 130132

static methods, 197

Ariane 5 rocket, 35

Arithmetic

CPU instructions, 1079

floating point numbers, 890

integers, 884885

operators, 22

TOY machine instructions, 912

Arithmetic logic units (ALUs), 1031

bitwise operations, 1031

inputs, 1031

outputs, 1032

summary, 10321033

TOY machine, 910

Arithmetic expression evaluation, 586589

Arithmetic shifts

bits, 891892

purpose, 898899

ArrayIndexOutOfBoundsException, 95, 116, 466

Arrays

aliasing, 516

as arguments, 207210

assigning, 117

associative, 630

binary searches, 538539

bitonic, 563

bounds checking, 95

comparing, 117

coupon collector problem, 101103

decks of cards, 97100

declaring, 91, 116

default initialization, 93

exchanging values, 96

FIFO queues, 596

hash tables, 636

I/O libraries, 237238

images, 346347

immutable types, 439440

iterable classes, 603

linked structures, 942944

machine-language, 938941

memory, 91, 94, 515517

multidimensional, 111

overview, 9092

parallel, 411

plotting, 246248

precomputed values, 99100

references, 365

resizing, 578581, 635

as return values, 210

setting values, 9596

shuffling, 97

side effects, 208210

Sieve of Eratosthenes, 103105

stacks, 568570, 578581

summary, 115

transposition, 120

two-dimensional. See Two-dimensional arrays

Arrays.binarySearch(), 559

Arrays.sort(), 559

ArrayStackOfStrings program, 568570, 603

Arrival rate in M/M/1 queues, 597598

The Art of Computer Programming book, 947

ASCII standard, 874, 894895

Assemblers for TOY machine, 964

Assembly language

description, 930

symbolic names, 981

Assertions, 466467

Assignments

arrays, 117

chained, 43

compound, 60

description, 17

references, 363

Associative arrays, 630

Associative axiom, 990, 993

Associativity, 17

Asterisks (*)

comments, 9

floating-point numbers, 2426

integers, 2223

regular expressions, 724

Audio

plotting sound waves, 249

standard, 155159

superposition, 211215

Autoboxing, 457, 585586

Automatic promotion, 33

Average-case performance, 648

Average magnitude, 164

Average path lengths, 693

Average power, 164

Average program, 137138

Axioms in Boolean algebra, 990

B

Backslashes (\)

escape sequences, 19

regular expressions, 731

Backward compatibility, 976

Bacon, Kevin, 684

Balanced binary trees, 661

Ball animation, 152153

Barnsley ferns, 240243

Base cases

binary search trees, 640

recursion, 264265, 281

Base classes, 452453

Base64 encoding, 904

Bases in positional notation, 875

Basic scaffolding, 302304

Basic statistics, 244246

Beck exploit, 529

Beckett, Samuel, 273

Beckett program, 274275

Behavior of objects, 340

Benford’s law, 224

Bernoulli, Jacob, 398

Bernoulli program, 249250

Best-case performance

binary search trees, 647

insertion sort, 544

Big-O notation, 520521

BigInteger class, 827, 897898

Binary adders, 771

Binary digits, 22

Binary frequency count equality, 772773

Binary incrementers, 769771

Binary number system

conversions, 6769

description, 38

Binary operators, 17

Binary program, 6769

Binary reflected Gray code, 274

Binary representation

decimal conversions, 877

description, 875

examples, 878879

hex conversions, 876877

literals, 891

Binary search trees (BSTs)

implementation, 645646

insert process, 644645

machine-language, 942944

ordered operations, 651

overview, 640643

performance, 647648

search process, 643644

symbol tables, 624625

traversing, 649650

Binary searches

binary representation, 536

correctness proof, 535

exception filters, 540

inverting functions, 536538

overview, 533534

random web surfer, 176

running time, 535

sorted arrays, 538539

symbol tables, 635

weighing objects, 540541

Binary strings, 718719

Binary trees

balanced, 661

heap-ordered, 661

isomorphic, 661

Binary16 format, 888

BinarySearch program, 538539

Binomial coefficients, 125

Binomial distributions, 125, 249

Biology

computational, 732734

DNA computers, 795

genomics application, 336340

graphs, 672

Bipartite graphs, 682

Bisection searches, 537

Bit-slice memory design, 10541056

Bitmapped images, 346

Bitonic arrays, 563

Bits

binary number system, 38, 875

bitwise operations, 891892

computer dependence, 874

description, 22

logical instructions, 912913

manipulating, 891893

memory, 1056

memory size, 513

register, 1051

shifting, 891892

Bitwise operations

and, 913

arithmetic logic units, 1031

exclusive or, 39, 913

shift, 913

Black–Scholes formula, 222, 565

Blobs, 709

Blocks

statements, 50

variable scope, 200

Bodies

loops, 53

static methods, 196

Body program

memory, 514

N-body simulation, 479482

Bollobás–Chung graph model, 713

Book indexes, 632633

Booksite, 23

Boole, George, 986

boolean data type

conversion codes, 131132

description, 1415

input, 133

memory size, 513

overview, 2627

Boolean logic

cryptography application, 992994

description, 27

expressions, 995996

functions, 987991, 994997

overview, 986

Boolean matrices, 302

Boolean satisfiability, 832, 836

boolean equation satisfiability problem, 838

NP-completeness, 844846, 853856

Booting, 959960, 968969

Bootstrapping, 971

BouncingBall program, 152153

Bounding boxes for drawings, 146

Bounds

arrays, 95

exponential time, 826

polynomial time, 825

Boxing, 457, 585586

Box–Muller formula, 47

Breadth-first searches, 683, 687688, 690, 692

break statement, 74

Bridges, Brownian, 278280

Brin, Sergey, 184

Brown, Robert, 400

Brownian bridges, 278280

Brownian motion, 400401

Brownian program, 278280

Brute-force algorithm, 535536

BST program, 645646

BSTs. See Binary search trees (BSTs)

Buffer overflow

arrays, 95

attacks, 963

Buffering drawings, 151

Bugs

aliasing, 363, 439, 441

overview, 6

testing for, 318

Built-in data types

boolean, 2627

characters and strings, 1921

comparisons, 2729

conversions, 3235

floating-point numbers, 2426

integers, 2224

library methods, 2932

overview, 1415

summary, 3536

terminology, 1518

Built-in interfaces, 451

Buses, 10341036

CPU connections, 1077

program counter connections, 10731074

Buzzers, 1048

byte data type, 24

Bytecode

compiling, 589, 788

Java virtual machine, 965

Bytes memory size, 513

C

C conversion specification, 131

Caches

and instruction time, 509

in top-down dynamic programming, 284

Calculators, 908

Callbacks in event-based programming, 451

Calls, 193

chaining, 404

in machine language, 932933

methods, 30, 197, 340

reverse Polish notation, 591

Canvas, 151

Card decks, arrays for, 97100

Carets (^)

bitwise operations, 891892

regular expressions, 731

Carroll, Lewis, 710

Carry bits in adders, 1028

Cartesian representation, 433

Casts, 3334

Cat program, 356

Cellular automata, 794

Central processing units (CPUs)

bus connections, 1077

control lines, 10771078

execute phase, 1079

fetch phase, 1078

instructions, 10791080

interfaces, 1076

load address, 1080

modules, 1076

overview, 985

TOY-8 machine, 10761080

Centroids, 164

Chained assignments, 43

Chained comparisons, 43

Chaining method calls, 404

Characters and char data type

ASCII, 894

conversion to numbers, 880881

description, 15

memory size, 513

representing, 894895

Unicode, 894895

working with, 1921

Charge program, 383389, 515

Checksums

description, 86

formula, 220

Chords, 211

Chromatic scale, 156

Church, Alonso, 790

Church–Turing thesis

extended, 823

overview, 790791

Turing machine simulation, 798

virtual machines, 958

Ciphers, Kamasutra, 377

Ciphertext, 993

Circuit models

building circuits, 10061008

connections, 10021004

controlled switches, 10051006

conventions, 1004

inputs, 10021004

logical design, 10081009

outputs, 10021004

overview, 10021003

wires, 10021004

Circuits

combinational. See Combinational circuits

description, 1010

from gates, 10191021

memory, 10541057

Circular linked lists, 622

Circular queues, 620

Circular shifts, 375

.class extension, 3, 8, 228

ClassDefFoundError, 160

Classes, 45

accessing, 227229

description, 226

implementing, 383389

inner, 609

modules as, 228

variables, 284

Classifying NP-complete problems, 851

Client code

data types, 430

library methods, 230

Clocks

CPU, 10771079

fetch and execute, 1059, 1061

overview, 10581059

run and halt inputs, 1060

write control, 10591060

Closure operation in REs, 724

Clouds, plasma, 280

Clustering coefficients

global, 713

local, 693694

CMYK color format, 4849, 371

Code and coding

description, 2

encapsulating, 438

incremental development, 319, 701

reuse, 226, 253, 701

static methods, 205206

Codebooks, 992

Codons, genes, 336

Coefficients for floating-point numbers, 889

Coercion, 33

Coin flip, 5253

Collatz function, 784

Collatz problem, 296297, 818

Collatz sequence, 948

Collections

description, 566

iterable, 601605

objects, 582583

queues. See Queues

stacks. See Stacks

symbol tables. See Symbol Tables

Colons (:)

in Turing machine tapes, 767

foreach statements, 601602

Color and Color data type

blobs, 709

compatibility, 344

conversion, 4849

drawings, 150

grayscale, 344

luminance, 343

memory, 514

overview, 341343

Columns in 2D arrays, 106, 108

Combinational circuits

adders, 10281030

ALUs, 10311033

buses, 10341036

decoders, 10211022

demultiplexers, 1022

description, 10071008

gates, 10131021

layers of abstraction, 10371039

modules, 1034

multiplexers, 1023

overview, 1012

sum-of-products, 10241027

Comma-separated-value (.csv) files, 358, 360

Command-line arguments, 78, 11, 127

Commas (,)

arguments, 30

constructors, 333

lambda expressions, 450

methods, 30, 196

two-dimensional arrays, 108

Comments, 5, 9

Commercial data processing, 410413

Common sequences, longest, 285288

Commutative axiom, 990

Compact trace format, 770

Comparable interface, 451, 545

Comparable keys

sorting, 546

symbol tables, 626627

CompareDocuments program, 462463

compareTo() method

description, 451

String, 332

user defined, 545546

Comparisons

arrays, 117

chained, 43

objects, 364, 545546

operators, 2729

performance, 508509

sketches, 462463

Compatibility

backward, 976

Color, 344

Compile-time errors, 6

Compilers

description, 3, 589

optimizing, 814

programs as data, 922924

purpose, 788

TOY machine, 964965

Compiling

array values set at, 9596, 108

classes in, 229

description, 2

programs, 3

Complement operation

bitwise, 891

Boolean algebra, 990

Complete small-world graphs, 694

Complex program

chaining method calls, 404

encapsulation, 433434

instance variables, 403404

objects, 404

overview, 402403

program, 405

Complex numbers, 406409

Compound assignments, 60

Compression, optimal, 814

Computability

algorithms, 787

halting problem, 808810

Hilbert’s program, 806807

liar’s paradox, 807808

overview, 806

reduction, 811813

unsolvability proof, 810

unsolvable problems. See Unsolvable problems

Computation: Finite and Infinite Machines, 780

Computational biology, 732734

Computational models, 716

Computer animations, 151

Computer speed in performance, 507508

Computer systems, 10941095

Computers and Intractability: A Guide to the Theory of NP-completeness book, 859

Computers Ltd.: What They Really Can’t Do book, 780

Computing devices

boolean logic. See Boolean logic

circuit models. See Circuit models

combinational circuits. See Combinational circuits

digital. See Digital devices

overview, 985

sequential circuits. See Sequential circuits

Computing machines

machine-language programming. See Machine-language programming

overview, 873

representing information. See Representing information

TOY. See TOY machine

Computing sketches, 459460

Concatenation

files, 356

strings, 1920, 723724

Concert A, 155

Concordances, 659

Conditionals and loops, 50

applications, 6473

break statement, 74

continue statement, 74

do-while loops, 75

examples, 61

for loops, 5961

if statement, 5053

infinite loops, 76

miscellaneous, 7475

in modular programming, 227228

nesting, 6264

performance analysis, 500, 510

static methods, 193195

summary, 77

switch statement, 7475

TOY machine, 913, 918921

while loops, 5359

Connected components, 709

Connecting programs, 141

Connections

buses, 1034

circuit models, 10021004

CPU, 1077

power source, 10031004

program counters, 10731075

Constant order of growth, 503

Constants, 16

Constructors

data types, 384385

String, 333

Containing symbol table keys, 624

Context-free languages, 755

Continue statements, 74

Contracts

APIs, 230231

design by contract, 465467

interface, 446447

machine-language, 932

Control characters, 894

Control circuit

CPU, 1078

execute signals, 10821083

fetch signals, 1080, 10821083

overview, 1080

Control flow

conditionals and loops. See Conditionals and loops

static method calls, 193195

Control lines

CPU, 10771080

memory bits, 1056

multiplexers, 10191020

program counters, 10741075

register bits, 1051

Controlled switches, 10021003, 10051006

Conversion codes, 131132

Conversion specifications, 130131

Conversions

casts, 3334

color, 4849

data types, 339

decimal to binary, 877

explicit, 3435

hex and binary, 876877

implicit, 33

numbers, 21, 6769

overview, 32

strings, 21, 453, 880881

Convert program, 880882

Conway, John, 326, 794

Cook, Stephen, 840, 845

Cook–Levin theorem, 844845, 847

Cook reduction, 841

Coordinates

drawing, 144146

images, 347

polar, 47

Corner cases, 236

Cosine similarity measure, 462

Cost of immutable types, 440

Coulomb’s law, 383

Counter circuits, 1008

Counter machines, 794

Counter program, 436437

Coupon collector problem, 101103

Coupon program, 206

CouponCollector program, 101103, 205

CPUs. See Central processing units (CPUs)

Craps game, 259

Cray, Seymour, 971

Crichton, Michael, 424

Cross-coupled NOR gates, 1050

Cross-coupled switches, 1049

Cross products of vectors, 472

Cryptographic keys, 992

Cryptography application, 992994

Cryptosystems, 992993

<Ctrl-C> keys, 76

<Ctrl-D> keys, 137

<Ctrl-Z> keys, 137

Cubic order of growth, 505508

Cumulative distribution function, 202203

Curly braces ({})

regular expressions, 724, 731

statements, 5, 7879

static methods, 196

two-dimensional arrays, 108

Curves

Brownian bridges, 278280

Dragon, 49, 424

Koch, 397

space-filling, 425

spirals, 398399

Cycles per second, 155

D

Dantzig, George, 831

Data abstraction, 329, 382

Data as instructions, 922924

Data compression, 814

Data-driven code, 141, 171, 184

Data mining example, 458459

Data paths for buses, 1034

Data structures, 493

arrays. See Arrays

binary search trees. See Binary search trees (BSTs)

linked lists, 571578

queues. See Queues

resource allocation, 606607

stacks. See Stacks

stock example, 411

summary, 608

symbol tables. See Symbol tables

Data-type design

APIs, 429431

data mining example, 458464

design by contract, 465467

encapsulation, 432438

immutability, 439446

subclassing, 452457

subtyping, 446451

overview, 428

Data types

access modifiers, 384

APIs, 383

boolean, 991

built-in. See Built-in data types

classes, 383

Color, 341345

Complex, 402405

constructors, 384385

conversions, 3435, 339

creating, 382

definitions, 331335

DrunkenTurtle, 400401

elements summary, 383

generic, 583585

Histogram, 392393

image processing, 346352

immutable, 364, 439

input and output, 353362

insertion sorts, 545548

instance methods, 385386

instance variables, 384

Koch, 397

Mandelbrot, 406409

output, 355

overview, 330

reference, 362369

Spiral, 398399

StockAccount, 410413

Stopwatch, 390391

String. See Strings and String data type

summary, 368

TOY machine, 907

Turtle, 394396

type safety, 18

variables within methods, 386388

Data visualization, 307309

Davis, Martin, 816

Dead Sea Scrolls, 659

Debugging

abstraction layers, 1037

assertions, 466467

encapsulation for, 432

immutable types, 440

incremental, 317, 319

linked lists, 596

modular programming, 251254

test client main() for, 235

unit testing, 246

Decidability, 786787

Decimal number system

conversion to binary, 877

description, 38, 875

examples, 878879

Decision problems, NP, 835

Decks of cards, 97100

Declaration statements, 1516

Declaring

arrays, 91, 116

String variables, 333

Decoders, 10211022

Decoding numbers, 889

Decrementers, binary, 770771

Decryption devices, 992

Dedup operation

punched paper tape, 942944

strings, 652653

DeDup program, 652653

Default values

arrays, 93, 106107

canvas size, 145

ink color, 150

instance variables, 415

Node objects, 572

pen radius, 146

Defensive copies, 441

Defining

functions, 192

interfaces, 446

static methods, 193, 196

Definite integration, 816

Degrees of separation

description, 670

shortest paths, 684686

DeMorgan’s laws, 989991, 10141015

Demultiplexers, 1022

Denial-of-service attacks, 512

Dependencies in subclasses, 453

Dependency graphs, 252

Deprecated methods, 469

Depth-first searches

vs. breadth-first searches, 690

percolation case study, 312

Deques, 618

Derived classes, 452

Descartes, René, 398

Design

APIs, 233

by contract, 465467

data types. See Data-type design

Deterministic finite-state automata (DFAs)

examples, 740741

implementation, 741743

Kleene’s theorem. See Kleene’s theorem

language recognized, 739740

NFA equivalence, 749750

nondeterminism, 744748

operations, 739

overview, 738

power limitations, 753755

summary, 756

universal virtual, 788789

DFA program, 742743

Diameters of graphs, 711

Diamond operators (<>), 585

Dice

Sicherman, 259

simulation, 121

Dictionary lookup, 624, 628632

Difficult problems

intractability, 828829

search problems, 837838

Digital circuits, 1013

Digital devices, 1070

control, 10801082

CPU, 10761080

program counters, 10731075

Digital image processing

digital images, 346347

fade effect, 351352

grayscale, 347349

overview, 346

scaling, 349350

Digital signal processing, 155, 158

Dijkstra, Edsgar

Dutch-national-flag problem, 564

goto statements, 926

two-stack algorithm, 587

Dijkstra’s algorithm, 692

Diophantine, 816

Directed graphs, 711

Directed percolation, 317

Discrete distributions, 172

Disjunctive normal forms, 996997

Distances of graph paths, 683, 687688

Distributive axiom, 990

Divide-and-conquer approach

linearithmic order of growth, 504

mergesort, 550551, 554

Division

floating-point numbers, 2426

integers, 2223

polar representation, 433

DivisorPattern program, 6264

DNA computers, 795

DNS (domain name system), 629

do-while loops, 75

Documents, searching for, 464

Dollar signs ($) in REs, 731

Domain name system (DNS), 629

Domains, function, 192

Dot products

function implementation, 209

vectors, 92, 442443

Double.parseDouble() method

calls to, 3031

type conversion, 21, 34

Double buffering drawings, 151

double data type

conversion codes, 132

description, 1415

input, 133

memory size, 513

overview, 2426

Double negation identity, 990

Double negatives in gates, 10151016

Double quotes ("")

escape sequences, 19

text, 5, 10

Doublet game, 710

Doubling hypotheses, 496, 498499

DoublingTest program, 496, 498499

Downscaling in image processing, 349

Dragon curves, 49, 424

Dragon program, 163

Draw library, 361

Drawings

recursive graphics, 276277

standard. See Standard drawing

DrunkenTurtle program, 400

DrunkenTurtles program, 401

Dumping virtual machines, 960961

Dutch-national-flag problem, 564

Dynamic dictionaries, 628

Dynamic dispatch, 448

Dynamic programming

bottom-up, 285

longest common subsequence, 285288

overview, 284

summary, 289

top-down, 284

E

Easy problems

intractability, 829

search, 837

Eavesdroppers, 992993

Eccentricity in vertices, 711

Eckert, J. Presper, 924925

Edges

graphs, 671, 674

self-loops and parallel, 676

EDVAC computer, 924925

Efficiency

n-body simulation, 488

random web surfer, 185

Turing machines, 772

Efficient algorithms, 532

Einstein, Albert, 400

Election voting machine errors, 436

Electric charge, 383389

Element distinctness problem, 554

Elements in arrays, 90

else clauses, 5152

Empirical analyses, 496497

Empty strings with REs, 724

Emulators, 965

Encapsulation

code clarity, 438

error prevention, 436437

example, 433434

modular programming, 432

overview, 432

planning for future, 435

private access modifier, 433

Encoding numbers, 889

Encryption devices, 992

End-of-file sequence, 137

Enhancements for Turing machines, 792793

ENIAC computer, 924925

Enigma code, 717

Entropy

Shannon, 378

text corpus, 667668

Equals signs (=)

assignment statements, 17

assignment vs. boolean, 42, 78

comparisons, 2729, 364

compound assignments, 60

vs. equals(), 369370

Equality of objects, 364, 454456

equals() method

Color, 343

vs. equals signs, 369370

Object, 453455

String, 332

Equilateral triangles, 144145

Equivalence problem for REs, 728

Equivalent models for Turing machines, 792793

Erdös, Paul, 686

Erdös–Renyi model, 695, 712

Errors

aliasing, 363

debugging. See Debugging

encapsulation for, 436437

overview, 6

syntax, 1011

testing for, 318

Escape characters, 730, 757

Escape sequences, 19

Euclidean distance

sketch comparisons, 462463

vectors, 118

Euclid’s algorithm

description, 85

machine-language, 931

recursion, 267268

TOY machine, 918921

Euler, Leonhard, 89

Euler’s constant, 222

Euler’s sum-of-powers conjecture, 89

Euler’s totient function, 222

Evaluate program, 588589

Evaluating expressions, 17, 586589

Event-based programming, 451

Exception class, 465

Exception filters, 540

Exceptions, 465467

Exchanging values

arrays, 96

function implementation, 209

Exclamation points (!)

not operator, 2627, 991

comparisons, 2729

Exclusive or operation

bitwise, 891892, 913

boolean, 987989

sum-of-products, 10241025

Execute phase in CPU, 1079

Explicit casts, 3334

Exponential distributions, 597

Exponential order of growth, 505

difficult problems, 828829

intractability, 826

overview, 272273, 506

playing card possibilities, 823

running time, 507508

SAT problem, 856

usefulness, 858

Expressions

arithmetic evaluation, 586589

boolean, 995996

description, 17

Lambda, 450

method calls, 30

regular. See Regular expressions

Extended Church–Turing thesis, 823

Extensible libraries, 452

ExtractFloat program, 893

Extracting data, 358, 360

F

Factor problem, 838, 859

Factorials, 264265

Factoring, 7273, 827, 838

Factors program, 7273

Fade effect, 351352

Fade program, 351352

Fair coin flip, 5253

Falsifiable hypotheses, 495

Fecundity parameter, 89

Feedback circuits, 10481049

Fermat’s Last Theorem, 89, 722

Ferns, Barnsley, 240243

Fetch–increment–execute cycle, 910911

Fibonacci numbers

formulas, 82

machine language, 935936

recursion, 282283

FIFO queues. See First-in first-out (FIFO) queues

Files

concatenating and filtering, 356

format, 237

in I/O, 126

n-body simulation, 483

redirection, 139141

splitting, 360

stock example, 411

symbol tables, 629

Filled shapes, 149

Filters

exception, 540

files, 356

image processing, 379

piping, 142143

standard drawing data, 146147

standard input, 140

final keyword

description, 384

immutable types, 440

instance variables, 404

Financial systems, graphs for, 673

Finite-state transducers, 762

Finite sums, 6465

First-in first-out (FIFO) queues

applications overview, 597

array implementation, 596

linked-list implementation, 593

M/M/1, 597600

overview, 566, 592593

Flexibility, 702

Flip program, 5253

Flip-flops, 10491050

float data type, 26, 513

Floating-point numbers

conversion codes, 131132

exponents, 889

overview, 2426

precision, 40

representing, 888890

storing, 40

Flow of control

conditionals and loops. See Conditionals and loops

static method calls, 193195

Flowcharts, 5152

for loops

continue statement, 74

examples, 61

nesting, 6264

working with, 5961

Foreach statements, 601602

Formal languages

abstract machines, 737738

alphabets, 720721

binary strings, 718719

definitions, 718723

DFAs. See Deterministic finite-state automata (DFAs)

recognition problem, 722

regular, 723729

regular expressions. See Regular expressions (REs)

specification problem, 722

Format, files, 237

Format strings, 130131

Formatted input, 135

Formatted printing, 130132

Forth language, 590

Fortran language, 1094

Fourier series, 211

Fractal dimensions, 280

Fractals, 278280

Fractional Brownian motion, 278

Fractions, 889890

Fragile base class problem, 453

Freeing memory, 367

Frequencies

counting, 555

sorting, 556

Zipf’s law, 556

FrequencyCount program, 555557

Fully parenthesized arithmetic expressions, 587

Function calls

abstraction, 590591

static methods, 197

traces, 195

trees, 269, 271

Function graphs, 148, 248

Functional interfaces, 450

Functional programming, 449

Functional property of programs, 812813

Functions

boolean, 987991, 994997

computing with, 449

defining, 192

inverting, 536538

iterated function systems, 239243

libraries. See Libraries

machine language, 931933

mathematical, 202204

modules. See Modules

overview, 191

recursive. See Recursion

static methods, 193201

tables of, 907908

G

Gambler program, 7071

Gambler’s ruin simulation, 6971

Game of Life, 326, 794

Garbage collection, 367, 516

Gardner, Martin, 424

Garey, Michael R., 859

Gates

abstraction layers, 1037

AND, 1014

circuits from, 10191021

multiway, 10151017

NOR, 1014

NOT, 10131014

OR, 1014

overview, 1013

sum-of-products, 10261027

summary, 10181019

universal sets of, 1045

Gaussian distribution functions

API, 231

cumulative, 202203

probability density, 202203

Gaussian elimination, 830

Gaussian program, 203

Gaussian random numbers, 47

General purpose computers, 790

Generalized multiway gates, 10161017

Generalized regular expressions, 730732

Generic types, 583585

Genomics

application, 336340

indexing, 634

regular expressions, 727, 732734

symbol tables, 629

Geometric mean, 162

Geometry

abstraction layers, 10371039

gates, 10151016

German Enigma code, 717

Get operations

hash tables, 639

symbol tables, 624

Gilbert–Shannon–Reeds model, 125

Glass filters, 379

Global clustering coefficients, 713

Global variables, 284

Glossary of terms, 10971101

Gödel, Kurt, 807, 840

Golden ratio, 83

Goldstine, Herman, 925

Gore, Al, 436

Gosper, R., 805

Goto statements, 926

Graph data type, 675679

Graph program, 676679

Graphics

recursive, 276277, 397

turtle, 394396

Graphs

bipartite, 682

client example, 679682

connected components, 709

dependency, 252

description, 671

DFAs, 738

diameters, 711

directed, 711

examples, 695

function, 148, 248

generators, 700

Graph data type, 675679

grid, 708

isomorphism problem, 859

lessons, 700702

matching, 713

overview, 670671

random web surfer, 170

small-world, 693699

systems examples, 671674

vertex cover, 828, 834, 842

Gravity, 481

Gray codes, 273275

Grayscale

Color, 344

image processing, 347349

Grayscale program, 347349

Greater than signs (>)

bitwise operations, 891892

comparisons, 2729

lambda expressions, 450

redirection, 139140

Greatest common divisor (gcd)

machine language, 931

recursive algorithm, 267268

TOY machine, 918921

Grep program, 736

grep tool

filters, 142143

regular expressions, 734736

Grid graphs, 708

Guarantees

NP-complete problems, 852

performance, 512, 627

worst-case analysis, 825

H

H-trees of order n, 276277

Hadamard matrices, 122

Halt instructions

CPU, 1079

TOY machine, 912

Halting problem, 808810

Hamilton, William, 424

Hamming distances, 295

Handles for pointers, 371

Hardy, G. H., 86

Harel, David, 780

Harmonic mean, 162

Harmonic numbers

finite sums, 6465

function implementation, 199

Harmonic program, 193195

HarmonicNumber program, 6465

Harmonics and chords, 211

Hash codes and hashing operation

object equality, 454455

sketches, 460

strings, 515

symbol tables, 624

Hash functions, 636

Hash tables, 636639

Hash values, 636

Hashable keys, 626

hashCode() method

Object, 453, 455456

String, 332

HashMap class, 655

HashST program, 637638

Heap memory, 516

Heap-ordered binary trees, 661

Height in binary search trees, 640

HelloWorld program, 46

Hertz, 155

Hexadecimal (hex) notation

conversions with binary, 876877

description, 875876

examples, 878879

literals, 891

memory, 909

Hilbert, David, 425, 806, 816

Hilbert curves, 425

Hilbert’s 10th problem, 816

Hilbert’s program, 806807

Histogram program, 392393

Histograms, 177

Hoare, C. A. R., 518

Hollywood numbers, 711

Horner, William, 957

Horner’s method, 223, 882, 956957

Htree program, 276277

Humanists, 716717

Hurst exponent, 280

Hyperbolic functions, 256

Hyperlinks, 170

Hypotenuse of right triangles, 199

Hypotheses

doubling, 496, 498499

falsifiable, 495

mathematical analysis, 498, 500502

overview, 496

I

I/O. See Input; Output

Identifiers, 1516

Identities

Boolean algebra, 989990

exclusive or function, 993

objects, 338, 340

IEEE 754 standard, 40, 888889

if statements

nesting, 62

working with, 5053

IFS program, 241, 251

IllegalFormatConversionException, 131

ILP problem (integer linear programming problem), 831

NP-completeness, 846

vertex cover problem, 842

Immutable types, 364, 439

advantages, 440

arrays and strings, 439440

cost, 440

example, 442445

final modifier, 440

references, 441

symbol table keys, 625, 655

Implementation

API methods, 231

interfaces, 447

Implements clause, 447

Implicit type conversions, 33

In data type, 354356

Incremental development, 319, 701

Incrementers, binary, 769771

Index program, 632634

IndexGraph program, 680682

Indexing

arrays, 90, 116

String, 332

symbol tables, 624, 632634

zero-based, 92

Induced subgraphs, 705

Induction

mathematical, 262, 266

recursion step, 266

Infinite loops, 76, 808812

Infinite tape for Turing machines, 769, 774

Infinity value, 26, 40

Information content of strings, 378

Information representation. See Representing information

Inheritance

multiple, 470

subclassing, 452457

subtyping, 446451

Initialization

array, 93

inline, 18

instance variables, 415

two-dimensional array, 106107

Inline variable initialization, 18

Inner classes, 609

Inner loops

description, 62

performance, 500, 510

Inorder tree traversal, 649

Input

arithmetic logic units, 1031

array libraries, 237238

circuit models, 10021004

clocks, 1060

command-line arguments, 7

data types, 353

demultiplexers, 1022

file concatenation, 356

gates, 1013

insertion sorts, 548549

machine-language, 936938

multiplexers, 10191020

overview, 126129

in performance, 510

program counters, 10731075

random web surfer, 171

screen scraping, 357359

standard, 132138

stream data type, 354355

virtual machines, 969970

Input/off switches, 1005

InputMismatchException, 135

Inserting

BST nodes, 644645

linked list nodes, 573574

Insertion program, 546547

Insertion sorts

data types, 545548

input sensitivity, 548549

overview, 543544

performance, 544545

InsertionDoublingTest program, 548549

Instance methods

data types, 385386

invoking, 334

vs. static, 340

Instance variables

Complex program, 403404

data types, 384

initial values, 415

Instances of objects, 333

Instruction register (IR), 910

Instructions

components, 911

CPU, 10791080

as data, 922924

execution time, 509

instruction sets, 911913

parsing, 966967

TOY machine, 909

TOY-8 machine, 10701071

Integer linear inequality satisfiability, 831, 838, 845

Integer linear programming, 831

NP-completeness, 846

vertex cover problem, 842

Integer.parseInt() method

calls to, 3031

type conversion, 21, 23, 34

strings, 880882

Integers and int data type

arithmetic, 884885

bitwise operations, 891892

conversion codes, 131132

description, 1415

input, 133134

overview, 2224

Integrals, approximating, 449

Integrated development environments (IDEs), 3

Integration, definite, 816

Interactions between modules, 319

Interactive user input, 135136

Interface construct, 446

Interfaces

APIs, 430

built-in, 451

circuit models, 1003

CPU, 1076

defining, 446

functional, 450

gates, 10161017

implementing, 447

memory, 1054

multiplexers, 1020

program counters, 1073

using, 447448

Internet DNS, 629630

Internet Protocol (IP), 435

Interpolation in fade effect, 351

Interpreters

Evaluate program, 589

TOY machine, 964

IntOps program, 23

Intractability

difficult problems, 828829

easy problems, 829

exponential-time algorithms, 826

main question, 840841

NP-completeness. See NP-completeness

numbers, 827

overview, 822824

path problems, 829

polynomial-time algorithms, 825826

polynomial-time reductions, 841843

problem size, 824

satisfiability, 830832

search problems, 833840

subset sum problem, 827828

vertex cover, 828

worst case, 825

Introduction to the Theory of Computation book, 780

Invariants in assertions, 467

Inverse permutations, 122

Inverters, 10131014

Inverting functions, 536538

Invoking instance methods, 334

IP (Internet Protocol), 435

IPv4

vs. IPv6, 435

number of addresses, 900, 904

IPv6

vs. IPv4, 435

number of addresses, 901

IR (instruction register), 910

IR write control line, 1082

ISBN (International Standard Book Number), 86

Isolated vertices in graphs, 703

Isomorphic binary trees, 661

Isomorphism in graphs, 859

Items in collections, 566

Iterable interface, 451, 602

Iterable collections, 601605

arrays, 603

linked lists, 604605

Queue, 604605

SET, 652

Stack, 603

Iterated function systems, 239243

Iterations in BSTs, 650

Iterator interface, 451, 602605

J

Java command, 3, 134

.java extension, 3, 6, 8, 197, 383

Java language

benefits, 9

libraries, 1094

overview, 18

Java platform, 2

Java Virtual Machine (JVM)

description, 3

overview, 965966

as program, 788

Java virtual machines, 429

Johnson, David S., 859

Josephus problem, 619

Julia sets, 427

Jump and link instruction, 931

Jump register instruction, 931

K

K-ring graphs, 694695

K-way multiplexers, 10191020

Kamasutra ciphers, 377

Karp, Richard, 845848

Karp’s reductions

NP-completeness, 845848

polynomial-time, 841

Kevin Bacon game, 684686

Key-sorted tree traversal, 649

Keys

BSTs, 640642, 650

cryptographic, 992

immutable, 625

Kamasutra ciphers, 377

symbol tables, 624626, 655

Key–value pairs, 624626

Kleene, Stephen, 748

Kleene’s theorem

applications, 753756

DFA, NFA, and RE equivalence, 749752

overview, 748

power limitations, 753756

proof strategy, 748

RE recognition, 753

Knuth, Donald

MIX machine, 947

optimization, 518

running time, 496, 501

SAT solvers, 832

Koch program, 397

L

Ladders, word, 710

Ladner, R., 859

Lambda calculus, 790, 794

Lambda expressions, 450

Languages. See Formal languages; Programming languages

Last-in first-out (LIFO), 566567

Lattices in random walks, 112115

Layers of abstraction, 10371039

LCS (longest common subsequence), 285288

Leading zeros, 883

Leaf nodes in BSTs, 640

Leaks, memory, 367, 581

LeapYear program, 2829

Left associativity, 17

Left shift operations

bitwise, 891892

TOY machine, 913

Left subtrees, 640

Length

arrays, 9192

graphs paths, 674, 683

strings, 332

Less than signs (<)

bitwise operations, 891892

comparisons, 2729

redirection, 140141

Let’s Make a Deal simulation, 88

Levin, Leonid, 845

Liar’s paradox, 807808

Libraries

APIs, 230232

array I/O, 237238

clients, 230

extensible, 452

Java, 1094

methods, 2932

modifying, 255

in modular programming, 227228, 251254

modules, 191

overview, 226, 230

random numbers, 232236

statistics, 244250

stress testing, 236

unit testing, 235

LIFO (last-in first-out), 566567

Lights for TOY machine, 916

Lindenmayer systems, 803

Linear algebra for vectors, 442443

Linear equation satisfiability problem, 830, 839

Linear feedback shift registers (LFSRs), 10001001

Linear inequality satisfiability problem, 831, 839

Linear interpolation, 351

Linear order of growth, 504505, 507508

Linear programming problem, 831

Linearithmic order of growth, 504505, 507508

Linked lists

circular, 622

FIFO queues, 593, 596

hash tables, 636

iterable classes, 604605

overview, 571574

stacks, 574576

summary, 578

symbol tables, 635

traversal, 574, 577

Linked structures. See Binary search trees (BSTs)

LinkedStackOfStrings program, 574576

Links in BSTs, 640642

Lipton, R. J., 856

Lissajous, Jules A., 168

Lissajous patterns, 168

Lists, linked. See Linked lists

Literals

array elements, 116

binary and hex, 891

booleans, 26

characters, 1819

description, 15

floating-point numbers, 24

integers, 22

strings, 19, 334

Little’s law, 598

Load address instruction, 1080

Load instructions, 938, 1080

LoadBalance program, 606607

Local clustering, 693694

Local variables

vs. instance variables, 384

static methods, 196

Logarithmic order of growth, 503

Logarithmic spirals, 398399

Logical design, 10081009

Logical instructions, 912913

Logical shifts, 891892

Logical switches

bus muxes, 1036

demultiplexers, 1022

multiplexers, 1020

Logo language, 400

Loitering condition, 581

Long data type, 24, 513

Long path problems, 829

Longest common subsequence (LCS), 285288

Longest path problem, 838

LongestCommonSubsequence program, 286288

Lookup program, 630632

Loops. See Conditionals and loops

Lost letter, 840

Lower bounds, 826

Luminance, 343345

Luminance program, 344345