Unit 5 Study Guide
- Understand what names and variables are in the context of programming languages, and explain the difference between the two.
 - Recognize the conventions governing naming in programming languages.
 - State the difference between keywords and reserved words.
 - List and briefly define the six attributes of a variable.
 - Distinguish between l-value and r-value uses of a variable.
 - Explain the basic concept of a binding and explain why binding times are relevant to variables. Give examples of important bindings and binding times.
 - Distinguish between static and dynamic bindings.
 - Distinguish between static and dynamic typing, and explain their relative advantages and disadvantages. Give examples of languages in either category.
 - Explain what memory allocation is and how it relates to a variable's lifetime.
 - Distinguish the four variable lifetime categories: static, stack-dynamic, explicit heap-dynamic, and implicit heap-dynamic. Give examples of variables with each of the four variable lifetime categories.
 - Describe the regions where memory is allocated for each of the four variable lifetime categories.
 - Explain the difference between static and dynamic scoping, and how these concepts relate to syntactic blocks and runtime call stacks.
 - Define a statement's referencing environment.
 - Explain the utility and advantages of named constants.