Unit 8 Study Guide
- Explain the concept of a data type and why they are useful.
- Explain the differences between primitive, user-defined, structured,
and ordinal data types.
- Explain what a variable descriptor is and what it contains.
- List and describe standard numeric types such as integer, float,
double, complex, and decimal.
- List and describe various ordinal types including Boolean, character,
enumeration, and subrange types.
- Explain design issues for floating-point numbers.
- Explain design issues for strings and compare various implementation
alternatives.
- Explain array types and the various ways arrays are implemented.
- List and explain array operations.
- Calculate byte offsets from array base address, dimensions, and element
width.
- Explain the differences between tuple and list types.
- Explain what associative arrays are and how they are implemented.
- Explain what records are and how they are implemented.
- Explain what union types are, how they are implemented, and how issues
of type safety can be resolved.
- Explain what pointer and reference types are and how they differ.
- Explain pointer operations and issues (dangling pointers, memory leaks)
that arise with the use of pointers.
- Explain the reference count and mark-and-sweep methods of garbage
collection.
- Explain what type checking is and why it is important.
- Define type systems, type compatibility, type errors, and type
conversions.
- Contrast explicit and implicit typing, give examples of languages that
use each, and explain the tradeoffs involved.
- Contrast strong typing and weak typing, give examples of languages that
use each, and explain the tradeoffs involved.
- Contrast static type checking and dynamic type checking, give examples
of languages that use each, and explain the tradeoffs involved.
- Explain why type equivalence is important and compare name equivalence
and structure equivalence, giving examples to illustrate each one.