CS 394P: Automatic Programming: Lecture Notes


Copyright © 2005 by Gordon S. Novak Jr.

Permission is granted for individuals to make copies of these notes for personal use, or for instructors to make copies for classroom use.

Note: Many of these pages use math symbols such as: &forall &exist . Microsoft Internet Explorer will not display the math symbols, but Netscape or Mozilla will.

a 164

abstract syntax tree 10

abstract type 174

abstraction 225, 226

alist 12

amphion 246

antisymmetric 57

aop 157

application generator 232

apply 123, 124

aps 203, 204, 205

arity 218

aspect weaving 158

aspect-oriented programming 157

assoc 12

association list 12

ast 10

astronomical software 246

automatic programming 2

automatic programming server 203

available 66

available on entry 66

babbage 79

back edge 61

basic block 55

basic type 160

basis variable 174, 190, 195

behavior 114

bhansali 258

binding 12

binding list 12

binding time analysis 96

binding time separation 101

bit vector 59

block 55

boolean equations 66

busy 70

cache 154

cad 258

cartesian product 57

cast 218

class 114, 118, 131, 132

clos 113, 129

closed function 87

code expansion 83, 83

code motion 75

coercion 113

cognitive distance 222, 227

color 72

compile-time 85

compiler generator 97

component 206, 211

component instance 213

component specification 213, 214

components 208, 210

composite type 160

composition 206, 246

computed 64

confluence 40

cons 125

constant folding 26

constraint 215, 260

context 31

control flow analysis 54

correctness 30, 50

cpr 29

cross-cutting 157

data conversion 187

data flow analysis 54, 65

data translation 196

dead 70

dead code 80

deduction 246

def-use chain 71

defined 64

definition-use chain 71

degree of freedom 259

dependency graph 193

derivative 80

difference engine 79

dominator 61

dot matching 23

dynamic 96

dynamic data 90

dynamic type checking 110, 112

efficiency 89, 154, 154

elaboration 265

embedded language 122

encapsulation 117

equal 20

equation 190

equation solving 191

equations 189

equivalence 57

eval 13, 122, 124

evaluation 13, 122

field 161

find-update 208

finite differencing 78

fixed point 17

for loop 165

funcall 123, 124, 125, 218

futamura projections 97

generating extension 98

generic components 208, 210

generic function 113

generic procedure 169

geometry 258

glisp 159

glispobjects 162

global optimization 51, 73

global search 243

glue code 208

goguen 244

gps 206

graph 57

graph coloring 71, 72

graphical programming 197, 206

heuristic 72

hiding 116

hierarchy 114

in-line 154

independence 174

induction variable 77

inference 215

information hiding 116

inheritance 114, 166

inline function 87

inlining 87

instance 114, 118, 133

integration 225

interface 116, 213

interpretation 89, 91

interpreter 89, 105

interval 62, 67

invariant code 75

isomorphism 172

iterate-accumulate 208

join point 158

just in time 154

kids 240

killed 64

knowledge-based strategy 4

knuth-bendix 40

krueger 222

kwote 25

lambda-expression 126

language translation 38, 202

leader 56

leverage 49

lisp 10

live 70

local optimization 51

loop header 61

loop transformation 75

loop unrolling 85

macro 84

match 21

matrix 76, 103

mcilroy 224

memoization 82

message 115, 119, 120, 140, 147

message list 163

method 118, 137, 146

method lookup 121, 139

mix 92, 97

mkv 183, 184, 189

modulo unrolling 85

multi-processor 76

obfuscation 15

object 118

object creation 164

object-oriented programming 114

offline 96

online 96

oop 107, 109, 114, 130

oops 143

open function 87

operator overloading 167

optimization 34, 49

overloading 167

partial evaluation 26, 88, 90, 105, 108, 154, 218

partial order 57

partition 57

pattern matching 11, 17, 18, 19

performance 76, 89

plan elaboration 265

plan fragment 261

polymorphic function 113

power-based strategy 4

program analysis 54

propagation 215

property 217

property list 127, 128

prove 50

ptmatch 27

queens 242

recursive expansion 168

reduction in strength 53

reference 161

referenced 64

refine 237

refinement 239

reflexive 57

register allocation 71, 72

relation 57

reuse 222

rewrite rule 11, 22, 24

rewriting program 16

scavenging 229

selection 225

selector 119, 139

self 154

send 115, 120, 140, 147

set 81

set of support 256

side effects 32

simplification 218

simula 114

simulation 114

slot 145

smalltalk 148

snark 248

software reuse 222

software schemas 231

space 49

specialization 35, 90, 98, 106, 225

specialize 154

speedup 76

spill code 72

static 96

static data 90

static type checking 110, 111

storage property 174

store 195

strength reduction 53

strip mining 76

structure description 160

subgraph 62

sublis 13, 14

sublisq 25

subst 13, 14

substitution 13

substitution test 209

substructure 161

super 118

superclass 118

symmetric 57

table lookup 154

termination 40

theorem proving 254

theory 244

thinglab 150

time 49

trans 28

transf 22, 25

transform 75

transformation 11, 15, 17, 22, 25, 234

transitive 57

type checking 110

type coercion 113

type propagation 216

typeof 167

unroll 218

unrolling 85

used 64

v 237

very-high-level language 233

view 171, 171, 174, 175, 180, 181, 183, 211, 245

viewas 181

vip 197

wrapper 171


CS 394P