COMP 144 Programming Language Concepts
Spring 2004


Key Concepts and Terms

For the Midterm ...

Introduction
Programming Language Special Purpose Programming Language Imperative Languages
Declarative Languages Compilation Interpretation
Preprocessing Macro Library
Intermediate Code Phase of Compilation
Lexical and Syntax Analyses
Scanner Lexical Analysis Token
Regular expression Syntax Analysis Parser
Scripting/Perl
Scripting Language Scalar type Hash/Dictionary
List Context Regular Expression Matching
dynamic scope
Binding, Scope and Storage Allocation
Naming Control Abstraction Data Abstraction
Binding Binding Time Object Lifetime
Static Allocation Stack-based Allocation Heap-based Allocation
Internal Fragmentation External Fragmentation Overloading
Scope Static Scope Nested Scope
Dynamic Scope Symbol Table
Functional Programming/ML
von Neumann Style Language Functional Language Currying
Applicative Order Normal Order Eager Evaluation
Lazy Evaluation Strict Function Nonstrict Function
Derived Type Polymorphic Type Higher-Order Function
Type Variable Pattern Matching ...
Data Types
Data Type Type System Type Checking
Strongly Typed Language Statically Typed Language Weakly Typed Language
Enumeration Type Subrange Type Structural Equivalence
Nominal Equivalence Type Compatibility Type Conversion
Converting Cast Non-converting Cast Type Inference
Record Variant Record Unicode
Control Abstraction
Formal Parameter Actual Parameter Subroutine Frame
Activation Record Pass-by-value Pass-by-result
Pass-by-value-result Pass-by-reference Pass-by-name
Thunk Exception Exception Handler
Dynamic Chain Shallow Binding Deep Binding

Covered after the Midterm ...

Control Flow
Control Flow Operator Precedence
Associativity Side Effect Expression
Statement Value Model Reference Model
Orthogonality Short-circuit Evaluation Enumeration-controlled Loop
Logically-controlled Loop Iterator Nondeterminacy
Logic Programming/Prolog
Horn Clause Logic Program Resolution
Unification Database of Clauses Cut
Principle of Resolution Unification Rules Forward Chaining
Backward Chaining Infinite Regression Closed world Assumption
Relations
Data Abstraction and Object Orientation
Data Abstraction Encapsulation Attribute
Message Inheritance Polymorphism
Method Binding Module-as-type Module-as-manager
Constructor Destructor Garbage Collection
Memory Leak Dangling Reference Reference Counting
Mark-and-sweep Collection Pointer Reversal Store-and-Copy Collection
Static Method Binding Dynamic Method Binding Virtual Method Table

Some other time...

Building a Runnable Program
Front-end Back-end Control Flow Graph
Intermediate Code Generation Compilation Pass Intermediate Form
Stack-based Language Just-in-time Compiler Adaptive Compiler
Native Method Monolithic Object Representation Splitted Object Representation
Relocatable Object Code External Symbol Executable Code
Linker Dynamic Link Library
Code Optimization
Optimization Rules Local Optimization Global Optimization
Strength Reduction Common Subexpression Elimination Code Motion
Loop Unrolling Peephole Optimization Constant Folding
Constant Propagation Copy Propagation In-line Expansion
Virtual Register Value Numbering
Concurrent Programming
Concurrent Program Thread Thread Lifetime
Co-begin/Co-end Parallel Loop Data Dependency
Fork/Join Process Coroutine
Scheduler Non-preemptive Multithreading Preemptive Multithreading
Communication Synchronization Semaphore
Message Passing
Case Study: C# and .NET
.NET Common Language Run-time System Common Language Interface
Property Delegate
Semantic Analysis
Semantic Analysis Attribute Grammar Attribute Flow
Synthetic Attribute Inherited Attribute S-Attributed Grammar
Action Routine Dynamic Semantics