CSE 130: Principles of Programming Languages
The following is a summary in outline form, of topics in CSE 130 as taught
Winter 2004. It is intended to help students review for the final exam, but
please do not think that only topics listed here can appear on the exam, or
that the emphasis given to topics here corresponds to their probability of
being on the exam.
- Interpreter vs. compiler vs. meaning. Features and their uses. The
notion of language paradigm. Abstraction.
- Paradigmatic vs. syntagmatic and the social use of programming and
- History means evolution: emphasis on why, not when or who. Constant rise
- BNF, EBNF, CFG, abstract syntax, regular expressions.
- Parsing and ambiguity. Terminator vs. separator.
- Structured Programming:
- Assignment is the essence of the imperative paradigm. L-value and
- Control flow. Structured vs. goto.
- Loops, pre and post conditions, invariants, proofs of correctness, proof
- Data Representation:
- Basic datatypes, coercion; arrays, records, sets.
- Layout vs. allocation. Union types, variant types.
- Early vs. late binding; static vs. dynamic binding. Visibility.
- Type expression. Type checking. Type equivalence.
- Pointers, garbage, dereference, dangling, proxy, storage leaks.
- The call-by's, in/out. Static vs. dynamic scope. Nested scopes.
- Activation records.
- Procedure vs. class vs. module vs. macro.
- Interface. Information hiding. Data invariant.
- Functional Programming:
- Type constructors and expressions.
- Innermost vs. outermost evaluation.
- Function declarations, recursion. Cases and patterns. Functions on
- Higher order functions, parametric polymorphism.
- Datatype declarations with cases, and function definitions over them.
- Logic programming:
- Relation, Horn clause, term.
- Queries, goals, subgoals. Unification and substitution.
- Search trees: depth first backtrack search.
- Negation as failure. Cut. Lists and open lists.
To CSE 130 homepage
Maintained by Joseph Goguen
© 2000 - 2004 Joseph Goguen
Last modified: Fri Mar 12 16:31:08 PST 2004