SI304 Programming Languages

Course Syllabus

Spring 1999

Wk

Date

Topics/Events      prob1.cpp, prob1.txt, prob2.txt

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, Ada's BNF notation, EBNF notation Syntax Graphs, recursive descent parsing, Sections 3.5-3.6. Attribute grammars, operational semantics, axiomatic semantics, postconditions, preconditions, weakest preconditions, a predicate transformer for assignment, applying axiomatic semantics to sequences

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 Ada, heap memory allocation, anonymous variables, dangling pointers, dangling objects. Programming project -> Ada95's variant records.

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.