|
SI304 Programming Languages |
||
|
Course Syllabus |
||
|
Spring 1999 |
||
|
Wk |
Date |
|
|
1 |
7 Jan |
Seb Ch1, course policy/introduction, language evaluation criteria, von neumann architecture, the compilation/interpretation process. |
|
2 |
12 Jan |
Seb Ch2, Plankalkul, Fortran, LISP, ALGOL, COBOL, PL/I, Simula, Prolog, Ada, C++, Java. Ethics: international software ownership. |
|
3 |
19 Jan |
Seb Ch3, Sections 3.1-3.4. Language definitions, language syntax, language recognition/generation, Chomsky hierarchy, Context-Free Grammars (CFGs). A Backus-Naur Form (BNF) grammar example: Leftmost/rightmost derivation Parse trees, Ambiguous grammars, Unambiguous grammars |
|
4 |
26 Jan |
Proving a grammar to be ambiguous, |
|
5 |
2 Feb |
Applying axiomatic semantics to loops, loop invariant, denotational semantics, example: recursive source code modeling a CFG, CFG development. Seb Ch4, names, keywords, reserved words. Sextuple of attributes for variables, binding variables and memory locations, binding operations and symbols, Type binding: static, dynamic. ML -> type inference, storage bindings (static). |
|
6 |
9 Feb |
Storage bindings - (stack dynamic, explicit heap-dynamic, implicit heap dynamic); strongly typed languages. Type compatibility (Name/Structure), Scoping Static/Dynamic). 6-week exam review, Intro to the Object Ada compiler. 6-week exam: X-period, 12 Feb |
|
7 |
16 Feb |
de-brief 6-week exam, Seb Ch5&6 Introduction to strong typing in Ada95 Programming project-> strong typing in Ada95, implicit/explicit coercion. |
|
8 |
23 Feb |
Primitive datatypes; integer; Cobol-decimal; IEEE 754 floating point format; Ada's digits/deltas; Strings, Limited Dynamic length strings in C++, Dynamic length strings in Snobol. |
|
9 |
2 Mar |
Weak-typing: free unions in C++, Programming project -> free unions in C++, Subranges, static arrays, fixed stack dynamic arrays, stack-dynamic, heap-dynamic arrays. |
|
10 |
9 Mar |
***** Spring Break ***** |
|
11 |
16 Mar |
Subranges, static arrays, fixed stack dynamic arrays, stack-dynamic,
heap-dynamic arrays. Strong-typing: discriminated unions in |
|
12 |
23 Mar |
Heap management: reference counters, garbage collection. Seb Ch8. Process abstraction vs. data abstraction, object-oriented programming and design. Fundamental characteristics of subprograms, formal parameters vs. actual parameters, bindings (position, default, and keyword), functional side effects, design issues for subprograms). 12-exam review. |
|
13 |
30 Mar |
12-week exam: X-Period, 29 March. 12-week exam de-brief. Static vs. Stack Dynamic binding with regard to subprograms, parameter passing: semantic models (in, out, in out); implementation models (pass by value, pass by result, pass by value-result.). Parameter passing implementation models: pass by reference, pass by name (ALGOL 60). Parameters that are subprogram names. |
|
14 |
6 Apr |
Shallow binding, deep binding, accessing non-local environments. Seb Ch9. Semantics of subprogram calls/returns activation records => procedures/functions, stacks of activation records for recursive function calls. Activation record stack for nested subprograms, accessing nonlocal variables in a statically scoped language via static chains and displays. Nonlocal access via static chains:chain offsets, local offsets. |
|
15 |
13 Apr |
Nonlocal access via display method: display offset, local offset. Comparing static chains and displays. Accessing nonlocals in dynamically scoped languages using deep access. Accessing nonlocals in dynamically scoped languages using shallow access. Seb Ch12. Concurrent programming issues, data structures and algorithms: Coroutines, concurrency, semaphores, monitors, Ada95 tasks, Java threads. Programming Project -> Java threads. Seb 13, Exception Handling, Ada95, C++, Java. |
|
16 |
20 Apr |
Seb Ch 14&15, Logic Programming, predicate calculus, propositions, clausal form, forward/backward chaining. Functional programming, LISP. |
|
17 |
27 Apr |
Last class day. Course review, SOFs |
Final Exam, Time/Date: TBA, Location: TBA
Seb = Concepts of Programming Languages, 4th ed., Robert W. Sebesta, Addison-Wesley Publishing Company, Inc., 1999.