CSE 222 Midterm Review
The following is a list of the topics you should know and the tasks
you should be able to perform for the midterm.
-
You should have read carefully, and should understand, the code that was
provided for you in the main program skeletons for the labs and closed
labs. For example, you should understand how to read data from stdin and/or
files into your program, and how to write data to stdout and/or
files.
- You should be able to write a body for, and trace over a call to, an operation,
given its formal interface contract specification.
-
You should know what templates are, and why and how they are used for generalization and decoupling.
- You should know what the checks relation means.
-
You should know what the extends relation means, and you should
know how to implement a layered operation in an extension to a concrete
kernel component.
-
You should understand what utility classes are and why we use them.
-
You should know two different ways of tracing and reasoning about the behavior
of recursive operations.
-
Tracing using the specification.
-
Tracing into recursive calls using multiple tracing tables.
-
You should understand the mathematical models of, and be able to reason
about when and how to use, the following software components.
-
In addition to the component relations checks and extends that you are already familiar with from CSE 221, you
should know what implements, encapsulates, and uses mean. Given
code involving these relations, you should be able to draw the CCD.
-
You should understand the terms convention and correspondence
and the information they convey to a kernel component implementer.
-
You should understand how an instance of the Representation
template is used to hold a data representation in a kernel component implementation, and how its fields are accessed in the code.