Final Exam Study Guide
CS 558 Final Exam Study Guide
CS 558 Final Exam Study Guide
- Exceptions
- Three uses of exeptions
- implementation design choices
- implementing exception handlers
- differences in excpetion mechanisms in functional and imperative languages.
- Type Systemds
- Type checking
- Polymorphism
- Parametric polymorhism (aka generics)
- Ad hoc polymorphism (overloading, Haskell classes)
- uses of polymorphism
- compilation models for polymorhism.
- The role of boxing
- Type inference
- The role of unification
- Polymorphic types and fresh instances
- Typing judgements
- Relationship to observational semantics
- Viewing them as a program
- User defined types
- Abstract Datatypes
- The axiomatic approach to ADT semantics
- Observational equivalence
- Interface v.s. implementation
- When does abstraction lead to inefficiencies?
- Algebraic Datatypes
- Types are characterized by the operations they respond to.
What are the three kinds of operations on Algebraic data types?
- Module Systems
- Roles of modules systems
- O'Caml style modules (Parameterized modules)
- Modules in other languages
- Dependencies and exports
- Object Oriented Languages
- What makes a language object oriented?
- What kind of abstraction are objects?
- What are the uses of inheritance?
- What is a class? Which languages are classe based?
- How do OO-languages use dynamic binding?
- What is the role of closures in OO-languages
- What is overriding? How does it relate to inheritance?
- Garbage Collection
- Reference counting systems
- Mark and sweep
- Stop and copy
- Compacting
- Two space collectors
- Generational colectors
- GC components
- heap
- roots
- liveness analysis
- Comparing advantages and disadvantages
- Analysis of asymptotic behavior
- Overheads
- Mutation patterns that cause bad behavior
- System features that forbid certain kinds of systems