Final Review In Text: Chapters 1-11, 13-15
Chapters Covered Before Midterm: Since Midterm: Ch. 1—Introduction Ch. 2—History Ch. 3-Syntax/Semantics Ch. 4—Names/Binding Ch. 11—OOPLs Ch. 14—Functional PLs Ch. 15—Logic PLs Since Midterm: Ch. 5—Data Types Ch. 6—Expressions Ch. 7—Control Structures Ch. 8—Subprograms Ch. 9—Activation Recs Ch. 10—ADTs Ch. 13—Exceptions Final Exam Review
What is the exam like? See midterm Exam is comprehensive, but most material will be from chapters covered since the midterm At least one Prolog question requiring you to write code Some questions similar in style to homework questions Final Exam Review
Ch. 1: Introduction Why study PLs? Language evaluation criteria Two main influences on PL design 5 paradigms Implementation strategies Final Exam Review
Ch. 2: History and Evolution What are the major contribution(s) of each language? Examples: Support for recursion Introduction of block structure First in a paradigm First formally described syntax Etc. Most important to review: FORTRAN, LISP, ALGOL Final Exam Review
Ch. 3: Syntax and Semantics BNF & EBNF What makes a grammar ambiguous? How do you disambiguate a grammar? What does it mean for two grammars to “generate the same language”? Operational semantics Axiomatic semantics Applying axiomatic semantics to code segments Loop invariants, 5 criteria Denotational semantics Final Exam Review
Ch. 4: Names and Binding What are the six attributes? What do they mean? Binding and possible binding times Type checking Two type compatibility methods Scope vs. lifetime Final Exam Review
Ch. 5: Data Types Primitive types Type constructors: Design issues Arrays Records Unions Sets Pointers Design issues Type checking issues Final Exam Review
Ch. 6: Expressions Precedence rules Associativity rules Order of operand evaluation Type conversions: widening and narrowing Type coercions vs. explicit conversions Mixed-mode expressions Relational and boolean expressions Short-circuit evaluation Final Exam Review
Ch. 7: Control Structures Design issues Selection One-way Two-way Multi-way Iteration Counter-controlled Logically-controlled Gotos Guarded statements Final Exam Review
Ch. 8: Subprograms Definitions Referencing environment What are the common parameter passing modes and mechanisms? Independent vs. separate compilation Advanced subprogram issues Final Exam Review
Ch. 9: Implementing Subprograms Activation records Accessing locals Accessing nonlocals (static scoping) Static chains Displays Implementing blocks Accessing nonlocals with dynamic scoping Final Exam Review
Ch. 10: ADTs What are the main characteristics of an ADT? What is a “cover story”? What distinguishes ADT development from OO development? Separation of interface from implementation Final Exam Review
Ch. 11: Object-Oriented PLs What are the three defining characteristics of OOP languages? What are the other hallmarks of OOP? Definition of OOP terms Familiarity with Smalltalk Design issues for OOPLs Final Exam Review
CH. 13: Exceptions Basic terms and concepts Difference between the mechanism (how it is implemented) and design guidance (how it is used) Where are handlers defined, what is their scope? How is the handler for a given exception occurrence identified? Is continuation after the exception possible? Stack unwinding Final Exam Review
Ch. 14: Functional Programming What are the hallmarks of FP? Definition of FP terms Scheme syntax You’ll have to write a Scheme function Final Exam Review
Ch. 15: Logic Programming What are the hallmarks of LP? Definition of LP terms Prolog syntax You should be able to read Prolog code Final Exam Review