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