Tuesday, February 21, 2006

Syllabus - work in progress

Work in progress - to be refined, added to, etc.

  1. Preliminaries
    1. why study programming languages, programming domains, criteria to evaluate languages, influences on language design, language categories, design trade-off.
  2. Some History
    1. pseudocodes, FORTRAN, ALGOL. discuss other languages later, as they come up.
  3. Syntax
    1. describing syntax, lexemes, tokens, language recognizers and generators, BNF and CFGs, EBNF, parse trees, ambiguity, precedence, associativity, regular expressions, FSA, NFSAs, PDAs.
    2. Lexical analysis, parsing, lex and yacc.
  4. Names, Bindings, Type Checking, Scopes, Lifetime. static and dynamic
  5. Data Types
    1. Primitives, strings, user-defined ordinals, arrays, associative arrays, records, unions, sets, pointers. Also, some discussion of ALGOL
  6. Expressions and Assignment statements
    1. arithmetics expressions, overloaded operators, type conversions, relational/boolean expressions, short circuit evaluation, assignment statements, mixed-mode assignment. More ALGOL.
  7. Control Structures
    1. compound statements, selection statements, iterative statements, unconditional branching, guarded commands
  8. Subprograms
    1. design issues, local referencing environments, parameter passing methods, overloaded subprograms, generic subprograms, separate and independent compilation, design issues for functions, accessing nonlocal environments, user-defined overloaded operators, coroutines.
  9. Implementing subprograms
    1. General semantics of calls and returns, implementing: FORTRAN subprograms, ALGOL subprograms, blocks, dynamic scoping, parameters that are subprogram names.
  10. Encapsulation, OOP - we will probably skip since we already know this fairly well.
  11. Concurrency - perhaps
  12. Exception handling - perhaps if have time at the end, since will cover this elsewhere
    1. in PL/I, in Ada, in C++, in Java
  13. Functional Programming - we will do LISP
    1. Mathematical functions, fundamentals of functional programming langs, LISP, Scheme, Common LISP, ML, Haskell, Applications of, comparison between functional and imperative languages
  14. Logic Programming Languages - Prolog
    1. Predicate Calculus, Proving Theorems, Logic Programming, Intro to Prolog, applications of

No comments: