631 Takehome exam and final exam prep work

Takehome component

  1. For AspectJ, write an aspect that verifiers that if boolean equals(Object o) returns true, then this.hashCode() == o.hashCode(). If this is not true, the code should throw new RuntimeException("Equals/hashCode contract violated")

    The aspect should be an abstract aspect named CheckHashCode. It should have an abstract pointcut check() that will be instantiated when the aspect is overridden to indicate which classes should be instrumented.

    For example, you could define an aspect that would check the Foo and Bar classes as:

    		public aspect CheckFooAndBar extends CheckHashCode {
    		    pointcut check():
    			(within(Foo) || within(Bar));
  2. Give a CTL formula that checks whenever Req becomes true, then eventually On is true and stays true until End becomes true. (Details: there must be a state in which both On is true and End is true before On is allowed to be false).

Material for Saturday, 10:30am

  1. Conversion from and to SSA form
  2. How the Cheney garbage collector works.
  3. Factors effecting performance of garbage collectors, and different aspects of garbage collector performance.
  4. CTL Model checking
  5. CHA (Class hierarchy analysis) and RTA (Rapid type analysis)
  6. Applying Points-to analysis (three approaches): Steensgaard, Andersen, Das
  7. Applying techniques of "Is it a Tree, a DAG, or a Cyclic Graph?" paper