Study guide for the Programming Languages Comprehensive Examination
Topics
- Programming paradigms
- Imperative
- Functional: higher-order functions
- Logic: resolution, unification
- Object-oriented programming: inheritance, subtyping
- Language syntax
- Meta language, object language
- Regular expressions
- Context free grammars and Backus-Naur form
- Parse trees, abstract syntax trees, syntax graphs
- Ambiguous grammars
- Parsing, recursive descent parsing
- [Attribute grammars, deprecated]
- Basic semantics
- Attributes, binding, and semantic functions
- Declarations, blocks, and scope
- Allocation, extent, and the environment
- Problems with aliasing and pointers
- Types
- integers, floating point, IEEE 754, records, etc
- type insecurities, type checking, type inference
- type equivalence
- abstract data types and modularity
- Polymorphism
- ad hoc: overloading, implicit coercion
- universal: parametric, subtype
- Control
- loops
- procedures and parameters
- procedure closures, non-local variable access
- exception handling
- Semantics: operational, denotational, axiomatic (only superficial knowledge)
Pay special attention to the two other paradigms: functional programming (especially ML) and logic programming (PROLOG). The chapter each in Sebesta is not enough.
References
The primary references are:
- Robert W. Sebesta.Concepts of Programming Languages, fifth edition.
Reading, Massachusetts: Addison-Wesley, 2002. ISBN: 0-201-75295-6.All chapters, except Chapter 11: Concurrency.
- Webber, Adam Brooks. Modern Programming Languages: A Practical Introduction.
Franklin, Beedle & Associates, 2003. ISBN: 1-887902-76-7 - Mitchell, John Clifford. Concepts of Programming Languages Introduction.
Cambridge, England: Cambridge University Press, 2003. ISBN: 0-521-78098-5
Other roughly equivalent textbooks exist:
- Louden. Programming Languages, Principles and Practice
- Scott. Programming Language Pragmatics
- Sethi. Programming Languages, Concepts and Constructs
- MacClennan. Principles of Programming Languages