
Midterm
Exam Review
Programming Language
Concepts
ICSS 4003-450
Fall Quarter 20062
Programming Language Pragmatics 2nd/Edition, Michael
Scott
Chapter 1: Foundations
Chapter 2: Programming Language Syntax
Chapter 3: Names, Scopes, & Bindings
Major Topics
Programming Language Spectrum
Compilation and Interpretation
Lexical
and Syntax Analysis
BNF /
Context Free Grammars
Names,
Scope & Bindings
Evaluation
Recursion
Lists
Control
Functions
Things to Know
What is the unique importance of Fortran I in the history
of programming languages?
Understand the fundamental differences between the major
classifications of languages.
Understand
the compilation process and how it differs from interpretation.
Know how tokens in any language can be specified.
Understand how scanners extract tokens using regular
expressions.
Understand
how parsers use a context free grammar to construct parse trees.
Know
the abstractions in a context free grammar
rules
/ productions
nonterminal symbols, nonterminals, terminal symbols,
terminals
derivation, sentential form, yield
Understand how the syntax of a language is derived using a
context free grammar.
Be
able to recognize ambiguous grammars.
Be able to generate parse trees from a grammar.
Be able to verify the legality of a syntax against a
corresponding grammar.
·
Scheme
Be able to read Scheme code and
determine its output. A language
reference will be provided, if needed, for most operators outside of the
basics.
Basic operators include:
all math operations,
car,
cons,
cdr,
define,
cond,
if,
append,
list,
null?
Understand how cons is used
to build lists.
Be able to trace and/or write a
simple recursive function.
Understand the notion of lambda
functions.
·
Names, Scopes and Bindings
Understand the six major
attributes of a variable.
Know the difference between an L-value
and an R-value.
Understand the differences
between the distinct binding times for a variable.
Static vs. Dynamic binding.
Explicit vs. Implicit type
declaration.
Dynamic type binding.
Understand the concept of storage
binding and lifetimes for variables.
Static Variables vs. Stack
Variables vs Heap Variables.
Understand the concept of type
checking, coercion and type errors.
Static vs. Dynamic scoping.