|
|
| Become familiar with declarative and imperative paradigms, and be able to classify most popular languages according to the applicable paradigm. Cite reasons for studying comparative programming languages. |
|
| Describe the history of the development of one programming language. |
| Trace the ancestry of currently used languages. Recognize the features contributed to current languages by older languages and become familiar with the developers of significant languages and paradigms. |
| Use and create BNF grammars and syntax diagrams to generate and recognize language constructs. Draw parse trees for expressions and statements to assure syntax correctness. |
| Produce BNF grammars for expressions showing associativity and precedence, drawing of parse trees given grammars. |
| Define tools for describing semantics: operational, axiomatic and denotational. Find weakest precondition for assignment statements, logical pretest loops through use of loop invariant. |
| Finding of weakest precondition, loop invariant |
Discuss fundamental semantic issues of variables,
and binding times
stack-dynamic variables explicit heap-dynamic variables implicit heap-dynamic variables Strong-typing Declarations elaboration
|
pointer variables issues
deallocation dangling pointers dangling references tombstones garbage collection |
| See exam #1 and exam #2 review for specifics. |
| Characteristics and implementation issues
surrounding user-defined types, arrays, records, etc.
array component selection mechanisms variant records |
| Precedence, evaluation order, associativty,
complex assignment statements(multiple target, multiple targets, conditional
targets),
short circuit evaluation |
| Basic characteristics of Prolog -- list structures, rules, facts, goals, resolution, list structures, and cut Cite applications for Prolog. |
| Introduction to pure LISP, function evaluation,
s-expressions, car, cdr, cons. Function defintion with cond and recursion
as control mechanism
Function form Lambda binding |
| Discussion of control mechanisms for selection
and repetition. Including implementation issues.
Distinction between procedures and functions, flat files, parameter passing techniques--call be reference, call by value, call by value result, and call by name. |
| "GOTO Considered Harmful" from CACM, Sebesta Ch. 8 |
| Discussion of activation records. How storage allocation differs between single activiation records and multiple ar's. |
Elements of Object-oriented languages.
class, method, message, object |
Characteristics of Concurrency.
SIMD MIMD recursion shared memory versus non-communicating cooperation vs. competition semaphore, monitor Java thread example use |
Discussion of built in features for exception handling.
languages which support try .. catch in C++ and Java |