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.